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

serenya

FTDI рабочая, постоянно пользую. Не удачная прошивка через нее же была и приемник определился и начал прошиваться, т.е. с уровнями, настройками и.т.д. порядок. Есть еще один момент, производитель дабы подзаработать выпустил свой собственный конвертер USB-UART, а что бы его покупали инвертировал сигналы и в нем и в железках прошиваемых им. Но это легко обходится программным инвертированием уровней ФТДИ через их утилиту. Итого имеем инверсный UART со стороны приемника и ФТДИ.

MPetrovich
serenya:

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

Тогда я не понял что не так. Если приёмник “начал прошиваться”, то значит UART работает(работал). ОК. В данный момент исправность аппаратной части сохранена или Вы не проверяли?

serenya:

производитель дабы подзаработать выпустил свой собственный конвертер USB-UART, а что бы его покупали инвертировал сигналы и в нем и в железках прошиваемых им.

Бутлодер в микроконтроллере от этого не перестал работать в том же режиме, как его выпустили с фабрики, поскольку он аппаратный. Инверсия сигналов в мосте продаваемом вместе с приёмником не отменяет заводских настроек UART микроконтроллера.

serenya
MPetrovich:

Тогда я не понял что не так

В момент прошивки произошел сбой по моей вине.

MPetrovich:

В данный момент исправность аппаратной части сохранена или Вы не проверяли?

Аппаратную часть я не проверял, но я ее и не трогал, только распаял SWD на проводках.

MPetrovich:

Бутлодер в микроконтроллере от этого не перестал работать в том же режиме, как его выпустили с фабрики, поскольку он аппаратный

Вечером попробую еще раз законнектиться через Flash loader demonstrator. Но даже если и получится подключиться, залить прошивку не выйдет т.к. ее нет в нормальном виде (hex/bin). И все равно приемник не распознается родной прогой т.к. переход в режим прошивки программный, а от родной прошивки не осталось и следа. Похоже круг замкнулся. Вечером еще помучаю его, и если ничего не выйдет (99,9%) и производитель не даст прошивку (99,9999%) приемник отправится на органы.

MPetrovich
serenya:

залить прошивку не выйдет т.к. ее нет в нормальном виде (hex/bin).

А в каком она виде? Расширение не то? Посмотрите в блокноте - может это обычный hex-файл просто прилепили другое расширение.

serenya:

приемник не распознается родной прогой т.к. переход в режим прошивки программный

Вот это я не понял. Это как происходит, если никаких команд в приёмник не поступает, поскольку он не видит компа.
Попробуйте в лоб: переименуйте расширение заливаемого файла на hex/bin и залейте в микроконтроллер по стандартному УАРТу.

serenya
MPetrovich:

А в каком она виде? Расширение не то? Посмотрите в блокноте - может это обычный hex-файл просто прилепили другое расширение.

Расширение frk, оригинальное от FrSky. Смотрел блокнотом, на хекс не похож совсем, по этому

serenya:

Я же просто переименовал ее в bin и залил через STM32 ST-LINK Utility

через SWD.

serenya:

и по всей видимости перекодируется программой для прошивки

MPetrovich:

Вот это я не понял.

Для перехода в режим прошивки на приемнике необходимо поставить перемычку между 1 и 2 каналом. После подачи питания приемник программно распознает переход и переходит в режим загрузки по UART, но бутлоадер в этом режиме какой-то не стандартный.

MPetrovich:

и залейте в микроконтроллер по стандартному УАРТу.

Приемник по UART не определяется ни в ST-LINK Utility ни в фрскаевской утилите, (ФТДИ на всякий случай проверил терминалкой) что не удивительно т.к. сейчас в камне залито черти что. Но он не определялся и до экспериментальной прошивки переименованным файлом. Похоже что все же заводской бутлоадер возможно попортить, или я все же что-то делаю не так. Правильно ли я понял даташиты по установке выводов BOOT (писал в первом сообщении)? Никаких ресетов не надо дергать?
Спасибо Вам большое за помощь. Производитель на форуме молчит, прошивку ожидать не приходится, да я бы и сам не дал. Приемник отправится на органы.

MPetrovich
serenya:

Похоже что все же заводской бутлоадер возможно попортить

Я сейчас глянул мануал по бутлодерам. Похоже, что всё таки там на заводе во флэш заливают, таки, прогу-бутлодер. Она расписана в Figure 6. Bootloader for STM32F10xxx with USART1. Так что мои утверждения по поводу аппаратного бутлодера были неверны. Вероятно не исключён вариант того, что Вы залезли в тот раздел памяти, где лежала прога-бутлодер и его повредили. К сожалению для Вашего камня в мануале не указывают где именно в памяти находится бутлодер.

serenya:

Правильно ли я понял даташиты по установке выводов BOOT (писал в первом сообщении)?

Вроде бы правильно.

serenya:

Никаких ресетов не надо дергать?

Ресет надо нажимать два раза: первый раз когда устанавливается режим бутлодера и второй раз когда программа залилась и перемычка с ноги Boot0(Pin) убирается, т.е. Boot0(Pin)=0 и Boot1(Pin)=0. Или оба раза передёрнуть питание.
Если не в лом, то можно попробовать написать свой бутлодер по блок схеме из мануала Figure 6., откомпилить его и залить через SWD ST-LINKом. Но это, конечно, на любителя.

Сейчас подумал ещё и возникла вот какая мысль: по уму(и по мануалу), та часть памяти, где лежит бутлодер залочена и стереть её можно только сняв защиту. В мануале описывается возможность раскурочивания бутлодера, но там описывается именно процедура снятия защиты с определённых секторов памяти. Каким образом Вы могли разлочить память под бутлодер - загадка…

serenya
MPetrovich:

с ноги Boot0(Pin) убирается, т.е. Boot0(Pin)=0 и Boot1(Pin)=0

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

MPetrovich:

можно попробовать написать свой бутлодер

Это точно нет, овчинка выделки не стоит.

MPetrovich:

Каким образом Вы могли разлочить память под бутлодер

А был ли мальчик заводской бутлоадер? Может его потерли при прошивке и оставили только свой фрскаевский? Это объясняет почему он так легко испортился, ведь первый раз я не трогал область бута а соединиться с камнем после неудачной прошивки не смог.

MPetrovich
serenya:

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

Это как? Boot0(Pin) через резюк соединён с 3В, а Boot1(Pin) через резюк с землёй? Тогда, по логике вещей, ресет после загрузки программный, а когда включаешь питание камень сразу в режиме загрузки. Но в таком случае не понятно как же девайс работает в нормальном режиме?
А чо за проблема? припаяйте проводки и тумблер параллельно резистору от Boot0(Pin) к земле.

serenya:

А был ли мальчик заводской бутлоадер? Может его потерли при прошивке и оставили только свой фрскаевский?

Чёт не очень в это верится. Китайцы лишний раз не почешутся, а тут свой бутлодер. Сомневаюсь я.

serenya:

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

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

serenya

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

MPetrovich

Попробуйте всё таки инициировать стандартный STMовский бутлодер воспользовавшись мануалом и припаяв проводки к нужным ногам.

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. Но всё равно останется вопрос с оригинальным бутлоадером.

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