Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bootloader AVR231. Руководство по его применению
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Метценгерштейн
Итак, бутлоадер, это такая же прога, которая льется в ту же flash, что и все остальные проги, но в отличии от них, пишется она в конец памяти. Применительно к этому бутлоадеру, на 2048 байт меньше, чем весь объем flash МК.


скачивает AVR231 с офф. сайта- там он свежий

захожу в папку pctools

1. надо создать файл Config.txt
запускаю из командной строки Total Cmd
gentemp Config.txt

2. открываю его и правлю ручками верхние три строки в соответствии со своим МК и таблицей 3-5 даташита AVR231

3. Создаю ещё два файла BootLdr.h, AESKeys.inc
create -c Config.txt -h BootLdr.h -k AESKeys.inc

4. положил в проект ИАРа два файла наши
BootLdr.h, AESKeys.inc

5. открыл ИАР, открыть проект, выбираю проект со своим МК. НЕ ОТКРЫВАТЬ СРАЗУ ВОРКСПЕЙС!!! ТОЛЬКО свой проект!
выставляю там скорость USART и кварц. В ф-ле bootldr.c в строке

if (!(PIND & (1 << PD2)))

меняю пин на нужный мне- туда надо будет вешать кнопку, замыкающую на землю, подтянутую к +Uпит.

6. прошиваю бутлоадер в мегу с выставленными фузами (BOOTSZ=0, BOOTRST=0)- это 1024 слова или 2кБайт

7. возвращаюсь в папку pctools

8. кладу в неё свои .hex + EEPROM.hex

9. из командной строки
create –c Config.txt –e EEPROM.hex –f Flash.hex –o Update.enc –l BLB11 BLB12

10.создатся файл Update.enc, где уже и еепром и флэш будут вместе объеденины

11.отключил девайс, зажал кнопку свою, включаю девай с зажатой кнопкой, и из-под меню pctools
update Update.enc -COM4 -38400

и у нас все работатет!!!

yeah.gif
sigmaN
Спасибо. Может пригодиться )
Буратино
Спасибо!
Буратино
Подскажите, а как работать с прерываниями для AVR в бутлоадере!?
Сейчас разбираюсь с этим вопросом.
Для IAR делаю вот это и рассчитываю, что этого будет достаточно, но не уверен)

Код
/* Enable change of interrupt vectors */
MCUCR = (1<<IVCE);
/* Move interrupts to boot flash section */
MCUCR = (1<<IVSEL);

Linker IAR настроен на работу с загрузчиком. Загрузчик работает.

Спасибо!

PS

Немного разобрался. Да, больше ничего не нужно. Достаточно переключить таблицу векторов прерываний. Но внимательно следим за фьюзами указывающими на размер бутлоадера, директивами IAR для линкера (секция #define раздела Linker) и собственно формулами расчета адресов/смещений в самом *.xcl файле.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.