|
|
  |
Проблема с Bootloader, изменять код бутлоадера |
|
|
|
Oct 24 2005, 14:07
|

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

|
Здравствуйте!
У меня возник следующий вопрос: может ли функция, находящаяся в Application Section (Atmega 128), изменять код Boot Loader Section или нет? Я пробовал вызывать эту ф-ю из программной области и из области бутлоадера, но данные в секции бутлоадера изменялись только во втором случае, хотя во всех ячейках защиты прописан полный доступ к обеим секциям!?
Если код из прикладной области неспособен изменить бутлоадер, то как тогда может бутлоадер перепрошить сам себя (очень нужна такая возможность, т.к. прошивка передается по модему и хотелось бы менять не только програмную область, но и область бутлоадера)?!
P.S: Подскажите пожалуйста.
|
|
|
|
|
Oct 24 2005, 15:28
|

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

|
Цитата(rezident @ Oct 24 2005, 18:49) А почему бы не написать свой бутлоадер, который лежит в Application Section и обновлять именно его? У меня мой бутлоадер сидит в секции "Boot Loader Section", а в "Application Section" у меня основные программы. Бутлоадер изменяет "Application Section", т.е. заливает туда новую прошивку, а мне еще нужна возможность изменять сам булоадер, но не через программатор, а также как я изменяю прошивку в "Application Section", т.е. по модему.
|
|
|
|
|
Oct 25 2005, 07:11
|

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

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

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

|
Цитата(IgorKossak @ Oct 25 2005, 14:11) Или, например, так. Загрузчик1 может обновить программу пользователя и Загрузчик2, а Загрузчик2 - только Загрузчик1. Основная фишка в том, что перед тем, как писАть, надо стереть страницу. Поэтому в *.xcl файле надо выделить две области для загрузчиков строго по границе страницы. В этом случае решение задачи видится довольно просто. Вообщем то и я про это говорил. Извените если не внятно выразился. Фишка имеено в том что нельзя работать и стирать один и тот же сегмент.
--------------------
OrCAD, Altium,IAR, AVR....
|
|
|
|
|
Oct 25 2005, 07:39
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(arttab @ Oct 25 2005, 08:42) ... Как исключение знаю только NEC. у него 2 флеши и пока обнавляется одна, программа работает с другой. А после обнавления программа запускоется с обнавленой флеш. Если есть желание заплаить за двойной объем флаша - бери... Давайте определим, что Вам нужно и назовем цену. Возможно, когда цена будет названа, то желание появится! Итак, нужен микроконтроллер NEC - .... А минимальный стартовый набор - 30 долл. А на 32-х битный - 100 долл. Пишите. Поставка с ближайшего Элтеха. Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Oct 26 2005, 00:38
|

Группа: Новичок
Сообщений: 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 бутлоадера.
|
|
|
|
|
Oct 26 2005, 22:00
|

Частый гость
 
Группа: Свой
Сообщений: 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).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|