Нужна помощь с прошивкой STM32
Тогда я не понял что не так
В момент прошивки произошел сбой по моей вине.
В данный момент исправность аппаратной части сохранена или Вы не проверяли?
Аппаратную часть я не проверял, но я ее и не трогал, только распаял SWD на проводках.
Бутлодер в микроконтроллере от этого не перестал работать в том же режиме, как его выпустили с фабрики, поскольку он аппаратный
Вечером попробую еще раз законнектиться через Flash loader demonstrator. Но даже если и получится подключиться, залить прошивку не выйдет т.к. ее нет в нормальном виде (hex/bin). И все равно приемник не распознается родной прогой т.к. переход в режим прошивки программный, а от родной прошивки не осталось и следа. Похоже круг замкнулся. Вечером еще помучаю его, и если ничего не выйдет (99,9%) и производитель не даст прошивку (99,9999%) приемник отправится на органы.
залить прошивку не выйдет т.к. ее нет в нормальном виде (hex/bin).
А в каком она виде? Расширение не то? Посмотрите в блокноте - может это обычный hex-файл просто прилепили другое расширение.
приемник не распознается родной прогой т.к. переход в режим прошивки программный
Вот это я не понял. Это как происходит, если никаких команд в приёмник не поступает, поскольку он не видит компа.
Попробуйте в лоб: переименуйте расширение заливаемого файла на hex/bin и залейте в микроконтроллер по стандартному УАРТу.
А в каком она виде? Расширение не то? Посмотрите в блокноте - может это обычный hex-файл просто прилепили другое расширение.
Расширение frk, оригинальное от FrSky. Смотрел блокнотом, на хекс не похож совсем, по этому
Я же просто переименовал ее в bin и залил через STM32 ST-LINK Utility
через SWD.
и по всей видимости перекодируется программой для прошивки
Вот это я не понял.
Для перехода в режим прошивки на приемнике необходимо поставить перемычку между 1 и 2 каналом. После подачи питания приемник программно распознает переход и переходит в режим загрузки по UART, но бутлоадер в этом режиме какой-то не стандартный.
и залейте в микроконтроллер по стандартному УАРТу.
Приемник по UART не определяется ни в ST-LINK Utility ни в фрскаевской утилите, (ФТДИ на всякий случай проверил терминалкой) что не удивительно т.к. сейчас в камне залито черти что. Но он не определялся и до экспериментальной прошивки переименованным файлом. Похоже что все же заводской бутлоадер возможно попортить, или я все же что-то делаю не так. Правильно ли я понял даташиты по установке выводов BOOT (писал в первом сообщении)? Никаких ресетов не надо дергать?
Спасибо Вам большое за помощь. Производитель на форуме молчит, прошивку ожидать не приходится, да я бы и сам не дал. Приемник отправится на органы.
Похоже что все же заводской бутлоадер возможно попортить
Я сейчас глянул мануал по бутлодерам. Похоже, что всё таки там на заводе во флэш заливают, таки, прогу-бутлодер. Она расписана в Figure 6. Bootloader for STM32F10xxx with USART1. Так что мои утверждения по поводу аппаратного бутлодера были неверны. Вероятно не исключён вариант того, что Вы залезли в тот раздел памяти, где лежала прога-бутлодер и его повредили. К сожалению для Вашего камня в мануале не указывают где именно в памяти находится бутлодер.
Правильно ли я понял даташиты по установке выводов BOOT (писал в первом сообщении)?
Вроде бы правильно.
Никаких ресетов не надо дергать?
Ресет надо нажимать два раза: первый раз когда устанавливается режим бутлодера и второй раз когда программа залилась и перемычка с ноги Boot0(Pin) убирается, т.е. Boot0(Pin)=0 и Boot1(Pin)=0. Или оба раза передёрнуть питание.
Если не в лом, то можно попробовать написать свой бутлодер по блок схеме из мануала Figure 6., откомпилить его и залить через SWD ST-LINKом. Но это, конечно, на любителя.
Сейчас подумал ещё и возникла вот какая мысль: по уму(и по мануалу), та часть памяти, где лежит бутлодер залочена и стереть её можно только сняв защиту. В мануале описывается возможность раскурочивания бутлодера, но там описывается именно процедура снятия защиты с определённых секторов памяти. Каким образом Вы могли разлочить память под бутлодер - загадка…
с ноги Boot0(Pin) убирается, т.е. Boot0(Pin)=0 и Boot1(Pin)=0
Эти ноги на постоянке висят в режиме бутлоадера, что бы изменить их состояние придется выпаивать подтягивающие резисторы.
можно попробовать написать свой бутлодер
Это точно нет, овчинка выделки не стоит.
Каким образом Вы могли разлочить память под бутлодер
А был ли мальчик заводской бутлоадер? Может его потерли при прошивке и оставили только свой фрскаевский? Это объясняет почему он так легко испортился, ведь первый раз я не трогал область бута а соединиться с камнем после неудачной прошивки не смог.
Эти ноги на постоянке висят в режиме бутлоадера, что бы изменить их состояние придется выпаивать подтягивающие резисторы.
Это как? Boot0(Pin) через резюк соединён с 3В, а Boot1(Pin) через резюк с землёй? Тогда, по логике вещей, ресет после загрузки программный, а когда включаешь питание камень сразу в режиме загрузки. Но в таком случае не понятно как же девайс работает в нормальном режиме?
А чо за проблема? припаяйте проводки и тумблер параллельно резистору от Boot0(Pin) к земле.
А был ли мальчик заводской бутлоадер? Может его потерли при прошивке и оставили только свой фрскаевский?
Чёт не очень в это верится. Китайцы лишний раз не почешутся, а тут свой бутлодер. Сомневаюсь я.
ведь первый раз я не трогал область бута а соединиться с камнем после неудачной прошивки не смог.
Не понял. В первый раз не трогали, а в какой раз трогали? И откуда вы знаете, что вообще производили действия с областью памяти бутлодера?
Когда я залил переименованную в bin прошивку не известно какие области памяти она затронула. После этого я уже очистил память полностью.
Китайцы вполне могли замутить свой бут т.к. производитель не маленький. Они же не поленились закодировать прошивку.
Попробуйте всё таки инициировать стандартный STMовский бутлодер воспользовавшись мануалом и припаяв проводки к нужным ногам.
Даже если STMовский бут заработает, это ничего не даст т.к. HEXа нет, а фрскаевская прошивка работает не с STMовским бутом. Вот что мне ответили на форуме FrSky:
.hex файл является конфиденциальной, и мы не можем предоставить его вам.
Если HEX конфиденциален, то скорее всего они приняли меры что бы их прошивку в формате frk не могли прошить в стороннее железо. Помимо дешифровки их программой прошивки в HEX, скорее всего еще и бут у них свой, иначе секретности никакой.
В другой Вашей ветке rcopen.com/forum/f4/topic404604 в первом сообщении написано, что Вы уже делали перепрошивку на другом приемнике и все получилось. Если это так, то можно попробовать считать с того приемыша прошивку. Только считывать нужно в режиме стандартного STMовского бутлодера, для чего нужно убрать резюк 10кОм, притягивающий BOOT0 нога 44 на + питания, а вместо него припаять тумблер на проводочках. Далее: подключить FTDI-мост, замкнуть тумблер(коротнуть BOOT0 на землю) и подать питание на чип. После этого запустить Flash loader demonstrator настроить его как я уже писал выше и попытаться связаться с чипом. Должно получиться. Потом попробовать скачать с флэша прошивку в файл. Есть, правда, опасение, что китайцы попытались залочить флэш, но вроде бы во Flash loader demonstrator (как я понял) можно снимать любую защиту с флэша.
Не знаю на счет флеш лоадера, а через swd и прогу от stm считать не получилось, залочено считывание. Не думаю что через юарт получится, иначе грош цена такой защите.
Не попробовав, не узнаешь…
P.S. Не удивлюсь если модеры скоро прикроют эту тему. Кроме нас с Вами никто не участвует в обсуждении.
Просто трудозатра уже перевалили определенный барьер, после которого проще купить, а время потратить на что-то еще. Спасибо Вам еще раз за помощь.
Может быть уже поздно, но выскажу свои соображения по данной проблеме.
- При прошивке контроллер (после определенных действий) остается в режиме бутлодера, который переписывает область основной программы контроллера.
- Родная утилита от FrSky передает файл .frk в приемник без изменений блоками по 400 байт + 2 байта контрольной суммы, которые она рассчитывает сама. Приемник на это отвечает, что блок принят и он верный. Затем передается следующий блок данных, а ползунок в программе передвигается на некоторый процент вперед. Вывод: при прошивке родной утилитой произошел некий программный или аппаратный сбой, после которого приемник не смог ответить утилите и прошивка зависла.
- Причин сбоя прошивки может быть очень много. Из аппаратных наиболее вероятны проблемы с цепями питания или выход из строя контроллера. Это в первую очередь и стоит проверить.
Может быть уже поздно
Лучше поздно, чем никогда. Пока тема не закрыта можно (и нужно, на мой взгляд) высказываться. Тем более, что Ваша информация весьма полезна.
А Вы каким образом раскопали как работает
Родная утилита от FrSky
? Анализатором подключались?
OllyDbg.
Для frsky_update_rev11.exe:
402D41 - считаем контрольную сумму,
402C10 - передаем данные в приемник.
Если не осилите, то можно использовать программы для слежения за COM портом
Это в первую очередь и стоит проверить
Это проверял - проц живой. Получилось это так
Но как-то так неудачно получилось, я и сам толком не понял как, то ли палец 2 раза клацнул по мышке, то ли нечаянно нажал второй раз “прошить”, в общем процесс прошивки остановился на 17% и все, проценты не бегут, фтди не подмигивает.
402D41 - считаем контрольную сумму, 402C10 - передаем данные в приемник.
Вообще ничего не понял, но думаю это не важно т.к. бута скорее всего не осталось в проце, если бы он остался то наверное определялся бы в родной утилите.
- Контроллер живой, т.к. его удалось прошить через STM32 ST-LINK.
- Загрузчик с завода никуда не делся, для его изменения нужно входить в другой режим программирования. Следовательно должен работать Flash loader demonstrator.
Подробнее www.radiohlam.ru/teory/stm32_3.htm. - Скорее всего сдох стабилитрон на 3,3В, т.к. при подаче напряжения от программатора контроллер работает, а от батареи нет. Проверьте напряжение на 1 ноге контроллера (считать от метки на корпусе, метка должна быть в верхнем левом углу), должно быть 3,3В.
Со словами “все равно не работает” через SWD залил прошивку
При этом с большой вероятностью затерев бутлоадер, который единственный мог расшифровать оригинальную прошивку. Если она, конечно, была зашифрована асимметричным алгоритмом.
Если алгоритм симметричный, либо вообще нет шифрования, тогда, чисто теоретически, можно разломать оригинальную программу для прошивки, расшифровать оригинальную прошивку и залить её через SWD. Но всё равно останется вопрос с оригинальным бутлоадером.
На практике, думаю, кирпич.
Проверьте напряжение на 1 ноге контроллера
Сейчас не могу этого сделать, нет под рукой, может через недельку.
На практике, думаю, кирпич.
Боюсь что на практике 10 новых купить дешевле, по крайней мере с моими знаниями. Новый уже едет.