Решил сделать бутлодер для Mega32L. Сделал все, по-моему, как описано в AVR231:
1)Линкеру указал линкерный файл в рабочей директории;
2)В опциях поставил установки для M32, как указано в table 3-4 (avr231);
3)Создал Config.txt:
PAGE_SIZE = 128
MEM_SIZE = 28672
CRC_ENABLE = YES
KEY1 = 0AF5EBEB3E7A77644FDC460048CF80690CEC
KEY2 = 56CFDB56AB33230816
KEY3 = FAFDA97243B3050D21
INITIAL_VECTOR = 4D5EDB8A7B5B8DB381059CA39B3AB955
SIGNATURE = A9E4781E
4)Создал BootLdr.h, AESKeys.inc :
create -c Config.txt -h BootLdr.h -k AESKeys.inc
5)Скомпилировал проект bootldr32 с подключенными файлами BootLdr.h, AESKeys.inc
Кварц 8 МГц, UBRRL = 25; // 19200 baud @ 8MHz, error 0.2%
6)Прошил в Mega32L bootldr32.hex с запрограммированными фьюзами BOOTSZ=0, BOOTRST=0, BLB1=0, BLB0=3, -L2 (LB2:LB1 -> 0 0);
5)Закодировал программный файл (~9k):
create -c Config.txt -f pribor.hex -o Update.enc -l BLB11 BLB12
6)При нажатой кнопке PROG осуществил сброс контроллера, чтобы запустить программу загрузчика:
if (!(PINA & (1 << PROG))) // Key pressed? Yes -> run the loader routine
Загрузил полученный файл Update.enc в контроллер:
update Update.enc -COM1 -19200
7)В итоге передача успешно завершилась.
А в ответ тишина... В смысле программа не работает. Работоспособность проверяю пищалкой. В начале программы после инициализации портов вставил секундное пищание. Если загрузить напрямую (без бутлодера) , все работает. Какие будут соображения?
P.S. Вообще, мне удавалось добиться работоспособности программы (по крайней мере пищания) зашифрованной программы. Но не могу добиться устойчивой работы бутлодера. Иногда после прошивки (AES-бутлодером) и после сброса программа никак не реагирует. Иногда вдруг начинает пищать спустя некоторое время . Смущает эта неопределенность. Бывало и так, что все работало сразу после загрузки. Затем повторяю те же действия (hex->encoding->update) и опять тишина.
java script:emoticon(':07:', 'smid_5')
Может быть причина в кварце? В апноте есть замечание по этому поводу установки скорости USART. Имеет ли смысл заменить кварц на 7,3728Мгц?