Информационный блок загрузочной Flash

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Ответить
Дмитрий_0577
Сообщения: 2
Зарегистрирован: 09 окт 2017, 20:29
Предприятие: СФ МЭИ

Информационный блок загрузочной Flash

Сообщение Дмитрий_0577 » 23 окт 2017, 11:25

Здравствуйте!
Есть вопросы по загрузке микроконтроллера и использованию информационного блока загрузочной Flash-памяти.

Требуется осуществлять запись основной программы в основную область загрузочной Flash с помощью загрузчика, расположенного в информационном блоке. При сбросе бита BOOTFROM_IFB в основной программе контроллер должен начинать работу с программы-
загрузчика после сброса; а после установки BOOTFROM_IFB в загрузчике контроллер должен стартовать с основной программы после
сброса.

В информационный блок была записана программа-загрузчик. Отдельно, без его помощи, в основной блок записана основная
программа по нулевому адреса. Переход от одной программы к другой с помощью бита BOOTFROM_IFB происходил успешно.

Затем, уже с помощью загрузчика, расположенного в информационном блоке, предпринимались попытки перезаписать основную
программу в основной области. Запись по адресу 0x2000 и больше происходила успешно. Но при записи по адресам 0x0000-0x1FFF
контроллер зависает. А если записывать основную программу начиная с адреса 0x2000, то при BOOTFROM_IFB = 1 контроллер с неё
не стартует.

Может ли вообще осуществляться запись программой из информационного блока чего-либо по адресам основной Flash 0x0000-0x1FFF?
Как необходимо линковать основную программу, чтобы происходила её загрузка при BOOTFROM_IFB = 1; и можно было перезаписывать
её при помощи загрузчика из информационной области?

bkolbov
Сообщения: 111
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Информационный блок загрузочной Flash

Сообщение bkolbov » 24 окт 2017, 10:58

Добрый день!

Операции записи/стирания flash внутри работы программы должны происходить только из ОЗУ. Т.е. когда запускается загрузчик, он должен быть так слинкован, чтобы во время стартапа все функции, где осуществляется непосредственная работа с регистрами flash, были помещены в ОЗУ. У вас это реализовано?

Дмитрий_0577
Сообщения: 2
Зарегистрирован: 09 окт 2017, 20:29
Предприятие: СФ МЭИ

Re: Информационный блок загрузочной Flash

Сообщение Дмитрий_0577 » 25 окт 2017, 18:41

Да, я нашёл ошибку в своей программе - для контроля верности записи велось чтение записанного, но читалось с информационного блока, а не с основной памяти, и поэтому возникало несоответствие.
Но возник новый вопрос: нет ли какой-либо стандартной утилиты, чтобы можно было вести запись в информационный блок средствами компьютера, через программатор? Чтобы не приходилось для записи загрузчика в информационный блок сначала писать в основной блок специальную программу, которая потом оттуда записывала загрузчик в информационный блок.

bkolbov
Сообщения: 111
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Информационный блок загрузочной Flash

Сообщение bkolbov » 26 окт 2017, 09:16

Любая консольная утилита, которая работает с отладчиком на низком уровне вам поможет - OpenOCD или J-Link Commander, например. Как минимум, они позволяют подключаться к мк, читать/писать внутренние регистры и исполнять определенные скрипты. Поэтому с помощью них можно реализовать сценарии любой сложности.

Драйвер в OpenOCD для К1921ВК01Т, например, умеет понимать что установлен бит ремапа информационной области, когда соединяется с мк. И использует соответствующие команды при прошивке.

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

Кто сейчас на конференции

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