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

 
 
 
Reply to this topicStart new topic
> Проблема с Bootloader, изменять код бутлоадера
Gematogen
сообщение Oct 24 2005, 14:07
Сообщение #1





Группа: Новичок
Сообщений: 13
Регистрация: 18-10-05
Пользователь №: 9 808



Здравствуйте!

У меня возник следующий вопрос: может ли функция, находящаяся в Application Section (Atmega 128), изменять код Boot Loader Section или нет?
Я пробовал вызывать эту ф-ю из программной области и из области бутлоадера, но данные в секции бутлоадера изменялись только во втором случае, хотя во всех ячейках защиты прописан полный доступ к обеим секциям!?

Если код из прикладной области неспособен изменить бутлоадер, то как тогда может бутлоадер перепрошить сам себя (очень нужна такая возможность, т.к. прошивка передается по модему и хотелось бы менять не только програмную область, но и область бутлоадера)?!

P.S:
Подскажите пожалуйста.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 24 2005, 14:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А почему бы не написать свой бутлоадер, который лежит в Application Section и обновлять именно его?
Go to the top of the page
 
+Quote Post
Gematogen
сообщение Oct 24 2005, 15:28
Сообщение #3





Группа: Новичок
Сообщений: 13
Регистрация: 18-10-05
Пользователь №: 9 808



Цитата(rezident @ Oct 24 2005, 18:49)
А почему бы не написать свой бутлоадер, который лежит в  Application Section и обновлять именно его?
*


У меня мой бутлоадер сидит в секции "Boot Loader Section", а в "Application Section" у меня основные программы. Бутлоадер изменяет "Application Section", т.е. заливает туда новую прошивку, а мне еще нужна возможность изменять сам булоадер, но не через программатор, а также как я изменяю прошивку в "Application Section", т.е. по модему.
Go to the top of the page
 
+Quote Post
arttab
сообщение Oct 25 2005, 04:19
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



попробуйте в области загрузчика разместить функцию обнавления загрузчика. Т.е. в области загрузчика у Вас 2 функции: обнавления кода программы и обновление загрузчика. В этом варианте последняя фуекция без возможности обновления.
А если сделать 3 функции: обнавления кода программы, обновление загрузчика1 и обновление загрузчика2, то можно все обновить :))
Фишка в том что сама себя функция обновить не может. Код работает толька с флеша и его работа будет нарушена при попытки переписать самого себя.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 25 2005, 04:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(arttab @ Oct 25 2005, 10:19)
Фишка в том что сама себя функция обновить не может. Код работает толька с флеша и его работа будет нарушена при попытки переписать самого себя.
*

А, ну да. Это же дурацкая система AVR, я что-то не сообразил сразу. cranky.gif
Go to the top of the page
 
+Quote Post
arttab
сообщение Oct 25 2005, 05:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



И почти всех остальных мк. Как исключение знаю только NEC. у него 2 флеши и пока обнавляется одна, программа работает с другой. А после обнавления программа запускоется с обнавленой флеш. Если есть желание заплаить за двойной объем флаша - бери. Примечание: исполняемая программа должна помещаться в пределах какого то одного банка флаш. одновременно использовать оба банка нельзя.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 25 2005, 07:11
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(arttab @ Oct 25 2005, 07:19)
попробуйте в области загрузчика разместить функцию обнавления загрузчика.  Т.е. в области загрузчика у Вас 2 функции: обнавления кода программы и обновление загрузчика. В этом варианте последняя фуекция  без возможности обновления.
А если сделать 3 функции: обнавления кода программы, обновление загрузчика1 и обновление загрузчика2, то можно все обновить smile.gif)
Фишка в том что сама себя функция обновить не может. Код работает толька с флеша и его работа будет нарушена при попытки переписать самого себя.
*

Или, например, так. Загрузчик1 может обновить программу пользователя и Загрузчик2, а Загрузчик2 - только Загрузчик1.
Основная фишка в том, что перед тем, как писАть, надо стереть страницу.
Поэтому в *.xcl файле надо выделить две области для загрузчиков строго по границе страницы.
В этом случае решение задачи видится довольно просто.
Go to the top of the page
 
+Quote Post
arttab
сообщение Oct 25 2005, 07:38
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Цитата(IgorKossak @ Oct 25 2005, 14:11)
Или, например, так. Загрузчик1 может обновить программу пользователя и Загрузчик2, а Загрузчик2 - только Загрузчик1.
Основная фишка в том, что перед тем, как писАть, надо стереть страницу.
Поэтому в *.xcl файле надо выделить две области для загрузчиков строго по границе страницы.
В этом случае решение задачи видится довольно просто.
*


Вообщем то и я про это говорил. Извените если не внятно выразился. Фишка имеено в том что нельзя работать и стирать один и тот же сегмент.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 25 2005, 07:39
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(arttab @ Oct 25 2005, 08:42)
... Как исключение знаю только NEC. у него 2 флеши и пока обнавляется одна, программа работает с другой. А после обнавления программа запускоется с обнавленой флеш.  Если есть желание заплаить за двойной объем флаша - бери...
*


Давайте определим, что Вам нужно и назовем цену. Возможно, когда цена будет названа, то желание появится!
Итак, нужен микроконтроллер NEC - ....
А минимальный стартовый набор - 30 долл.
А на 32-х битный - 100 долл.
Пишите.
Поставка с ближайшего Элтеха.
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
IEC
сообщение Oct 25 2005, 07:47
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



А возможен ли такой вариант: из BootLoader шить Application, а из Application шить BootLoader? Вариант интересный! Стоит проверить!
ЗЫ: Возможно ли это в теории - не помню. Давно работал.
Go to the top of the page
 
+Quote Post
Gematogen
сообщение Oct 26 2005, 00:38
Сообщение #11





Группа: Новичок
Сообщений: 13
Регистрация: 18-10-05
Пользователь №: 9 808



Цитата(IEC @ Oct 25 2005, 11:47)
А возможен ли такой вариант: из BootLoader шить Application, а из  Application шить  BootLoader? Вариант интересный! Стоит проверить!
ЗЫ: Возможно ли это в теории - не помню. Давно работал.
*




Я действительно был сам озадачен данной проблемой, но на практике код из Application не изменял секцию Bootloader'a. Хотя в одной авторитетной книжке (не помню точного названия, нет сейчас ее под рукой) было написано, что BLB биты изменяют уровень доступа к секциям (если все 1, то моно писать во все секции) и как мне показалось эти биты определяют возм-ть писать и читать из секции Bootloader'a в секцию Application и наоборот. Поэтому я и задавал этот вопрос, надеясь на лучшее (такая возм-ть была бы удобней), но видимо BLB биты определяют только уровень доступа к каждой из секций, а код осуществляющий это должен быть обязательно в Bootloader section.

Спасибо всем за советы!!!
Пойду ваять новый Release Candidate бутлоадера. smile3046.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 26 2005, 21:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(arttab @ Oct 25 2005, 13:38)
Вообщем то и я про это говорил. Извените если не внятно выразился. Фишка имеено в том что нельзя работать и стирать один и тот же сегмент.
*

MSP430 может исполнять программу из Flash и одновременно писать во Flash. Правда у него BootLoader в ROM расположен и нестираемый. Но не в этом суть. Обычно BootLoader-ом грузят в ОЗУ "прошивальщик" и передают ему управление. А уже эта программа-"прошивальщик" программирует всю остальную Flash, включая область векторов прерываний. Сорри за наивный вопрос, в AVR это разве не так?
Go to the top of the page
 
+Quote Post
starter48
сообщение Oct 26 2005, 22:00
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 15-10-05
Из: Томск
Пользователь №: 9 680



Цитата(rezident @ Oct 27 2005, 04:49)
Цитата(arttab @ Oct 25 2005, 13:38)
Вообщем то и я про это говорил. Извените если не внятно выразился. Фишка имеено в том что нельзя работать и стирать один и тот же сегмент.
*

MSP430 может исполнять программу из Flash и одновременно писать во Flash. Правда у него BootLoader в ROM расположен и нестираемый. Но не в этом суть. Обычно BootLoader-ом грузят в ОЗУ "прошивальщик" и передают ему управление. А уже эта программа-"прошивальщик" программирует всю остальную Flash, включая область векторов прерываний. Сорри за наивный вопрос, в AVR это разве не так?
*


AVR не может исполнять код из ОЗУ. BootLoader у AVR лежит во Flash т.е. BootLoader у него - кусок Flash, размер которого задаётся битами конфигурации (fuses). Битами же ставится режим сброса: переход на начало Flash или на BootLoader (его секция в конце Flash).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:17
Рейтинг@Mail.ru


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