Flash loader demonstrator ошибка

Posted on June 21, 2017 at 13:28

Have you used the PC comport with any other application prior to running

Flash Loader Demonstrator (since the last boot)? If so, did it use any form of handshaking (hardware or software)? There has been a problem with

Flash Loader Demonstrator in that it’s configuration of the DCB for no handshaking is (was?) incomplete. I reported this in another thread, but ST never commented andI don’t know if they corrected it or not. If this is the problem, a workaround is to open the comport with another application (possibly a terminal program such as TeraTerm) and configure it for no handshaking, then close that application, then runFlash Loader Demonstrator.

Note to ST: The incomplete DCB configuration for no handshaking (FlowControl == false … actually within an ‘else’) is in the file ‘rscpp’ in the functionCRS232::open(). There is more to it than just configuring fDtrControl and fRtsControl to FALSE (see my comments in

https://community.st.com/thread/34392-problems-with-stmflashloader-demo

for more details on the fix). After fixing, you should test by running a terminal program and configuring for hardware flow control, then close and run

Flash Loader Demonstrator. Then run the same test for software flow control. Another suggestion, display the version number from within the program on the first window prior to making the serial connection. I don’t think the software version is displayed anywhere within the program.

Форум РадиоКот • Просмотр темы — STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

Сообщения без ответов | Активные темы

ПРЯМО СЕЙЧАС:

Автор Сообщение

Не в сети

Заголовок сообщения: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Пн май 29, 2017 21:19:11 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Добрый вечер, уважаемые.

Вот купил сабж, сижу мучаю и не могу понять.
Делал все вот этой статье: https://geektimes.ru/post/277928/
Подключаю по схеме в статье.

Запускаю Flash Loader Demostrator
Выбираю порт, скорость, настройки и т.д.

Нажимаю «Next» и на этом все. Через несколько секунд пишет, что девайс не откликается.

Светодиод питания на плате горит.
Команда по com-порту уходит (видно, как на переходнике светодиод моргает один раз, когда Next жму).
Джампер BOOT0 = 1, BOO1 = 0
Питание подавал на вход «5в», сгореть не должна.

Пробовал в качестве переходника USB-UART использовать ардуинку, результат тот же (Один раз моргает RX и тишина)

Плата мертвая? Или еще как-то можно проверить? Когда жму ресет, то ничего не меняется, даже не моргает ничем.

P.S. Плата для меня новая, прошу быть снисходительными :oops:

Вернуться наверх
 

ПрофильПрофиль

 

Реклама

Мурик

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Пн май 29, 2017 22:53:35 

Друг Кота
Аватар пользователя

Карма: 1

Рейтинг сообщений: 157

Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3318

Рейтинг сообщения: 0

В статье это не Maple Mini. Наберите в поисковике «Maple Mini» и посмотрите картинки.

ST-Link’а нет?

Попробуйте поменять местами выводы RXD и TXD. Иногда помогает.

Надеюсь прошивку пишите не в Arduino IDE?

Вернуться наверх
Реклама

bolek

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 05:30:51 

Карма: 6

Рейтинг сообщений: 256

Зарегистрирован: Пт авг 21, 2009 03:22:12
Сообщений: 1077

Рейтинг сообщения: 0

Только что собрал схему на плате из статьи, в качестве USB-COM использовал несколько переделанный USB-RS485 на CH340.
Все работает.
RX, TX с уровнем 5 В — не страшно, эти входы толерантны к 5В.
Посмотри картинки:

Я такими экспериментами пока еще ни одну плату не сжег.

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 07:06:26 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

В статье это не Maple Mini. Наберите в поисковике «Maple Mini» и посмотрите картинки.

ST-Link’а нет?

Попробуйте поменять местами выводы RXD и TXD. Иногда помогает.

Надеюсь прошивку пишите не в Arduino IDE?

Вот отсюда взял название. бум знать.

ST-Linkа нет. Только USBASp

RXD/TXD поменял, это в первую очередь :))

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

Мурик писал(а):

Посмотри картинки:

Попробовал твое подключение (питание через USB и без переключателя 3.3в), результат тот же.

Есть подозрение, что я ее спалил, пока штырьки припаивал, но этож как надо паять!
Вечером попробую поискать ST-Link и, возможно куплю еще одну платку.

Вот еще интересность отсюда

Вечером займусь.

Вернуться наверх
Реклама

bolek

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 09:08:26 

Карма: 6

Рейтинг сообщений: 256

Зарегистрирован: Пт авг 21, 2009 03:22:12
Сообщений: 1077

Рейтинг сообщения: 0

aaleksander писал(а):

Вот еще интересность отсюда

Цитата:

…Если вы получили плату с STM32F103, а программатор ее не видит, это означает, что китайцы защитили Флеш память микроконтроллера…

Вечером займусь.

Цитата из ссылки:

Цитата:

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

Т.е. то, что ты собираешься попробовать, ты уже попробовал — подключил UART переходник и установил BOOT в нужное положение.

Если выводы для подключения программатора (китайский ST-Link2, через который по ссылке шло программирование) задействованы в залитой в МК программе для других целей, тогда действительно STLink не увидит плату.
Но, с правильным BOOT и по UART1 плата должна быть видна. Посмотри на третью картинку моего предыдущего поста — там можно указать где поставить/снять защиту, а на следующем экране Flash Loader Demonstrator можно стереть все или выборочно, залить прошивку…
Дело не в ubunte.

Вернуться наверх
Реклама

Мурик

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 09:15:18 

Друг Кота
Аватар пользователя

Карма: 1

Рейтинг сообщений: 157

Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3318

Рейтинг сообщения: 0

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

Вернуться наверх

bolek

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 09:19:29 

Карма: 6

Рейтинг сообщений: 256

Зарегистрирован: Пт авг 21, 2009 03:22:12
Сообщений: 1077

Рейтинг сообщения: 0

aaleksander писал(а):

Есть подозрение, что я ее спалил, пока штырьки припаивал, но этож как надо паять!

Если только статикой убил, пайка вряд ли…
Прозвони на всякий случай проводники от A9, A10, BOOT и кнопки Reset до МК, проверь уровни BOOT0, BOOT1 и RESET — может кнопка коротит?

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 10:16:31 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Если только статикой убил, пайка вряд ли…

Ну да, я только гребенку припаял :oops:

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

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

Вернуться наверх

john1770

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 10:57:23 

Зарегистрирован: Вт ноя 15, 2016 12:48:20
Сообщений: 12

Рейтинг сообщения: 0

Скорость соединения попробуй уменьшить

Вернуться наверх

Fusion

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 19:26:08 

Грызет канифоль
Аватар пользователя

Карма: 6

Рейтинг сообщений: 200

Зарегистрирован: Пт ноя 13, 2009 10:39:32
Сообщений: 269
Откуда: Москва

Рейтинг сообщения: 0

Без питания А9 и А10 не звонятся на землю.
При установленной перемычке BOOT0: А9 = 3.3В, А10 = 0.4В.
При нажатии сбрса А9 и А10 ноль.

Полезные схемки:

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Вт май 30, 2017 20:04:53 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Без питания А9 и А10 не звонятся на землю.
При установленной перемычке BOOT0: А9 = 3.3В, А10 = 0.4В.
При нажатии сбрса А9 и А10 ноль.
Полезные схемки:

Спасибо. Но у меня, как на зло батарейка в авометре кончилась. Завтра вечером буду пробовать.

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Ср май 31, 2017 21:34:56 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Без питания А9 и А10 не звонятся на землю.
Есть.

При установленной перемычке BOOT0: А9 = 3.3В, А10 = 0.4В.
А9 = 3.6В, А10=3.6В

При нажатии сброса А9 и А10 ноль.
У меня — не меняется.

:cry: Пока буду мучать АВРки.

Заказал у китайцев еще пяток плат и ST Link V2. Ждемс. Ну и из чипстера одна платка уже выехала. Быстрее приедет.

Вернуться наверх

Мурик

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Ср май 31, 2017 22:20:56 

Друг Кота
Аватар пользователя

Карма: 1

Рейтинг сообщений: 157

Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3318

Рейтинг сообщения: 0

Напряжение на А9 и А10 измеряли относительно 5 вольт или нуля?
Слишком оно высокое. Должно быть не больше 3.3 вольта.

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Чт июн 01, 2017 07:57:56 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Напряжение на А9 и А10 измеряли относительно 5 вольт или нуля?
Слишком оно высокое. Должно быть не больше 3.3 вольта.

Относительно земли. Питаю через пин «5В». У меня из USB вольт шесть выходит. Надо замерить еще раз.

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Чт июн 01, 2017 19:39:39 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Порой наша почта удивляет. За неделю пришла посылка из чипстера. А в ней, помимо всяких ништяков, еще одна платка.
Результат примерно тот же. Только А9 выдает 3.3В, как положенно. Но на А10 — 0.01В
Когда нажимаю ресет, напряжение на А9 медленно падает (секунды полторы), потом спустя секунд 10 восстанавливается, прям не микроконтроллер, а ПЛК какой-то. Я думал, микроконтроллер должен побыстрее загружаться.
И то не всегда: иногда показывает при включении ноль, потом, через пару ресетов — 3.3В (причем, набирает их так же постепенно, секунды за три)

Я вот думаю: может в паяльнике дело? У меня простой китайский кит и блок питания от ноута на 19В. Пока паяю, он и вышибает что понежнее.

ХЗ, в чем дело. Буду дальше аврки мучать и ждать, пока от меня очередной пакет с китая доберется (там я сразу пять плат заказал, столько же чипов и ST Link до кучи).

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

Вернуться наверх

Мурик

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Чт июн 01, 2017 22:26:32 

Друг Кота
Аватар пользователя

Карма: 1

Рейтинг сообщений: 157

Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3318

Рейтинг сообщения: 0

Не думаю что две платы просто так удалось вывести из строя паяльником. Или на жале присутствует фаза, а плата заземлена?
Переходник USB-UART исправен?

Вернуться наверх

12val12

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Чт июн 01, 2017 23:58:12 

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 310

Рейтинг сообщения: 0

Как то можно прикрутить к Flash Loader Demostrator
батник /скрипт
после 50 перешивок напрягает


_________________
ух ты…. показывает

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Пт июн 02, 2017 08:00:02 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Как то можно прикрутить к Flash Loader Demostrator
батник /скрипт
после 50 перешивок напрягает

100 пудов должен быть консольный аналог. Под линукс точно есть, например, stm32flash .

Вернуться наверх

Мурик

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Пт июн 02, 2017 08:06:44 

Друг Кота
Аватар пользователя

Карма: 1

Рейтинг сообщений: 157

Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3318

Рейтинг сообщения: 0

Как то можно прикрутить к Flash Loader Demostrator батник /скрипт

Он с исходниками. Можно доработать его.

А лучше взять ST-Link. Для него есть консольная утилита ST-LINK CLI.

Вернуться наверх

aaleksander

Не в сети

Заголовок сообщения: Re: STM32F103C8T6, Maple Mini не коннектится к Flash Loaderу

СообщениеДобавлено: Пт июн 02, 2017 10:08:14 

Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июл 07, 2015 21:00:35
Сообщений: 67

Рейтинг сообщения: 0

Проверил свой переходник:
Закоротил txd<->rxd, посылаю в терминале — получаю обратно. Пересылал даже файл — все ок.

Нашел на работе еще один переходник на том же чипе.
На одной платке изменились сообщения у Downloaderа (во вложении), но все равно, приконектиться не удалось.
Где то у меня дома валяется F232RL, но есть ли смысл :dont_know: ?

Вернуться наверх

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

I am not able to get the ST Flash loader to recognize the STM32 on the MP32. I get the following error: «No response from taget, the Boot loader can not be started. Please, verify the boot mode configuration and the flash protection status …».

 Settings-Config:

A) ST Flash Loader: 115200, 8, even, (echo disabled). 

B) I am using an ftdi usb-232 converter with a 232 shifter smd at the end (http://www.sparkfun.com/products/449):

A picture of my configuration is at the bottom.

Regarding B, this seriel configuration is working when I connect to either of the usarts on the StmDiscovery board. In fact on the discovery board, with respect to usart#1, I am connecting to pins Pa9 & Pa10 (same as MP32).

I am noticing that when I press next on ST flash Loader I can see the Tx and Rx blip momentarily, and then the Rx led on the 232-ttl converter stays on slightly dim (until I press the reset button on the MP32).

When I power up the board with the «jumper» removed,  JP11-5 is High and JP11-6 is low. I am not 100% sure, but I believe JP11-6 corresponds to the Boot_0 pin on the STM32.  

I tried several different buad rates in Flash Loader, but didnt have any luck. Also, I tried all the above on my deskop (which has serial ports). I used the same level shifter at the end of the cable. In all the above I also tried switching the Rx and Tx going to the MP32 (in case I had them backworks)s. I even tried pressing the reset after powering the board up, before trying the use the Flash Loader.

The only thing I didn’t think of until now (editing post) is that on the Discovery Board I powered the 232=ttl convertor at 3.3. When connected to the MP32 it is being powered at 5. What level is the usart at?

Is there anything I overlooked?

Thanks,

JimT

Flash Loader Demonstrator STM32 Проблема с коннектом.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже.

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

Один день плата проработала, после не стал подсоединяться компьютер к контроллеру.

Пробывал прошить через конфигуратор с закороченными контактами boot, не помогло не шьется. Диоды синий моргает, устройство в диспетчере оборудования появляется.
Ниже картинка обнаружил замыкание, хотя в этот порт не чего не подсоединялось ни когда.
Что могло вызвать такое?
P.S. добавил немного получше фото (извиняюсь в распоряжении только телефон, если поможет в диагностики, то смогу к другу сбегать за фотиком). Flash loader demonstrator тоже пробовал и на всех скоростях, пишет no response from the target the bootloader cannot be started.

Контроллер перестал работать, когда все провода разместил на раме, после решил подать питание на контроллер, для проверки (на столе все так и работало, без установки в раму) через IO_1, который в свою очередь запитан от приемника, а приемник от импульсного преобразователя на 5 В.


*1 Обнаружено темное пятно и характерный запах КЗ
*2 Если подать питание на контроллер от импульсного преобразователя (3 А), то там искрит

Пробовал подчистить аккуратно ножиком, на глаз КЗ там не должно быть, да откуда там ему взять если в этот порт не чего не подсоединялось.

You have to check in system bootloader address because it varies depending on MCU.
So check out this documentation from ST: in system bootloader guide from ST

As I see you are using wrong RAM address.

Part from bootloader cook book:
took from bootloader cook book

Moreover, there should be a trigger for entering to system bootloader. As I understand you are using software call method from your main application. This method is not reliable if BOOT pins of MCU are uncontrolled because if serial line or updating software fails you will loose main application and you will be unable to update device. Than you’ll need programmer.

So updating, overwriting software which has system bootloader call is unsafe updating method. I would suggest it only as a own usage update method.

To have safety you should control BOOT pins.
Or implement mini custom bootloader which could be triggered by button (to start main app) and before triggering that mini bootloader would stay quiet and let system bootloader update main app. Update can’t touch mini bootloader memory, this own customized bootloader should be untouched while update. But that is a suggestion.

Easer way to take control on update is to control BOOT pins.

For example:
put 3.3V or GND (depends on MCU) on BOOT pins with jumpers , set power and than device automatically will enter to system bootloader.

After update remove jumpers, and after power reset device will enter to your new update application.
That’s all.

If you do not have BOOT0, BOOT1 pins control from hardware. I strongly recommending you to check those pins control.
There is a guide from ST about BOOT pins: reference manual

Part of description from reference manual:
enter image description here

I am not able to get the ST Flash loader to recognize the STM32 on the MP32. I get the following error: «No response from taget, the Boot loader can not be started. Please, verify the boot mode configuration and the flash protection status …».

 Settings-Config:

A) ST Flash Loader: 115200, 8, even, (echo disabled). 

B) I am using an ftdi usb-232 converter with a 232 shifter smd at the end (http://www.sparkfun.com/products/449):

A picture of my configuration is at the bottom.

Regarding B, this seriel configuration is working when I connect to either of the usarts on the StmDiscovery board. In fact on the discovery board, with respect to usart#1, I am connecting to pins Pa9 & Pa10 (same as MP32).

I am noticing that when I press next on ST flash Loader I can see the Tx and Rx blip momentarily, and then the Rx led on the 232-ttl converter stays on slightly dim (until I press the reset button on the MP32).

When I power up the board with the «jumper» removed,  JP11-5 is High and JP11-6 is low. I am not 100% sure, but I believe JP11-6 corresponds to the Boot_0 pin on the STM32.  

I tried several different buad rates in Flash Loader, but didnt have any luck. Also, I tried all the above on my deskop (which has serial ports). I used the same level shifter at the end of the cable. In all the above I also tried switching the Rx and Tx going to the MP32 (in case I had them backworks)s. I even tried pressing the reset after powering the board up, before trying the use the Flash Loader.

The only thing I didn’t think of until now (editing post) is that on the Discovery Board I powered the 232=ttl convertor at 3.3. When connected to the MP32 it is being powered at 5. What level is the usart at?

Is there anything I overlooked?

Thanks,

JimT

I am designing a breakout board for the STM32F103RB, I have the UART1 pins out so I can use flash programming rather than JTAG, but I am having no luck with ST flash programmer :( it gives me different problem messages..
1) «Unrecognized device…please, reset your device then try again»
2) «No response from the target, the boot loader can not be started. Please verify the boot mode configuration and the flash protection status, Reset your device then try again»
3) «Cannot get available commands, please, try to change echo selection, reset your device then try again»

Board:
====
I have a custom made board, which I confirm is working since I have the JTAG pins out as well and was able to connect and program it using Olimex ARM-USB-OCD + Eclipse

Connection:
=======
USB to serial FT232 —> Sparkfun logic level converter (3.3v/5v) —> STM32 UART pins

Settings:
======
Boot 0 = 1
Boot 1 = 0

Things I tried:
=========
1 — Set boot 0 & boot 1 to correct setting (As above) then quickly pressing next button on flash demonstrator
2 — Power up board, run flash demonstrator, pressing next
3 — Power up board, run flash demonstrator, press reset button, pressing next

Nothing of that works, for some reason the Flash demonstrator does not want to connect to the board :(

Appreciate your input on this…

Вектора прерываний переносятся потому, что и бутлоадеру и основной прошивке как правило требуется работа с прерываниями, и необходимо выбирать какой код обработчика прерывания мы выполняем — код бутлоадера или код основной прошивки. Для этой цели у STMовского контроллера прерываний есть функция переноса таблицы векторов прерываний. При этом появляется возможность иметь отдельные наборы обработчиков прерываний для бутлоадера и для основной прошивки.

Конечно возможен вариант с одной таблицей векторов, и программным выбором какой обработчик использовать (устанавливаем флаг работает бутлоадер или основная прошивка, и по этому флагу делаем if в ветках которого расположены разные обработчики) — бутлоадера или основной прошивки (в зависимости от того что активно), но такой вариант замедляет реакцию системы на прерывания.

Вариант с переносом таблицы векторов удобней тем, что в памяти программ мы можем хранить несколько разных прошивок (естественно скомпилированных и линкованных для использования разных стартовых адресов), и на старте системы можем выбирать какой из прошивок отдавать управление. Сейчас как раз занимаюсь такой развлекухой)). Требуется шиться по CAN с оооочень низкой скоростью (порядок байтов в секунду), причем с огромной вероятностью разрывов на линии. При этом вероятность того, что устройство продолжит функционировать после неудачной перепрошивки, должна стремится к 100%.

У нас работают тысячи устройств имеющих загрузчик (правда на LPC). Обновление прошивки — по любому интерфейсу по рабочему протоколу, при внезапной перезагрузке ничего не слетит 100%, загрузка нового ПО может быть продолжена с точки разрыва. Сбой питания возможен в любой момент хоть при загрузке прошивки хоть при обновлении её во флеш. Никакие таблицы векторов переносить не надо — на время работы загрузчика прерывания запрещены, рабочее ПО при старте само настраивает таблицу прерываний.

ПО состоит из:

1. неизменяемой части (загрузчика) в первом секторе флеш, который прошивается изначально на заводе и при удалённой прошивке не может быть перешит;

2. собственно рабочего ПО (во флеш после загрузчика).

Вся флеш (за исключением первого сектора) делится на две половины: первая — область исполняемого рабочего ПО; вторая — область хранения нового ПО, которое надо прошить.

Рабочее ПО по любому интерфейсу (или по всем включая CAN и беспроводные) принимает прошивку по рабочему протоколу устройства среди прочего обмена данными не мешая основной работе устройства.

Приём идёт в ОЗУ (так как если шить сразу во вторую половину флеши контроллера, то надо запрещать прерывания надолго, а это помешает работе основной программы).

По завершении приёма и проверки валидности прошивки, новая прошивка переписывается во вторую половину флеш контроллера и во флеш выставляется флаг требования обновления прошивки,

после чего делается RESET процу.

Стартует загрузчик, который обнаружив флаг и проверив CRC прошивки во второй половине, перешивает прошивку из второй половины флеш в первую, далее — удаляет флаг и стартует рабочее ПО из первой

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

Вот такой алгоритм обеспечивает 100%-надёжное удалённое обновление прошивки в устройстве по рабочему протоколу, не боящееся неожиданных сбоев питания и с возможностью широковещательного

обновления ПО.

Если в устройстве есть внешняя энергонезависимая память (SPI-флеш к примеру), то можно обойтись без хранения принимаемой прошивки во второй половине флеш контроллера и хранить её в этой памяти.

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

Расположите с помощью компоновщика команду перехода на _c_int00 (точку входа в С-программу) с самого начала образа прошивки и передавайте управление на первый адрес прошивки.

Обработчики прерываний описываютсся одинаково везде.

Неправда :)

Понравилась статья? Поделить с друзьями:
  • Fiorenzato f64 ошибка
  • Fmt001313 ошибка проверки листа conf гис жкх
  • Fix price ошибка валидации
  • Firebird ошибка подключения к базе
  • Fms 3000 ошибка файла подкачки