Jumper T-Pro

PigTail

Наверное это MDL button на картинке в англоязычном, т.е верхняя из трех на левом роге/ручке корпуса

mao555

Спасибо! Но при нажатии на кнопку MDL появляется окно 1/7 , а не 1/13, как написано в описании. Может быть это из-за старой прошивки, которая стоит в пульте, если да, то как перепрошить? Пульт JP4IN1. Надо ли сначала ставить прошивку OpenTX, а потом JP4IN1 или только последнюю. По описанию не совсем понятно, а экспериментировать страшно, боюсь превратится в “кирпич”. Извините за глупые вопросы: я-пенсионер, а внук-пионер.

supermario

У меня на похожем радио (танго2) длинное нажатие переводит в меню настройки передатчика, а короткое нажатие - в меню opentx

mao555

Спасибо! Работает как вы написали. Теперь пытаюсь разобраться с прошивками. Вопрос: при экспериментах с прошивками могу ли я “убить” пульт или перепрошивкой всегда его можно будет восстановить?

r1000

Пульт убить нельзя никак настроцками/прошивками. Основной контролоер имеет встроенный нестираемый загрузчик (зажимаете кнопочку мелкую у антенны и подключаете юсб - должен определиться как stm32 dfu), с модулем елрс аналогично (шить в режиме edge passtrough, все время держа зажатой кнопочку внутри корпуса на радиомодуле, эдж/опентх запущена, соединение usb-cdc)

Гена_Большой

в STM32 стереть можно все.
у них нет никакой специальной памяти,
все в общей, включая все настройки тактирования и прочего.
одна ошибка в коде и процессор становится кирпичом, но справедливости ради, раскирпичивание STM в разы проще чем Атмег

mao555
Гена_Большой:

в STM32 стереть можно все

У меня пульт JP4IN1 и я боюсь превратиться в тыкву, кирпич и т.п. Как я понимаю, в пульте установлена прошивка OpenTX, которая управляет моделями и внутренний радио модуль 4в1, который выдает радио сигналы в соответствии с нужным протоколом. Если да, то какую прошивку ставить первой и где посмотреть номер версии мультипротокольной прошивки.

supermario

Если всё работает то не надо ничего обновлять. Идите летать 😄

r1000

Вы, Геннадий, хоть раз заглядывали в референс мануалы на стм32? Не нужно тут писать чушь и пугать людей. Загрузчик стм32 не стираем, так как находится в постоянной, не стираемой, области памяти. Так же как и серийный номер контроллера, и еще некоторая информация. Что касается тактирования, то стм32 всегда стартует в использованием внутреннего генератора, а настройка внешнего тактирования, делителей и множителей, осуществляется кодом пользователя. Неправильные настроцки тактирования могут вызвать зависания, но все это лечится загрузчиком и новой заливкой (хотя в случае разработки, используют swd интерфейс)

mao555
supermario:

Если всё работает то не надо ничего обновлять. Идите летать 😄

Так и сделаю. Всем спасибо и с Новым Годом!

r1000

Окей, можно тогда ссылку на рефман, статейку или еще что-нибудь, как убить бутлоадер? Вариант выставлять СС не предлагать - с ними он не убъет прошивку

r1000

Да, в сообшении #82, на мой текст о том что бутлоалер стереть нельзя, вы ответили, что стереть можно все. Еще и про тактирование зачем то добавили, как будто это какие-то особые опциональные биты, а не часть кода приложения.

Гена_Большой

есть бутлоадер не стираемый, есть бутлоадер пользовательский тот, который например умеет загружать прошивку с Флэшки,
или Вы хотите сказать, что у Вас “вшитый” грузит прошивку аппаратуры?
но даже первый, при большом желании можно затереть, а второй затереть значительно проще.
А еще проще сломать его работу.

если повредить данные в области памяти, содержащей данные для тактирования,
Ваш, пользовательский загрузчик просто перестанет работать, до полной очистки камня и повторной прошивки пользовательского загрузчика.

то же самое касается прошивки через StLink
вот кусок кода , генерируемый CubeIDE для F401

/** Initializes the RCC Oscillators according to the specified parameters

  • in the RCC_OscInitTypeDef structure.
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLM = 25;
    RCC_OscInitStruct.PLL.PLLN = 168;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = 4;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }

/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}

а вот тот же кусок кода сгенерированный тем же CubeIDE для того же камня, но при этом частота внешнего кварца выбрана не правильно,
или как вариант, какая то программа записала в эту область не правильные данные.

/** Initializes the RCC Oscillators according to the specified parameters

  • in the RCC_OscInitTypeDef structure.
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLM = 2;
    RCC_OscInitStruct.PLL.PLLN = 84;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = 4;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }

/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}

так вот, после загрузки и запуска второго варианта, камень перестанет отвечать на любые запросы CubeIDE до полного его стирания.
так же и Ваш, пользовательский загрузчик станет стартовать с неправильными данными тактирования и просто не будет работать, как только переключит тактирования на внешний кварц.

Но на само деле, это все к делу не относится.

r1000
Гена_Большой:

если повредить данные в области памяти, содержащей данные для тактирования,
Ваш, пользовательский загрузчик просто перестанет работать, до полной очистки камня и повторной прошивки пользовательского загрузчика.

Все правильно, но прошивка на аппаратуры накатывается двумя способами:

  1. С использованием загрузчика OpenTX/EdgeTX (пользовательского, который тоже можно затереть) с sd-карты
  2. С использованием buddy.edgetx.org , который работает через STM32 DFU, то есть нестираемый загрузчик. Если предположить, что с использованием первого или второго способа, была затерта часть прошивки (загрузчик OpenTx/EdgeTX) перестал стартовать или после передачи управления самой ОС, происходит что-то страшное, любую аппаратуру можно вернуть к жизни, в большинстве случаев без танцев с бубном:
  3. Подключаем в выключенном состоянии и прошиваем с помощью buddy.edgetx.org или STM32 Cube Programmer
  4. Если это аппаратура T-Pro, то подключаем в выключенном состоянии, предварительно зажав кнопку boot сверху у антенны и производим действия из пункта 1.
  5. Если это BetaFPV LiteRadio 3 Pro - материмся на производителя и ищем SWD, потому что они не сделали развязки питания таким образом, чтобы без нажатой кнопки Pwr или сигнала Pwr с ноги проца, контакт бут подтягивался бы к режиму загрузчика Stm32
Гена_Большой

Роман, я же написал, что

Гена_Большой:

но справедливости ради, раскирпичивание STM в разы проще чем Атмег

если у Атмеги фюзы “слетают”, какое счастье, что это явление редкое, то без паялинга, чаще всего, никак не обойтись )

Гена_Большой

а в Джампере на основной плате есть St Link, т.е. там не проcто USB ?
почему спрашиваю ? Некоторые из вышеперечисленных операция просто не реально выполнить при отсутствии St Link.

r1000

Геннадий, вы издеваетесь? Какие операции нереально выполнить, при отсутствии Ст-линка? Нет, в т-про нет его, но что вы собираетесь выполнять с его помощью? Стирать страницы памяти? Легко, зажав кнопочку Бут подключаете в выключенном состоянии к компьютеру и запускаете Stm32 Cube Programmer - с помощью USB DFU (из встроенного загрузчика) - вы можете вычитать флэш, стереть частично или полностью. Можно накатить любую прошивку. Можно ли менять опциональные биты - не в курсе, никогда не пробовал

Гена_Большой

с этой программой дел никогда не имел, посмотрю на досуге.

r1000:

Stm32 Cube Programmer