Jumper T-Pro

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

gumilev

Обновил прошивку edgetx на 2.8.0. Версия со встроенным elrs. Почему то в SETUP - Internal RF почему то теперь доступен MULTI и пропал CRSF. Что я мог сделать не так? Как исправить? Модуль естественно не менял.

gumilev

Разобрался. Нужно перейти в раздел HARDWARE и там поменять.

14 days later
CuHonTuK

Подскажите такой вопрос, как подключить по БТ и настроить на ПК для симуляторов? Включаю БТ в elrs модуле, сопрягаю, ПК определяет геймпад и на этом все…

По проводу подключилось без проблем, даже без танцев настроил для игр в стиме😁, правда кнопок немного не хватает 😅. А вот по БТ никак…

leshka89

Приветствую! Почему аппа может недозаряжать аккумы? Максимум загорается 4 индикатора и зарядка прекращается. Напряжение 8.0 показывает и в аппе и фактическое суммарное на банках.