Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR, перезапись boot области
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vladimir_J
Доброе время суток smile.gif

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

С Уважением, Владимир.
Zlumd
Цитата(Vladimir_J @ Nov 23 2009, 14:46) *
Можно ли при помощи программы (расположенной в Application Flash Section) зашитой в микроконтроллер, пере прошить boot Flash section (заменить существующий boot на другой). Контролер: ATMEGA2560.
Нет, конечно. Но Boot Flash Section может переписывать саму себя. Только не переписывай страницу из которой в данный момент исполняется код.
Vladimir_J
Цитата(Zlumd @ Nov 23 2009, 12:06) *
Нет, конечно. Но Boot Flash Section может переписывать саму себя. Только не переписывай страницу из которой в данный момент исполняется код.


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


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


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


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


Извращение, если к примеру не фатит места в boot области sad.gif
А саму этот кусок кода разместить в самом низу application Flash.
С Уважением, Владимир
defunct
Цитата(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 области оставить поддержку какого-нить одного самого простого интерфейса на случай когда слетает все...
V_G
Перечитал даташит на 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.
niXto
Цитата(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.
V_G
Цитата(niXto @ Nov 24 2009, 02:44) *
Во время самого процесса программирования. Как только запись завершена - бутлодырь может читать все

Это естественно. Просто если весь код в бут-секции, вы просто после SPM выходите в основной цикл и можете общаться по интерфейсу и выполнять др. команды, не связанные с SPM,LPM, а если кусок - в application, то лучше после SPM ждать в цикле сигнала готовности. Хотя и не напряжно, согласен.
Тем не менее перепрограммировать бутлоадер или располагать часть его когда в application также считаю вредным. Если не хватает места, оптимизируйте, перепишите на ассемблере и т.п. Хотя собсно в бутлоадере ничего сложного нет, все должно поместиться. Только если крутые алгоритмы шифрования впихивать... Переходите на xmegу, там DES, AES аппаратные, много кода не надо...
Zlumd
Цитата(V_G @ Nov 23 2009, 20:22) *
Перечитал даташит на xmegу, там пишут, что во время программирования бутлоадер не может читать коды из application section:
Так у автора темы ATMEGA2560 вроде.
У меня на меге128 бутлоадер не влезал в boot section, пришлось часть процедур разместить в Application Section. Часть Application Section залочить действительно не получится, но можно программно в бутлоадере запретить переписывать страницы в App Section, в которых расположены процедуры бутлоадера.
Vladimir_J
Огромное спасибо Всем тем кто ответил smile.gif
Придумал как решать данную проблему, по совету defunct, так и поступлю: основной алгоритм будет располагаться в boot области, а все остальные в application зоне.

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

p.s. Да прибудет с Вами всеми - УДАЧА smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.