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

 
 
 
Reply to this topicStart new topic
> AVR, перезапись boot области
Vladimir_J
сообщение Nov 23 2009, 08:46
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Доброе время суток smile.gif

Можно ли при помощи программы (расположенной в Application Flash Section) зашитой в микроконтроллер, пере прошить boot Flash section (заменить существующий boot на другой). Контролер: ATMEGA2560.

С Уважением, Владимир.
Go to the top of the page
 
+Quote Post
Zlumd
сообщение Nov 23 2009, 09:06
Сообщение #2


Местный
***

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



Цитата(Vladimir_J @ Nov 23 2009, 14:46) *
Можно ли при помощи программы (расположенной в Application Flash Section) зашитой в микроконтроллер, пере прошить boot Flash section (заменить существующий boot на другой). Контролер: ATMEGA2560.
Нет, конечно. Но Boot Flash Section может переписывать саму себя. Только не переписывай страницу из которой в данный момент исполняется код.
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Nov 23 2009, 09:08
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Цитата(Zlumd @ Nov 23 2009, 12:06) *
Нет, конечно. Но Boot Flash Section может переписывать саму себя. Только не переписывай страницу из которой в данный момент исполняется код.


Пасиб за ответ smile.gif beer.gif beer.gif beer.gif
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 23 2009, 10:00
Сообщение #4


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Zlumd @ Nov 23 2009, 12:06) *
Нет, конечно. Но Boot Flash Section может переписывать саму себя. Только не переписывай страницу из которой в данный момент исполняется код.


Можно разбить boot-секцию на 2 части (например пополам) и для каждой из них написать bootloader который будет способен прошивать application и вторую часть (т.е. будет прошивать новый бутлоадер) Только нужно учесть что точка входа по ресету и вектора прерываний для этих двух секции будут одинаковыми.
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Nov 23 2009, 10:23
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Цитата(mempfis_ @ Nov 23 2009, 14:00) *
Можно разбить boot-секцию на 2 части (например пополам) и для каждой из них написать bootloader который будет способен прошивать application и вторую часть (т.е. будет прошивать новый бутлоадер) Только нужно учесть что точка входа по ресету и вектора прерываний для этих двух секции будут одинаковыми.


Спасибо за ответ smile.gif
Вот бредовая мысля появилась, а если к примеру где то в области application по определенному адресу разместить кусок кода, и моно ли его запустить с boot области. Только сильно не бейте wink.gif
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 23 2009, 10:48
Сообщение #6


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Vladimir_J @ Nov 23 2009, 14:23) *
Спасибо за ответ smile.gif
Вот бредовая мысля появилась, а если к примеру где то в области application по определенному адресу разместить кусок кода, и моно ли его запустить с boot области. Только сильно не бейте wink.gif


Озвучте зачем нужно такое извращение? Врятли можно это сделать не поругавшись с линкером. Разве что натыкать в бутлоадере команд ICALL с указанием адресов ваших подпрограмм в области application. Плюс бутлоадер потеряет универсальность - ему придётся обходить участки памяти с вашими подпрограммами а сама программа для application-секции должна будет учитывать возможное расположение функций вызываемых из бутлоадера. У вас есть желание возится с линкером и во всех проектах где будет использоваться такой бутлоадер учитывать эти особенности?
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Nov 23 2009, 11:57
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Цитата(mempfis_ @ Nov 23 2009, 13:48) *
Озвучте зачем нужно такое извращение? Врятли можно это сделать не поругавшись с линкером. Разве что натыкать в бутлоадере команд ICALL с указанием адресов ваших подпрограмм в области application. Плюс бутлоадер потеряет универсальность - ему придётся обходить участки памяти с вашими подпрограммами а сама программа для application-секции должна будет учитывать возможное расположение функций вызываемых из бутлоадера. У вас есть желание возится с линкером и во всех проектах где будет использоваться такой бутлоадер учитывать эти особенности?


Извращение, если к примеру не фатит места в boot области sad.gif
А саму этот кусок кода разместить в самом низу application Flash.
С Уважением, Владимир
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 23 2009, 13:21
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Vladimir_J @ Nov 23 2009, 10:46) *
пере прошить boot Flash section

потеряете безопасность вашего софта и живучесть устройства, т.к.
1. нельзя будет залочить boot область.
2. сбой во время обновления загрузчика приведет к тому, что девайс надо будет слать вам по почте на ремонт..

Цитата(Vladimir_J @ Nov 23 2009, 13:57) *
Извращение, если к примеру не фатит места в boot области sad.gif

А вы разделите бутлоадер на части, первая часть - та которая ведает SPM умеет читать/писать/верифицировать флеш, ее обязательно держите в boot области.
вторая часть - шифрование, тут закрытый ключик надо обязательно хранить в boot области, и локами LPM из app запрещать иначе бестолку все. Ну а коль ключик из application нельзя читать, то и код работающий с ним, тоже должен лежать в boot области.

А все остальное - поддержка разных интерфейсов / протокол общения с программаторами, обновляющим ПО, можно хранить в app.
Очень желательно в boot области оставить поддержку какого-нить одного самого простого интерфейса на случай когда слетает все...
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 23 2009, 14:22
Сообщение #9


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Перечитал даташит на xmegу, там пишут, что во время программирования бутлоадер не может читать коды из application section:

During an on-going programming, the software must ensure that the Application Section is not
accessed. Doing this will halt the program execution from the CPU. The user software can not
read data located in the Application Section during a Boot Loader software operation.

Так что осторожнее надо с размещением части бутлоадера в application.
Go to the top of the page
 
+Quote Post
niXto
сообщение Nov 23 2009, 16:44
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 24-06-09
Из: Беларусь
Пользователь №: 50 607



Цитата(V_G @ Nov 23 2009, 17:22) *
Перечитал даташит на xmegу, там пишут, что во время программирования бутлоадер не может читать коды из application section


Во время самого процесса программирования. Как только запись завершена - бутлодырь может читать все

A Boot Loader (Application code located
in the Boot Loader Section of the Flash) can both read and write the Flash Program Memory,
User Signature Row and EEPROM, and write the Lock Bits to a more secure setting. Application
code in both the Application Section can read from the Flash, User Signature Row, Calibration
Row and Fuses, and read and write the EEPROM.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 23 2009, 23:50
Сообщение #11


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(niXto @ Nov 24 2009, 02:44) *
Во время самого процесса программирования. Как только запись завершена - бутлодырь может читать все

Это естественно. Просто если весь код в бут-секции, вы просто после SPM выходите в основной цикл и можете общаться по интерфейсу и выполнять др. команды, не связанные с SPM,LPM, а если кусок - в application, то лучше после SPM ждать в цикле сигнала готовности. Хотя и не напряжно, согласен.
Тем не менее перепрограммировать бутлоадер или располагать часть его когда в application также считаю вредным. Если не хватает места, оптимизируйте, перепишите на ассемблере и т.п. Хотя собсно в бутлоадере ничего сложного нет, все должно поместиться. Только если крутые алгоритмы шифрования впихивать... Переходите на xmegу, там DES, AES аппаратные, много кода не надо...
Go to the top of the page
 
+Quote Post
Zlumd
сообщение Nov 24 2009, 06:51
Сообщение #12


Местный
***

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



Цитата(V_G @ Nov 23 2009, 20:22) *
Перечитал даташит на xmegу, там пишут, что во время программирования бутлоадер не может читать коды из application section:
Так у автора темы ATMEGA2560 вроде.
У меня на меге128 бутлоадер не влезал в boot section, пришлось часть процедур разместить в Application Section. Часть Application Section залочить действительно не получится, но можно программно в бутлоадере запретить переписывать страницы в App Section, в которых расположены процедуры бутлоадера.
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Nov 24 2009, 08:59
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Огромное спасибо Всем тем кто ответил smile.gif
Придумал как решать данную проблему, по совету defunct, так и поступлю: основной алгоритм будет располагаться в boot области, а все остальные в application зоне.

С Уважением, Владимир smile.gif

p.s. Да прибудет с Вами всеми - УДАЧА smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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