Цитата(Jhohn @ Nov 11 2010, 15:12)

Вы правы, я думал, что он должен был создавать файл без вставки CRC, и что при создании файла CRC не учитывается. В этом была ошибка, при создании шифрованного файла он подсчитывает CRC, я отключил CRC:
Код
CRC_ENABLE = NO
и заветный файл создался.
Спасибо!
Хм.
Опишу собственный опыт применения решения Atmel для реализации бутлоадера с шифрованием AES для микроконтроллера atmega16 (я думаю, что atmel не стал придумывать новых сущностей для других контроллеров и нижеследующее поможет топикстартеру):
1. Сначала создаем config.txt с ключами:
gentemp.exe config.txt
2. Редактируем config.txt, где задаем параметры PAGE_SIZE, MEM_SIZE, по даташиту для своего микроконтроллера.
3. Создаем файлы для проекта бутлоадера, который впоследствии будем прошивать в микроконтроллер:
create.exe -c config.txt -h bootldr.h -k AESkeys.inc
(Если CRC_ENABLE = YES, то в файле bootldr.h появится строка #define CRC_CHECK)
4. Компилируем проект бутлоадера, способного принять наш файл *.enc, закодированный ключами из созданного в п. 1 config.txt, вставив туда сгенерированные в п. 3 файлы.
Если в проекте была определено CRC_CHECK, то бутлоадер при старте будет проверять контрольную сумму всей прошивки в памяти, и, при несовпадении, переходить в цикл ожидания данных.
Вот кусок кода из bootldr.c:
Код
#ifdef CRC_CHECK
// Check that the Application Section contents is undamaged
// by calculating the CRC of the whole memory.
{
unsigned int crc = 0;
unsigned char APPFLASH *p = (unsigned char APPFLASH *)0x000000;
unsigned char APPFLASH *n = (unsigned char APPFLASH *)MEM_SIZE;
do
{
crc = CRC(crc, *p++);
}
while (--n);
// Application Section damaged
// -> do not jump to Reset Vector of the Application Section
if (crc)
continue;
}
5. Прошиваем проект бутлоадера в микроконтроллер, выставив фьюзы запуска бутлоадера после сброса.
6. Генерируем файл *.enc для последующей загрузки его бутлоадером
create.exe -c config.txt -f test.hex -o update.enc
7. Включаем отладочную плату и обновляем прошивку:
update.exe update.enc -COM1 -115200
Все.
Сейчас лезть в код бутлоадера мне недосуг, но помнится, что контрольную сумму бутлоадер вычисляет и записывает сам. Т. е. параметр CRC_ENABLE не должен влиять на создание файла *.enc.
Цитата(Jhohn @ Nov 11 2010, 15:12)

Config.txt:Код
PAGE_SIZE = 256
MEM_SIZE = 57344
CRC_ENABLE = YES
KEY1 = FE6807733E9702E34D6759A56A8D4A46078E
KEY2 = 1F555D210E89036971
KEY3 = FE0EE7FD837569EFE4
INITIAL_VECTOR = 789280B50E473F2303EB08E795D5A72F
SIGNATURE = 8FB5DF40
- результат тот же: файл
update.enc не создается
Я проверил у себя с этими параметрами и файл создался .
Загадка...
На всякий случай: файл create.exe из примера avr230, размер 208 КБ (213 809 байт), создан 15 января 2007 г.
Может atmel в примере 231 все кардинально поменял? Не верится.
Кстати, проверил у себя. Вот ответ программы create.exe:
D:\Test>create.exe -c config.txt -f flash.hex -o update.enc
create v1.0AES - Copyright © 2005 Atmel Corporation
Using the following arguments:
Config filename: config.txt
Flash filename: flash.hex
Output filename: update.enc
The following configuration will be used:
Encryption = 256-bit AES, cipher block chaining mode
KEY1 = FE6807733E9702E34D6759A56A8D4A46078E
KEY2 = 1F555D210E89036971
KEY3 = FE0EE7FD837569EFE4
INITIAL_VECTOR = 789280B50E473F2303EB08E795D5A72F
SIGNATURE = 8FB5DF40
PAGE_SIZE = 256
MEM_SIZE = 256
CRC_ENABLE = YES
Read flash.hex!
Error: Overlapping memory assignments in file .
Type "create <enter>" for usage.
Что-то не так с вашим файлом flash.hex, по-моему.
Откуда вы его взяли, такой короткий (кстати)?

Извиняюсь, файл flash.hex тут ни при чем.
У меня создать update.enc получилось, изменив MEM_SIZE = 57344,
вот ответ программы create.exe:
D:\Test>create.exe -c config.txt -f flash.hex -o update.enc
create v1.0AES - Copyright © 2005 Atmel Corporation
Using the following arguments:
Config filename: config.txt
Flash filename: flash.hex
Output filename: update.enc
The following configuration will be used:
Encryption = 256-bit AES, cipher block chaining mode
KEY1 = FE6807733E9702E34D6759A56A8D4A46078E
KEY2 = 1F555D210E89036971
KEY3 = FE0EE7FD837569EFE4
INITIAL_VECTOR = 789280B50E473F2303EB08E795D5A72F
SIGNATURE = 8FB5DF40
PAGE_SIZE = 256
MEM_SIZE = 57344
CRC_ENABLE = YES
Read flash.hex!
Wrote update.enc!
Create finished successfully.
D:\Test>pause
Для продолжения нажмите любую клавишу . . .
Результат выслать?