реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> AES bootloader от Atmel (AVR231), Кто разбирался с данным примером?
SasaVitebsk
сообщение Sep 25 2007, 22:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Некоторые моменты мне непонятны.
1) Насколько я понял прога для PC "update" не изменяет созданного файла, а просто передаёт его. Ну и подтверждения получает.

2) Совершенно непонятно назначение ф-ии busReplyByte из файла usatr0.c. Может планировали управление потоком делать? sad.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 25 2007, 22:27
Сообщение #2


Гуру
******

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



Цитата(SasaVitebsk @ Sep 26 2007, 01:09) *
Некоторые моменты мне непонятны.

Там момент на моменте и моментом погоняет sad.gif собствено загрузка написана левой ногой и содержит явные ошибки в обработке ошибок передачи. Сам стиль 'C' какой-то кондовый sad.gif, даже у EWARM компилятора (какой-то из первых 4.xx) крышу снесло при оптимизации.
Разбираться не стал, просто переписал более-менее по человечески. Брал только сам AES (исходники там тоже не фонтан что-то с железного дешифратора похоже тянули, но вполне компактны, как ни страннно, получаются), загрузочный формат сделал текстовый в стиле INTEL HEX для заливки любым терминалом, соответственно XON/XOFF для управления.
Для специализированного терминала еще ACK/NAK/CAN выдаются.
Хотя знаю людей, которые просто используют "как есть" и ничем не заморачиваются.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 26 2007, 13:49
Сообщение #3


Гуру
******

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



Только что закончил портирование под WinAVR и мегу8. Втиснул в 1924 байта с приемом команды старта программирования. Выкинул программирование лок-битов. Есть там резервы для уменьшения объема.

По вопросам:
1) да. Пользую как есть с небольшими доработками - она сначала посылает команду "вход в режим программирования", на случай если в проце работает приложение. Приложение передает управление загрузчику.

2) похоже. Я добавил байт-стаффинг, управление потоком не делал. Проц успевает и без него.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 26 2007, 18:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Сенькую.

Да я тоже просмотрел и наметил теже, похоже изменения.

1) Перепишу старт.
2) Перепишу UPDATE на rs485/WAKE.

Хорошо что у них всё разделено.

Да и ещё один момент. От использует 256битный ключ. Может крутовато будет. Но меньше вроде не выставляется.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 26 2007, 20:03
Сообщение #5


Гуру
******

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



Цитата(SasaVitebsk @ Sep 26 2007, 21:55) *
использует 256битный ключ. Может крутовато будет. Но меньше вроде не выставляется.

Как это не выставляется? И 128 и 192 можно


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 26 2007, 20:25
Сообщение #6


Гуру
******

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



Цитата(SasaVitebsk @ Sep 26 2007, 21:55) *
Но меньше вроде не выставляется.
Выставляется. А смысл? Ужать существующий исходник можно, туда еще 2 WAKE поместится. Все равно оба два килобайта выделять.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 27 2007, 06:03
Сообщение #7


Гуру
******

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



Цитата(Сергей Борщ @ Sep 26 2007, 16:49) *
управление потоком не делал. Проц успевает и без него.

Процессоры разные бывают, скорости закачки тоже, ну а xon/xoff, как минимум, используется не при передаче блока, а при записи во Flash, ибо если заливка идет не специализированым терминалом, то никакие дополнительные (не нормированные к тому-же) паузы не выдерживаются.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 27 2007, 09:23
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
at90
сообщение Oct 1 2007, 14:54
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



http://download.easytoweb.net/AVR-Bootloader109.exe
вот атмеловский загрузчик переписанный в кодевижене. сразу заработал!


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 2 2007, 11:47
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Не совсем по данной теме, но близко.

Не понял как вектора назад на апликэйшн переключить. На бут - прописано, а вот назад - не понял. sad.gif

Они по WDT переходят. Я бы хотел простым горячим рестартом.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 2 2007, 15:53
Сообщение #11


Гуру
******

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



Цитата(SasaVitebsk @ Oct 2 2007, 14:47) *
Не понял как вектора назад на апликэйшн переключить. На бут - прописано, а вот назад - не понял. sad.gif

Они по WDT переходят. Я бы хотел простым горячим рестартом.
Так бит IVSEL обратно переставить. А смысл в горячем рестарте? Сделай сброс по собаке, перегрузясь проверишь контрольную сумму, и только если прошивка таки удалась и залили работоспособное - перейдешь на приложение. А если не удаласть - переключаешь вектора и в загрузчик.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 4 2007, 11:21
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



2700 пока - я в растройстве. sad.gif

Сергей а Вы делали с 256 битным ключём? И вообще битность ключа влияет на размер кода?

Некогда разбираться, - надо бы к вечеру понедельника сделать. sad.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 4 2007, 11:42
Сообщение #13


Гуру
******

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



Цитата(SasaVitebsk @ Oct 4 2007, 14:21) *
И вообще битность ключа влияет на размер кода?

Исходники-же есть - Мало, ну сотня байт......


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 4 2007, 12:42
Сообщение #14


Гуру
******

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



Цитата(SasaVitebsk @ Oct 4 2007, 14:21) *
2700 пока - я в растройстве. sad.gif

Сергей а Вы делали с 256 битным ключём?
Да. Проц - мега8. ключ 256 бит. компилятор - 4.10B. Объем кода - 1974, но есть куда ужимать. Та же мега8, WinAVR, 1888, но другой протокол команды входа в программирование и сильное ужимание. Даю наводку ( не на водку, а наводку smile.gif ):
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)
Go to the top of the page
 
+Quote Post
bodja74
сообщение Oct 4 2007, 15:52
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



2Саша

В двух словах ничего не скажеш ,просто сгоняй сюды
ProgLoader.nm.ru
Если такое устроит и есть подходящий в списке контроллер ,я тебе вышлю прогу и бут с шифрованием по старой дружбе smile.gif ,кварц\скорость можно перебить.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 18:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01712 секунд с 7
ELECTRONIX ©2004-2016