Расположение данных по нулевому адресу...

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Расположение данных по нулевому адресу...

Сообщение demiurg301 »

Здравсвуйте, котаны

Интересные вопросы назрели.
Может кто сталкивался.
Как правильно организовать заголовок прошивки и бутлоадера.

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

на сколько я понимаю, это нельзя сделать без разбиения бутлоадера на две части?
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Расположение данных по нулевому адресу...

Сообщение Martian »

Ничё не понял.Заголовок всегда впереди, на то он и заголовок. Бутлоадер можно разместить где угодно, и основную программу можно разместить где угодно.
И лучше конкретизировать мк.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: Расположение данных по нулевому адресу...

Сообщение demiurg301 »

[uquote="Martian",url="/forum/viewtopic.php?p=4381845#p4381845"]Ничё не понял.Заголовок всегда впереди, на то он и заголовок. Бутлоадер можно разместить где угодно, и основную программу можно разместить где угодно.
И лучше конкретизировать мк.[/uquote]


CortexM4... Китаёзный.

Я к тому, что если мы размещаем бут по нулевому адресу, то впереди него мы ж не сможем положить данные.
Нужен какой то dummy код , который просто прыгнет по адресу бутлоадера?
Заодно и валидирует всё в соответствии с заголовком
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Расположение данных по нулевому адресу...

Сообщение VladislavS »

Сколько данных? В таблице векторов прерываний обычно есть пустое место, часто этого достаточно.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: Расположение данных по нулевому адресу...

Сообщение demiurg301 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4381911#p4381911"]Сколько данных? В таблице векторов прерываний обычно есть пустое место, часто этого достаточно.[/uquote]


Больше килобайта. ключи , подписи, хэши.
Да и не хотелось бы это располагать в векторах.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Расположение данных по нулевому адресу...

Сообщение VladislavS »

Килобайт сразу за таблицей векторов расположить точно так же как саму таблицу векторов.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Расположение данных по нулевому адресу...

Сообщение roman.com »

Бутлоадер...
никада не работал с бутлоадер))
:roll:
а эта штука работает по интернету ? или только по тупому UART ? ))
по UART не интересно...
:sleep:
по интернету интересно)) это можно заливать прошивку удалённо по интернету... типа как в роутере))
:idea: :roll:
надо будет над этим поработать...
:tea:
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Расположение данных по нулевому адресу...

Сообщение musor »

это смотря какой BOOT иногда там не толка процедура записи флеш прописана но инициализациявсех портоф и дисплея куда выводится POST но такой в 1к арядли влезет впрочем примеры таки есть в любители экзотики 512бт впихивали
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Расположение данных по нулевому адресу...

Сообщение BOB51 »

[uquote="roman.com",url="/forum/viewtopic.php?p=4381938#p4381938"]...
а эта штука работает по интернету ? или только по тупому UART ? )) ...
по интернету интересно)) это можно заливать прошивку удалённо по интернету... типа как в роутере))
:idea: :roll:
надо будет над этим поработать...
:tea:[/uquote]
Те же мобильные телефоны как один из примеров.
Второе - удаленное обновление ПО в модемах и для ESP...
Тут уж как угодно сделать можно. Начальному загрузчику что тырнет, что UART, что древни "проводки" - это всего лишь КАНАЛ ОБМЕНА данными. Главное чтобы МК (или самоделка) имел возможность "самоперепрошивки" ПЗУ.
8)
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Расположение данных по нулевому адресу...

Сообщение roman.com »

угу )) осталось только написать... этот самозагрузчик))
:tea:
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5723
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: Расположение данных по нулевому адресу...

Сообщение >TEHb< »

Так пускай заголовок будет в файле прошивки, а при самой прошивке отрезайте его. В микроконтроллере есть процессор, который с этим справится.
"Привет!" - соврал он.
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Расположение данных по нулевому адресу...

Сообщение musor »

далеконе в каждом там должен быть мапинг ROM областей с возможностью заблокировать запись в бут иначе нихрена не выйдет....
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: Расположение данных по нулевому адресу...

Сообщение demiurg301 »

[uquote=">TEHb<",url="/forum/viewtopic.php?p=4383707#p4383707"]Так пускай заголовок будет в файле прошивки, а при самой прошивке отрезайте его. В микроконтроллере есть процессор, который с этим справится.[/uquote]

так заголовок для бутлоадера должен идти впереди
А впереди нельзя.
Значит надо его располагать сзади.
Но тогда надо переделываться бинарь
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5723
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: Расположение данных по нулевому адресу...

Сообщение >TEHb< »

Не, не получается у меня в толк взять. Вот есть файл с заголовками всякими. Отправляете его в микроконтроллер, тот этот файл анализирует, заголовки отбрасывает, а прошивку складывает куда надо. Что не так?
"Привет!" - соврал он.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: Расположение данных по нулевому адресу...

Сообщение demiurg301 »

[uquote=">TEHb<",url="/forum/viewtopic.php?p=4385962#p4385962"]Не, не получается у меня в толк взять. Вот есть файл с заголовками всякими. Отправляете его в микроконтроллер, тот этот файл анализирует, заголовки отбрасывает, а прошивку складывает куда надо. Что не так?[/uquote]

Кто заголовок готовить будет? Прицеплять его впереди прошивки.
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5723
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: Расположение данных по нулевому адресу...

Сообщение >TEHb< »

Так это же совсем другая задача!
"Привет!" - соврал он.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: Расположение данных по нулевому адресу...

Сообщение demiurg301 »

[uquote=">TEHb<",url="/forum/viewtopic.php?p=4385995#p4385995"]Так это же совсем другая задача![/uquote]

Это всё связанные задачи

В принципе я нашёл решение.

Для билда кастомного бинаря я испольую такой линкер.

Код: Выделить всё

BOOT_HEADER_SHADOW		: ORIGIN = 0x8000000 - LENGTH(_HEADER_SIZE),												
BOOTLOADER_FLASH(rx) 		: ORIGIN = 0x8000000,                     						                			
APP_HEADER_PARAM  (rx)	: ORIGIN = 0x8000000 + LENGTH(_BOOTLOADER_SIZE),  		                        			
FIRMWARE_FLASH (rx)   	: ORIGIN = 0x8000000 + LENGTH(_BOOTLOADER_SIZE)+LENGTH(_HEADER_SIZE),					    
BOOT_HEADER_PARAM  (rx)	: ORIGIN = 0x8000000 + LENGTH(_ROM_SIZE) - LENGTH(_BOOTLOADER_SIZE) - LENGTH(_HEADER_SIZE), 
BOOT_COPY(rx)				: ORIGIN = 0x8000000 + LENGTH(_ROM_SIZE) - LENGTH(_BOOTLOADER_SIZE), 						
сам бут переносит свой заголовок в конец флеша.
Все данные о прошивке уже лежат впереди бинаря.
Остаётся только посчитать CRC и добавить его в заголовок, что можно сделать чуть не вручную. В итоге сложность постбилда сокращается.

Хз, может тут и есть подводные камни...
Ответить

Вернуться в «Разные вопросы по МК»