реклама на сайте
подробности

 
 
> Вызов функций из bootloader, IAR AVR
sevstels
сообщение Feb 16 2017, 05:20
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



В приложении необходимо переписывать таблицы констант расположенные в FLASH. Для этого требуется вызывать подпрограмму расположенную в boot-секторе. Но не всё так просто как кажется! Boot-sector полностью занял bootloader и при загрузке или обновлении приложения через бут, этот кусочек кода bootloader ом отбрасывается, тк секция защищена от записи сама в себя. И получается невозможным реализовать запись приложения во FLASH тк отсутствует нужная подпрограмма.

Остаётся попробовать пользоваться функциями записи самого bootloader. Попробовал, не работает.
Как делал:

1. Смотрю адрес нужной функции в IAR map файле:
flash_page_write CODE 0001F72E

2. Создаю в основной программе указатель:
void (*flash_page_write)(unsigned short) = (void (*)(unsigned short))0x1F72E;
При этом IAR выдаёт предупреждение. Warning[Pe1053]: conversion from integer to smaller pointer

3. Записываю в кристалл boot, затем с его помощью загружаю и запускаю приложение.
4. Пытаюсь записать страницу памяти.

Затем всё зависает. Вероятно не происходит возврата из вызванной функции.
Посмотреть отладчиком что происходит не получается.

Вопрос такой. Если boot-сектор залочен от чтения и записи, выполняются ли из него вызовы из приложения?
Что делаю не так?

Сообщение отредактировал sevstels - Feb 16 2017, 05:30


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 13:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01457 секунд с 7
ELECTRONIX ©2004-2016