Нужна помощь с прошивкой STM32

serenya

Даже если STMовский бут заработает, это ничего не даст т.к. HEXа нет, а фрскаевская прошивка работает не с STMовским бутом. Вот что мне ответили на форуме FrSky:

.hex файл является конфиденциальной, и мы не можем предоставить его вам.

Если HEX конфиденциален, то скорее всего они приняли меры что бы их прошивку в формате frk не могли прошить в стороннее железо. Помимо дешифровки их программой прошивки в HEX, скорее всего еще и бут у них свой, иначе секретности никакой.

MPetrovich

В другой Вашей ветке rcopen.com/forum/f4/topic404604 в первом сообщении написано, что Вы уже делали перепрошивку на другом приемнике и все получилось. Если это так, то можно попробовать считать с того приемыша прошивку. Только считывать нужно в режиме стандартного STMовского бутлодера, для чего нужно убрать резюк 10кОм, притягивающий BOOT0 нога 44 на + питания, а вместо него припаять тумблер на проводочках. Далее: подключить FTDI-мост, замкнуть тумблер(коротнуть BOOT0 на землю) и подать питание на чип. После этого запустить Flash loader demonstrator настроить его как я уже писал выше и попытаться связаться с чипом. Должно получиться. Потом попробовать скачать с флэша прошивку в файл. Есть, правда, опасение, что китайцы попытались залочить флэш, но вроде бы во Flash loader demonstrator (как я понял) можно снимать любую защиту с флэша.

serenya

Не знаю на счет флеш лоадера, а через swd и прогу от stm считать не получилось, залочено считывание. Не думаю что через юарт получится, иначе грош цена такой защите.

MPetrovich

Не попробовав, не узнаешь…
P.S. Не удивлюсь если модеры скоро прикроют эту тему. Кроме нас с Вами никто не участвует в обсуждении.

serenya

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

28 days later
murom

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

  1. При прошивке контроллер (после определенных действий) остается в режиме бутлодера, который переписывает область основной программы контроллера.
  2. Родная утилита от FrSky передает файл .frk в приемник без изменений блоками по 400 байт + 2 байта контрольной суммы, которые она рассчитывает сама. Приемник на это отвечает, что блок принят и он верный. Затем передается следующий блок данных, а ползунок в программе передвигается на некоторый процент вперед. Вывод: при прошивке родной утилитой произошел некий программный или аппаратный сбой, после которого приемник не смог ответить утилите и прошивка зависла.
  3. Причин сбоя прошивки может быть очень много. Из аппаратных наиболее вероятны проблемы с цепями питания или выход из строя контроллера. Это в первую очередь и стоит проверить.
MPetrovich
murom:

Может быть уже поздно

Лучше поздно, чем никогда. Пока тема не закрыта можно (и нужно, на мой взгляд) высказываться. Тем более, что Ваша информация весьма полезна.
А Вы каким образом раскопали как работает

murom:

Родная утилита от FrSky

? Анализатором подключались?

murom

OllyDbg.
Для frsky_update_rev11.exe:
402D41 - считаем контрольную сумму,
402C10 - передаем данные в приемник.
Если не осилите, то можно использовать программы для слежения за COM портом

serenya
murom:

Это в первую очередь и стоит проверить

Это проверял - проц живой. Получилось это так

serenya:

Но как-то так неудачно получилось, я и сам толком не понял как, то ли палец 2 раза клацнул по мышке, то ли нечаянно нажал второй раз “прошить”, в общем процесс прошивки остановился на 17% и все, проценты не бегут, фтди не подмигивает.

murom:

402D41 - считаем контрольную сумму, 402C10 - передаем данные в приемник.

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

murom
  1. Контроллер живой, т.к. его удалось прошить через STM32 ST-LINK.
  2. Загрузчик с завода никуда не делся, для его изменения нужно входить в другой режим программирования. Следовательно должен работать Flash loader demonstrator.
    Подробнее www.radiohlam.ru/teory/stm32_3.htm.
  3. Скорее всего сдох стабилитрон на 3,3В, т.к. при подаче напряжения от программатора контроллер работает, а от батареи нет. Проверьте напряжение на 1 ноге контроллера (считать от метки на корпусе, метка должна быть в верхнем левом углу), должно быть 3,3В.
Vovets
serenya:

Со словами “все равно не работает” через SWD залил прошивку

При этом с большой вероятностью затерев бутлоадер, который единственный мог расшифровать оригинальную прошивку. Если она, конечно, была зашифрована асимметричным алгоритмом.

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

На практике, думаю, кирпич.

serenya
murom:

Проверьте напряжение на 1 ноге контроллера

Сейчас не могу этого сделать, нет под рукой, может через недельку.

Vovets:

На практике, думаю, кирпич.

Боюсь что на практике 10 новых купить дешевле, по крайней мере с моими знаниями. Новый уже едет.