|
Ещё раз о бутлоадере, Некоторые тонкости. |
|
|
|
 |
Ответов
|
Oct 16 2007, 20:58
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
2 singlskv. Не планирую переходить на GCC. Работы завались и времени на изучение новых пакетов банально не хватает. Тем более, что я пробовал с ним работать вначале. Мне не понравилось, что по сути это не один продукт а десятки слабоинтегрированных фичей. Я, безусловно, не претендую даже на коментарии к этому продукту. Просто высказываю своё первое впечатление. Я уже обратил внимание, что есть специалисты, которым такое построение нравится. Они берут компилятор с одного источника линкер с другого, редактор с третьего а отладчик с четвёртого. Наверное это правильно. Возможно я до этого дойду, но пока - не готов. __eeprom пользуюсь. Ассемблерный файл spm выкинул и пользуюсь IARовскими приблудами. Благо Сергей Борщ предложил свой вариант. Спасибо ему. Кто-нибудь прогу по расчёту CRC от IAR смог повторить? Что-то у меня в лоб не заработало, а подбирать на CRC - гиблый номер. Легче свою сварганить. Я пробовал так. Вроде именно так они рекомендуют. Не причёсывал. Чтобы максимально близко к данному варианту было. Потом перепишу. Код #define POLY 0x11021
inline unsigned long crc16(int bit, unsigned long oldcrc) { unsigned long newcrc = (oldcrc << 1) ^ bit; if (oldcrc & 0x80000000) newcrc ^= POLY; return newcrc; }
__C_task void main(void) { __disable_interrupt();
#ifdef CRC_CHECK // Считаем CRC всей памяти флэш unsigned long crc = 0; unsigned char i,j; unsigned char APPFLASH *p = (unsigned char APPFLASH *)0x000000; unsigned char APPFLASH *n = (unsigned char APPFLASH *)MEM_SIZE; do { j= *p++; for(i=0;i<8;i++) { crc = crc16(j & 1,crc); j>>=1; } } while (--n); // Если секция программ повреждена // то переходим к загрузке в бутлоадер if (crc) ((void (*)())loader)(); // Переходим на сам загрузчик #endif ((void (*)())0x0000)(); // Если с CRC всё нормально, то перейдём в начало // секции программ }
|
|
|
|
|
Oct 17 2007, 20:29
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(SasaVitebsk @ Oct 17 2007, 00:58)  __eeprom пользуюсь. Ассемблерный файл spm выкинул и пользуюсь IARовскими приблудами. Благо Сергей Борщ предложил свой вариант. Спасибо ему. Ну если Вы так оптимизируете свой код, то в 2K точно будет сложно влезть... Цитата Кто-нибудь прогу по расчёту CRC от IAR смог повторить? Что-то у меня в лоб не заработало, а подбирать на CRC - гиблый номер. Легче свою сварганить. По расчету CRC16 опять же гляньте как это реализованно в Gcc, там есть встроенная функция тактов на 40 (по длинне правда с циклом не сравнивал, меня скорость обычно больше волнует). Цитата(Сергей Борщ @ Oct 17 2007, 13:56)  Ну так а что на "посмотрел" остановились? Попробуйте откомпилировать gcc, увидите, что без основательной "правки напильником" gcc дает в полтора раза бОльший код. И максимальная разница как раз на aes.c. Кто бы спорил ? Там вобще все написано левой ногой, и то что Iar справился соптимизировать этот код лучше, еще ни о чем не говорит. Я говорил лишь о том что данный алгоритм больше подходит для Gcc, и Ваш пост: Цитата(Сергей Борщ @ Oct 4 2007, 16:42)  Да. Проц - мега8. ключ 256 бит. компилятор - 4.10B. Объем кода - 1974, но есть куда ужимать. Та же мега8, WinAVR, 1888, но другой протокол команды входа в программирование и сильное ужимание. косвенно это подтверждает.
|
|
|
|
|
Oct 17 2007, 20:57
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Oct 18 2007, 00:47)  Т.е. IAR даже "алгоритм больше подхоящий для GCC" скомпилировал лучше  . Но это "ни о чем не говорит"  . Жаль  Опять вырывем фразу из контекста ? В этом Вы несомненно мастер !!! Хотите посоревноваться в оптимизации кода ? или просто поболтать ?
|
|
|
|
|
Oct 17 2007, 21:12
|

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

|
Цитата(singlskv @ Oct 17 2007, 23:57)  Опять вырывем фразу из контекста ? Контекста? Контекста собственно и не наблюдается вообще никакого. Только совет использовать GNU по причине того, что aes.c и GNU якобы созданы друг для друга. Цитата Хотите посоревноваться в оптимизации кода ? Можете начинать, если хотите. Понаблюдаю. Объект aes.c есть. Цель - достичь минимального обьема кода - поставлена. Цитата или просто поболтать ? Вот как раз против болтовни и хотелось выступить.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 17 2007, 21:53
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Oct 18 2007, 01:12)  Контекста? Контекста собственно и не наблюдается вообще никакого. Только совет использовать GNU по причине того, что aes.c и GNU якобы созданы друг для друга. Можете начинать, если хотите. Понаблюдаю. Объект aes.c есть. Цель - достичь минимального обьема кода - поставлена. Дык понаблюдаю или поучаствую ??? Цитата Вот как раз против болтовни и хотелось выступить. Те кто только наблюдают, и высказывают свое мнение в стиле, "а IAR все равно круче", ИМХО, как раз и занимаются болтовней... Готовы поучаствовать ? Кажись Вы уже этот исходник уже используете ? Скомпилируйте его для какой-нить меги и выложите сюда. Я соптимизрую для Gcc и тоже выложу сюда.
|
|
|
|
|
Oct 17 2007, 22:04
|

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

|
Цитата(singlskv @ Oct 18 2007, 00:53)  Скомпилируйте его для какой-нить меги и выложите сюда. Легко. Тупо без затей взял из атмеловского AN Код aes.c iccavr.exe D:\ARM_WORK\0\0BACKUP\loader.9\0\Source Code\IAR\aes.c --cpu=m128 -ms -o D:\ARM_WORK\0\0BACKUP\loader.9\0\Source Code\IAR\Release\Obj\ --diag_suppress Pe1053 -y --initializers_in_flash -z9 --no_tbaa --cross_call_passes=1 -DENABLE_BIT_DEFINITIONS -e -I D:\IAR\Embedded Workbench\avr\INC\ -I D:\ IAR\Embedded Workbench\avr\INC\CLIB\ --eeprom_size 4096 IAR Atmel AVR C/C++ Compiler V4.30A/W32, Evaluation Version Copyright 1996-2007 IAR Systems. All rights reserved. 1 096 bytes of CODE memory (+ 7 bytes shared) 522 bytes of DATA memory Цитата(singlskv @ Oct 18 2007, 00:53)  Я соптимизрую для Gcc и тоже выложу сюда. Нет уж, для начала оставте в неприкосновенности. Потом, можете хоть ручками на ASM переписывать
Прикрепленные файлы
aes.rar ( 3.51 килобайт )
Кол-во скачиваний: 57
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 17 2007, 22:24
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Oct 18 2007, 02:04)  Легко. Тупо без затей взял из атмеловского AN Нет уж, для начала оставте в неприкосновенности. Потом, можете хоть ручками на ASM переписывать  Ок, не обещаю что очень быстро выложу результаты(работать тоже иногда нужно  ) а портировать просто на Gcc без изменения кода там тоже прилично... для адекватного сравнения предлягаю добавить минимальную прогу которая будет вызывать aesInit() и aesDecrypt() для какого-нить буфера.
|
|
|
|
|
Oct 17 2007, 22:35
|

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

|
Цитата(singlskv @ Oct 18 2007, 01:24)  а портировать просто на Gcc без изменения кода там тоже прилично... В aes.c ничего специфичного для какого-либо компилятора. Изменения в исходнике практически не нужны. Откомпилируйте только его - 5 минут работы. Примеры: Код wcc -omsn -d0 -s aes.c Open Watcom C16 Optimizing Compiler Version 1.7 Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. aes.c: 387 lines, included 124, 0 warnings, 0 errors Code size: 1308 Код iccarm.exe D:\ARM_WORK\LOADER\AES\aes.c -lC D:\ARM_WORK\LOADER\Works\List\ --remarks --diag_suppress Pe1422,Pe1375 -o D:\ARM_WORK\LOADER\ Works\Obj\ --endian little --cpu ARM7TDMI-S -e --require_prototypes --fpu None --dlib_config D:\ARM_WORK\LOADER\RESOURCE\dlib_cfg.h -I D:\ARM_WORK\ LOADER\AES\ -I D:\ARM_WORK\LOADER\FLASH\ -I D:\ARM_WORK\LOADER\..\common\INCLUDE\ -I D:\ARM_WORK\LOADER\ -I D:\IAR\Embedded Workbench 5\ ARM\INC\ --cpu_mode thumb -Ohz IAR ARM ANSI C/C++ Compiler V5.10.2.372/W32 EVALUATION Copyright 1999-2007 IAR Systems. All rights reserved. 1 076 bytes of CODE memory 36 bytes of CONST memory 532 bytes of DATA memory
Сообщение отредактировал zltigo - Oct 18 2007, 07:38
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
SasaVitebsk Ещё раз о бутлоадере Oct 4 2007, 09:17 Сергей Борщ Цитата(SasaVitebsk @ Oct 4 2007, 12:17) Х... Oct 4 2007, 09:37 IJAR Цитата(Сергей Борщ @ Oct 4 2007, 13:37) Е... Oct 9 2007, 11:40  Сергей Борщ Цитата(IJAR @ Oct 9 2007, 14:40) А какой ... Oct 9 2007, 12:01   IJAR Цитата(Сергей Борщ @ Oct 9 2007, 16:01) Ч... Oct 9 2007, 12:33    Сергей Борщ Цитата(IJAR @ Oct 9 2007, 15:33) Но есть ... Oct 9 2007, 14:33 SasaVitebsk Спасибо Сергей. Всё доступно объяснил. Подходят о... Oct 4 2007, 19:14 arttab а почему бы не объявить переменную в озу в загрузч... Oct 7 2007, 14:34 Сергей Борщ Цитата(arttab @ Oct 7 2007, 17:34) В загр... Oct 8 2007, 08:16 IJAR Цитата(SasaVitebsk @ Oct 4 2007, 13:17) З... Oct 9 2007, 07:28 Сергей Борщ Цитата(IJAR @ Oct 9 2007, 10:28) 1. Испол... Oct 9 2007, 10:45 SasaVitebsk Сергей, всётаки по коду не уложился в 2к. Со своим... Oct 9 2007, 23:55 Сергей Борщ Цитата(SasaVitebsk @ Oct 10 2007, 02:55) ... Oct 10 2007, 10:58  SasaVitebsk Цитата(Сергей Борщ @ Oct 10 2007, 13:58) ... Oct 10 2007, 13:35   Сергей Борщ Цитата(SasaVitebsk @ Oct 10 2007, 16:35) ... Oct 10 2007, 15:46    Dog Pawlowa Цитата(Сергей Борщ @ Oct 10 2007, 18:46) ... Oct 10 2007, 16:42     Сергей Борщ Цитата(Dog Pawlowa @ Oct 10 2007, 19:42) ... Oct 10 2007, 16:57   singlskv Цитата(SasaVitebsk @ Oct 10 2007, 17:35) ... Oct 16 2007, 18:01    Сергей Борщ Цитата(singlskv @ Oct 16 2007, 21:01) Ста... Oct 17 2007, 09:56 SasaVitebsk Код
2 106 bytes of CODE memory
1 430 bytes of D... Oct 11 2007, 09:07 Waso Извиняюсь что лезу в чужую тему, но есть дилетантс... Oct 12 2007, 08:36 Сергей Борщ Цитата(Waso @ Oct 12 2007, 11:36) Я плани... Oct 12 2007, 11:04 Waso Спасибо за совет!
Нашел апноты. Изучаю.
Safe ... Oct 15 2007, 07:02 SasaVitebsk Ещё один вопрос, напрямую с бутлоадером не связанн... Oct 16 2007, 10:28 Сергей Борщ Цитата(SasaVitebsk @ Oct 16 2007, 13:28) ... Oct 16 2007, 12:51  IgorKossak Цитата(Сергей Борщ @ Oct 16 2007, 15:51) ... Oct 16 2007, 20:32 SasaVitebsk Спасибо, но я не планирую запрещать локи на чтение... Oct 16 2007, 16:47         singlskv Цитата(zltigo @ Oct 18 2007, 02:35) В aes... Oct 17 2007, 22:55  SasaVitebsk Цитата(singlskv @ Oct 17 2007, 23:29) Ну ... Oct 18 2007, 19:35   Сергей Борщ Цитата(SasaVitebsk @ Oct 18 2007, 22:35) ... Oct 18 2007, 20:40   zltigo Цитата(SasaVitebsk @ Oct 18 2007, 22:35) ... Oct 18 2007, 22:05   singlskv To zltigo и SasaVitebsk,
признаю, погорячился насч... Oct 18 2007, 22:48    zltigo Цитата(singlskv @ Oct 19 2007, 01:48) Спр... Oct 19 2007, 07:31    Непомнящий Евгений Цитата(singlskv @ Oct 19 2007, 02:48) Ну ... Oct 19 2007, 07:37     zltigo Цитата(Непомнящий Евгений @ Oct 19 2007, 10... Oct 19 2007, 08:01 Непомнящий Евгений Если максимальная оптимизация по размеру, то первы... Oct 19 2007, 08:33 singlskv Цитата(Непомнящий Евгений @ Oct 19 2007, 11... Oct 19 2007, 15:08  SasaVitebsk Цитата(singlskv @ Oct 19 2007, 18:08) А о... Oct 20 2007, 20:07   singlskv Цитата(SasaVitebsk @ Oct 21 2007, 00:07) ... Oct 21 2007, 17:28    pvp Цитата(singlskv @ Oct 21 2007, 21:28) __z... Oct 22 2007, 15:24     Сергей Борщ Цитата(pvp @ Oct 22 2007, 18:24) Поясните... Oct 22 2007, 15:33      pvp Цитата(Сергей Борщ @ Oct 22 2007, 19:33) ... Oct 23 2007, 14:02 SasaVitebsk Внимательно просмотрю.
Правда я отказался на сегод... Oct 22 2007, 10:43 singlskv Цитата(SasaVitebsk @ Oct 22 2007, 14:43) ... Oct 22 2007, 16:43 SasaVitebsk Я когда первый раз увидел результаты компилировани... Oct 22 2007, 21:24 skripach Не стал создавать новую тему, поэтому здесь.
Можно... Nov 9 2009, 14:11 skripach Что никто не знает? ...или я что-то не то спросил. Nov 12 2009, 07:30 zltigo Цитата(skripach @ Nov 12 2009, 10:30) Что... Nov 12 2009, 09:39 KSN Есть вопрос по прерываниям в bootloader и applicat... Feb 27 2010, 09:55 Сергей Борщ Цитата(KSN @ Feb 27 2010, 11:55) Может у ... Feb 27 2010, 11:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|