|
Самообновление bootloader AVR |
|
|
|
 |
Ответов
|
Feb 3 2011, 10:54
|
Частый гость
 
Группа: Участник
Сообщений: 172
Регистрация: 9-10-06
Пользователь №: 21 119

|
Цитата(dimka76 @ Feb 3 2011, 14:16)  1. Можно новую копию загрузчика зашить в область приложения, потом передать управление этой новой версии прошивки и она скопирует сама себя в область загрузчика.
2. Либо иметь область загрузчика размером (выраженном в страницах) таким, чтобы в ней помещалось два загрузчика. Далее алгоритм такой же как и в первом случае, только все действия происходят в области загрузчика. 1. В AVR109 (и в даташитах) сказано, что SPM команды могут выполняться только из области загрузчика 2. А как 2 загрузчика будут использовать общую область векторов прерываний, которая фьюзами устанавливается на начало области загрузчика? К тому же не всегда можно позволить выделить двойную область под загрузчик, зачастую его размер превышает половину максимального размера области загрузчика.
|
|
|
|
|
Feb 3 2011, 11:25
|
Частый гость
 
Группа: Участник
Сообщений: 172
Регистрация: 9-10-06
Пользователь №: 21 119

|
Цитата(_Pasha @ Feb 3 2011, 15:06)  это лок-фузами делается, там разница в том, что это NRWW секция и проц останавливается на время записи страницы. Если я правильно понял, то имеется в виду, что функция записи страницы должна находиться в NRWW секции основной программы. Но это неприменимо если размер загрузчика превышает половину максимального размера области загрузчика.
|
|
|
|
|
Feb 3 2011, 11:53
|
Частый гость
 
Группа: Участник
Сообщений: 172
Регистрация: 9-10-06
Пользователь №: 21 119

|
Цитата(_Pasha @ Feb 3 2011, 15:31)  Не обязательно. Из AVR109: "The SPM instruction can only be executed from the Boot Loader section."
|
|
|
|
|
Feb 3 2011, 13:49
|
Частый гость
 
Группа: Участник
Сообщений: 172
Регистрация: 9-10-06
Пользователь №: 21 119

|
Цитата(_Pasha @ Feb 3 2011, 17:36)  Значит, путь один - только макс. размер загрузчика и поддержка его двух копий. А как же таблица векторов прерываний - ведь она будет в первом бутлодере.
Сообщение отредактировал MVJ - Feb 3 2011, 13:57
|
|
|
|
|
Feb 4 2011, 10:52
|
Частый гость
 
Группа: Участник
Сообщений: 172
Регистрация: 9-10-06
Пользователь №: 21 119

|
Цитата(Палыч @ Feb 3 2011, 18:21)  ..сделать это "дешевле" в два приёма. 1. Загружается в Application Section программа загрузки bootloader'а. 2. Эта программа зашивает уже сам загрузчик.
Проблема с SPM - надуманная: достаточно в конце области BLS иметь код - типа функции Do_spm из примеров загрузчиков от Atmel. При необходимости программа из Application Section к нему обращается по заранее известному адресу... Поскольку перед записью страницы ее нужно очистить, то получается, что страницу, содержащую Do_spm переписать нельзя. Тогда прошивка МК должна содержать 3 секции: приложение, загрузчик и секция с Do_spm(в концеNRWW). Первые две перекрестно обновляются, а 3-я обновлению не подлежит. Цитата(Палыч @ Feb 4 2011, 14:13)  Я тоже был удивлён необходимостью обновления загрузчика, но потом, в оправдание автора топика, в голову пришла мысль - для чего это может быть использовано. Например, устройство имеет несколько интерфейсов для общения с "внешним миром" Действительно МК имеет 2 интерфеса (СОМ-порта) для общения с "внешним миром": на однои RS485, на другом GSM-модем, который получает обновление для МК и хранит его в своей памяти. С обновлением через RS485 проблем нет, а вот при обновлении с GSM-модема загрузчик должен кроме всего прочего поддерживать минимальную функциональность модема. Здесь есть некоторые ньюансы, которые, возможно будет необходимость подправить. Отсюда и такой большой размер загрузчика (~3k) и желание иметь возможность его обновлять.
|
|
|
|
|
Mar 23 2011, 11:04
|

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

|
Цитата(MVJ @ Feb 4 2011, 14:52)  Действительно МК имеет 2 интерфеса (СОМ-порта) для общения с "внешним миром": на однои RS485, на другом GSM-модем, который получает обновление для МК и хранит его в своей памяти. С обновлением через RS485 проблем нет, а вот при обновлении с GSM-модема загрузчик должен кроме всего прочего поддерживать минимальную функциональность модема. Здесь есть некоторые ньюансы, которые, возможно будет необходимость подправить. Отсюда и такой большой размер загрузчика (~3k) и желание иметь возможность его обновлять. А памяти под прошивку на плате нет? У меня тоже есть подобные устройства. Во всех загрузчик просто проверяет наличие обновления в внешней flash, обновляет основную прошивку при наличии обновления, проверяет целостность и производит восстановление при сбое. Сам он не занимается скачиванием прошивок. Для этого предусмотрена основная программа которая может принимать прошивку по gprs, USB или com-порту и ложит её в внешнюю загрузочную память. Мне страшно представить если во время обновления загрузчика произойдёт сбой (например кратковременно пропадёт питание) - кто его (загрузчик) восстановит. Поэтому ИМХО правильней загрузчик не обновлять вообще!
Сообщение отредактировал mempfis_ - Mar 23 2011, 11:05
|
|
|
|
Сообщений в этой теме
MVJ Самообновление bootloader AVR Feb 3 2011, 09:11             Палыч Цитата(MVJ @ Feb 4 2011, 13:52) ...то пол... Feb 4 2011, 11:21              MVJ Цитата(Палыч @ Feb 4 2011, 15:21) Если ра... Feb 4 2011, 12:23      dimka76 Цитата(MVJ @ Feb 3 2011, 14:53) Из AVR109... Feb 4 2011, 06:34       _Pasha Цитата(dimka76 @ Feb 4 2011, 10:34) Дейст... Feb 4 2011, 07:50        dimka76 Цитата(_Pasha @ Feb 4 2011, 10:50) А там,... Feb 4 2011, 08:01        Палыч Цитата(_Pasha @ Feb 4 2011, 10:50) А там,... Feb 4 2011, 08:46         _Pasha Цитата(Палыч @ Feb 4 2011, 12:46) Если хо... Feb 4 2011, 09:03 kovigor Цитата(MVJ @ Feb 3 2011, 12:11) В даташит... Feb 4 2011, 10:01 Палыч Цитата(kovigor @ Feb 4 2011, 13:01) Загру... Feb 4 2011, 10:13  delamoure Цитата(Палыч @ Feb 4 2011, 12:13) Я тоже ... Feb 14 2011, 10:38 _Pasha Я тут подумал,как оно должно выглядеть.
1. Имеется... Feb 4 2011, 16:03 BigallS Есть хорошая статья по этой теме http://easyelectr... Mar 23 2011, 10:43
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|