Jumper T-Pro
Случайно нашел в меню включить внутренний передатчик
не подскажите где Вы нашли данную функцию?)
Настройка модели 2 экран “setup”, -> “internal RF” -> mode CRSF (для встроенного elrs).
Подскажите где находится кнопка SYS, на которую ссылается описание T-PRO.
Наверное это MDL button на картинке в англоязычном, т.е верхняя из трех на левом роге/ручке корпуса
Спасибо! Но при нажатии на кнопку MDL появляется окно 1/7 , а не 1/13, как написано в описании. Может быть это из-за старой прошивки, которая стоит в пульте, если да, то как перепрошить? Пульт JP4IN1. Надо ли сначала ставить прошивку OpenTX, а потом JP4IN1 или только последнюю. По описанию не совсем понятно, а экспериментировать страшно, боюсь превратится в “кирпич”. Извините за глупые вопросы: я-пенсионер, а внук-пионер.
У меня на похожем радио (танго2) длинное нажатие переводит в меню настройки передатчика, а короткое нажатие - в меню opentx
Спасибо! Работает как вы написали. Теперь пытаюсь разобраться с прошивками. Вопрос: при экспериментах с прошивками могу ли я “убить” пульт или перепрошивкой всегда его можно будет восстановить?
Пульт убить нельзя никак настроцками/прошивками. Основной контролоер имеет встроенный нестираемый загрузчик (зажимаете кнопочку мелкую у антенны и подключаете юсб - должен определиться как stm32 dfu), с модулем елрс аналогично (шить в режиме edge passtrough, все время держа зажатой кнопочку внутри корпуса на радиомодуле, эдж/опентх запущена, соединение usb-cdc)
в STM32 стереть можно все.
у них нет никакой специальной памяти,
все в общей, включая все настройки тактирования и прочего.
одна ошибка в коде и процессор становится кирпичом, но справедливости ради, раскирпичивание STM в разы проще чем Атмег
в STM32 стереть можно все
У меня пульт JP4IN1 и я боюсь превратиться в тыкву, кирпич и т.п. Как я понимаю, в пульте установлена прошивка OpenTX, которая управляет моделями и внутренний радио модуль 4в1, который выдает радио сигналы в соответствии с нужным протоколом. Если да, то какую прошивку ставить первой и где посмотреть номер версии мультипротокольной прошивки.
Если всё работает то не надо ничего обновлять. Идите летать 😄
Вы, Геннадий, хоть раз заглядывали в референс мануалы на стм32? Не нужно тут писать чушь и пугать людей. Загрузчик стм32 не стираем, так как находится в постоянной, не стираемой, области памяти. Так же как и серийный номер контроллера, и еще некоторая информация. Что касается тактирования, то стм32 всегда стартует в использованием внутреннего генератора, а настройка внешнего тактирования, делителей и множителей, осуществляется кодом пользователя. Неправильные настроцки тактирования могут вызвать зависания, но все это лечится загрузчиком и новой заливкой (хотя в случае разработки, используют swd интерфейс)
я пишу софт для STM32
Если всё работает то не надо ничего обновлять. Идите летать 😄
Так и сделаю. Всем спасибо и с Новым Годом!
Окей, можно тогда ссылку на рефман, статейку или еще что-нибудь, как убить бутлоадер? Вариант выставлять СС не предлагать - с ними он не убъет прошивку
я где то писал про бутлоадер ?
Да, в сообшении #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 до полного его стирания.
так же и Ваш, пользовательский загрузчик станет стартовать с неправильными данными тактирования и просто не будет работать, как только переключит тактирования на внешний кварц.
Но на само деле, это все к делу не относится.
если повредить данные в области памяти, содержащей данные для тактирования,
Ваш, пользовательский загрузчик просто перестанет работать, до полной очистки камня и повторной прошивки пользовательского загрузчика.
Все правильно, но прошивка на аппаратуры накатывается двумя способами:
- С использованием загрузчика OpenTX/EdgeTX (пользовательского, который тоже можно затереть) с sd-карты
- С использованием buddy.edgetx.org , который работает через STM32 DFU, то есть нестираемый загрузчик. Если предположить, что с использованием первого или второго способа, была затерта часть прошивки (загрузчик OpenTx/EdgeTX) перестал стартовать или после передачи управления самой ОС, происходит что-то страшное, любую аппаратуру можно вернуть к жизни, в большинстве случаев без танцев с бубном:
- Подключаем в выключенном состоянии и прошиваем с помощью buddy.edgetx.org или STM32 Cube Programmer
- Если это аппаратура T-Pro, то подключаем в выключенном состоянии, предварительно зажав кнопку boot сверху у антенны и производим действия из пункта 1.
- Если это BetaFPV LiteRadio 3 Pro - материмся на производителя и ищем SWD, потому что они не сделали развязки питания таким образом, чтобы без нажатой кнопки Pwr или сигнала Pwr с ноги проца, контакт бут подтягивался бы к режиму загрузчика Stm32
Роман, я же написал, что
но справедливости ради, раскирпичивание STM в разы проще чем Атмег
если у Атмеги фюзы “слетают”, какое счастье, что это явление редкое, то без паялинга, чаще всего, никак не обойтись )
а в Джампере на основной плате есть St Link, т.е. там не проcто USB ?
почему спрашиваю ? Некоторые из вышеперечисленных операция просто не реально выполнить при отсутствии St Link.