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

serenya

rcopen.com/forum/f4/topic404604 закончилась окирпичиванием приемника. Пытался слить прошивку с рабочего приемника, но она залочена. Со словами “все равно не работает” через SWD залил прошивку, на которую пытался обновиться. Оригинальная прошивка имеет расширение .frk, и по всей видимости перекодируется программой для прошивки. Я же просто переименовал ее в bin и залил через STM32 ST-LINK Utility. Стало ни лучше ни хуже. Есть мысль попробовать обмануть родную утилиту от FrSky, залить бутлодырь который идет в пустых STM32 с завода (камень STM32F103C8T6). Если я правильно понимаю процесс, то камень постоянно находится в режиме загрузки через UART и бутлодырь т.к. прозвонка показал: BOOT0 нога 44 через 10кОм висит на +5В. BOOT1 нога 20 через резистор висит на земле. т.е.

The STM32F10xxx bootloader is activated by applying pattern1 (described in Table 2:
Bootloader activation patterns

Pattern1 Boot0(Pin) = 1 and Boot1(Pin) = 0

(AN2606)
Для прошивки утилитой от FrSky необходимо коротить выходы 1 и 2 приемника, которые висят на 18 и 19 ногах STM, т.е. переход в режим программирования программный. Возможно (я очень на это надеюсь) для программирования в данном случае используется заводской бутлоадер (шанс конечно мизерный) и программный переход ведет на заводской бутлоадер.Что бы это проверить хочу вернуть камень к “заводским настройкам”. Может кто подсказать как это сделать? Может кто подскажет какой-то другой способ реанимировать приемник? Производитель прошивку скорее всего не даст, хотя на форуме отписал на удачу.

MPetrovich
serenya:

залил через STM32 ST-LINK Utility

Данная утилита предназначена для работы с программатором ST-LINK: www.st.com/web/en/catalog/tools/PF251168?s_searcht…
Для прошивки по UART используется программа STM32 and STM8 Flash loader demonstrator: www.st.com/web/en/catalog/tools/PF257525

serenya:

Если я правильно понимаю процесс, то камень постоянно находится в режиме загрузки через UART и бутлодырь т.к. прозвонка показал: BOOT0 нога 44 через 10кОм висит на +5В. BOOT1 нога 20 через резистор висит на земле. т.е.

Не думаю. То, что ноги соединены так, это ещё не всё. В самой программе, которая заливается, может быть переход из режима загрузки в режим выполнения программы (RUN).

serenya:

Для прошивки утилитой от FrSky необходимо коротить выходы 1 и 2 приемника, которые висят на 18 и 19 ногах STM, т.е. переход в режим программирования программный.

Я не могу знать, что удумали китайские программеры, но такой вариант не исключён.

serenya:

хочу вернуть камень к “заводским настройкам”

Что есть “заводские настройки”? Для перепрошивки, частичного или полного стирания FLASH-памяти МК скачайте прогу Flash loader demonstrator, ссылку на которую я давал выше. Прочитайте мануал по этой проге, законнектитесь через UART и творите что хотите.

serenya
MPetrovich:

Данная утилита предназначена для работы с программатором ST-LINK

serenya:

через SWD залил прошивку

Именно ST-LINKом

MPetrovich:

Для прошивки по UART используется программа STM32 and STM8 Flash loader demonstrator:

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

MPetrovich:

Не думаю. То, что ноги соединены так, это ещё не всё. В самой программе, которая заливается, может быть переход из режима загрузки в режим выполнения программы (RUN)

Здесь мы долго можем гадать на кофейной гуще.

MPetrovich:

Что есть “заводские настройки”?

Хочу иметь загрузчик, с которым камень идет с завода для возможности программирования по UART.
Я правильно понимаю что этот самый загрузчик мог слететь и по этому я не смог достучаться до камня через Flash loader demonstrator, или он аппаратный и я просто что-то не так делал?

MPetrovich
serenya:

Хочу иметь загрузчик, с которым камень идет с завода для возможности программирования по UART.

Считайте, что он уже у Вас есть - лежит в микроконтроллере.

serenya:

Я правильно понимаю что этот самый загрузчик мог слететь

Не слышал о таком никогда, но всё когда-нибудь случается в первый раз. Может Вы первый? Короче: маловероятно, что загрузчик слетел, поскольку он, скорее всего, аппаратный.

serenya:

или он аппаратный и я просто что-то не так делал?

Во Вы и сами к этому пришли. Видно что-то не так. Проверьте по порядку: подтянуты ли RX и TX к плюсу через резюки, есть ли на них высокий уровень, проверьте установки порта, с которым Вы связываетесь. Должно быть: Рort Name-тот порт, который определяеься при подключении моста USB-UART; Baud Rate-115200; Parity-Even; Echo-Disabled. Ну и сам мост проверьте - определяется ли при подключению к компу, замкните RX и TX и плюньте что-нибудь из любой терминальной проги - если на приёме будет то, что передали - всё ОК. В общем, последовательно и не торопясь проверить всё железо. Удачи.

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 считать не получилось, залочено считывание. Не думаю что через юарт получится, иначе грош цена такой защите.