Решил сделать бутлодер для 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Мгц?
|