|
AES bootloader от Atmel (AVR231), Кто разбирался с данным примером? |
|
|
|
Sep 25 2007, 22:27
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(SasaVitebsk @ Sep 26 2007, 01:09)  Некоторые моменты мне непонятны. Там момент на моменте и моментом погоняет  собствено загрузка написана левой ногой и содержит явные ошибки в обработке ошибок передачи. Сам стиль 'C' какой-то кондовый  , даже у EWARM компилятора (какой-то из первых 4.xx) крышу снесло при оптимизации. Разбираться не стал, просто переписал более-менее по человечески. Брал только сам AES (исходники там тоже не фонтан что-то с железного дешифратора похоже тянули, но вполне компактны, как ни страннно, получаются), загрузочный формат сделал текстовый в стиле INTEL HEX для заливки любым терминалом, соответственно XON/XOFF для управления. Для специализированного терминала еще ACK/NAK/CAN выдаются. Хотя знаю людей, которые просто используют "как есть" и ничем не заморачиваются.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 27 2007, 06:03
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Сергей Борщ @ Sep 26 2007, 16:49)  управление потоком не делал. Проц успевает и без него. Процессоры разные бывают, скорости закачки тоже, ну а xon/xoff, как минимум, используется не при передаче блока, а при записи во Flash, ибо если заливка идет не специализированым терминалом, то никакие дополнительные (не нормированные к тому-же) паузы не выдерживаются.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 27 2007, 09:23
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(zltigo @ Sep 27 2007, 09:03)  Процессоры разные бывают, скорости закачки тоже, ну а xon/xoff, как минимум, используется не при передаче блока, а при записи во Flash, ибо если заливка идет не специализированым терминалом, то никакие дополнительные (не нормированные к тому-же) паузы не выдерживаются. Да, мысль очень здравая. Возьму на заметку.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 4 2007, 12:42
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(SasaVitebsk @ Oct 4 2007, 14:21)  2700 пока - я в растройстве.  Сергей а Вы делали с 256 битным ключём? Да. Проц - мега8. ключ 256 бит. компилятор - 4.10B. Объем кода - 1974, но есть куда ужимать. Та же мега8, WinAVR, 1888, но другой протокол команды входа в программирование и сильное ужимание. Даю наводку ( не на водку, а наводку  ): 1) Большинство параметров передавать не нужно - они константны. Поэтому Код aes.c: void aesInit() { CalcPowLog(); CalcSBox(); KeyExpansion( expandedKey ); CalcSBoxInv( sBoxInv ); } aes.h: inline static void aesDecrypt( uint8_t * buffer ) { uint8_t Tmp[BLOCKSIZE]; CopyBytes( Tmp, buffer, BLOCKSIZE ); InvCipher( buffer, expandedKey ); XORBytes( buffer, ChainCipherBlock, BLOCKSIZE ); CopyBytes( ChainCipherBlock, Tmp, BLOCKSIZE ); } 2) Функции, которые не вызываются из aesDecrypt() и которые вызываются всего из одной точки можно делать static inline. Далее, конструкцию Код column[0] = (column[0] << 1) ^ (column[0] & 0x80 ? BPOLY : 0); column[1] = (column[1] << 1) ^ (column[1] & 0x80 ? BPOLY : 0); column[2] = (column[2] << 1) ^ (column[2] & 0x80 ? BPOLY : 0); column[3] = (column[3] << 1) ^ (column[3] & 0x80 ? BPOLY : 0); можно вынести в отдельную функцию uint8_t GF_something(uint8_t data) { return (data << 1) ^ (data & 0x80 ? BPOLY : 0); } Это дало существенный выигрыш в WinAVR, в IAR не пробовал. 3) ChainCipherBlock вынести в глобальные и сразу инициализировать, выкинув initialVector и CopyInitialVector - это сделает cstartup не затратив ни одного лишнего байта.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 4 2007, 15:52
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
2Саша В двух словах ничего не скажеш ,просто сгоняй сюды ProgLoader.nm.ru Если такое устроит и есть подходящий в списке контроллер ,я тебе вышлю прогу и бут с шифрованием по старой дружбе  ,кварц\скорость можно перебить.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|