|
ARM и AVR cравнение плотности кода |
|
|
|
Feb 21 2008, 00:28
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-01-05
Пользователь №: 1 986

|
Изделие массовое, соотношение цена - ресурсы МК критичное. Вот стоим на распутье: ресурсов ATMEGA не хватает ,присматриваемся к PIC24,LPC21** ждем ATXMEGA. Кто переводил свои проекты с AVR на ARM какая плотность кода получается при компиляции типовых задач (не "заточенных" под конкретную архитектуру процессора) ? Скажем для примера возьмем компилятор IAR для AVR и ARM, ARM в THUMB режиме.
|
|
|
|
|
Feb 21 2008, 06:13
|
Знающий
   
Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32

|
e_ol Переводил 67 кБ прошивку (из них 5 кБ констант) с Mega128 (CVAVR) на AT91SAM7S128 (IAR, Thumb); общий размер уменьшился до 54 кБ. Пример, впрочем, несколько некорректный - второй вариант был переписан под uC/OS-II (+2,4 кБ), поэтому общая структура программы упростилась. Так или иначе, в режиме Thumb код получается заметно плотнее AVR, за счет большей разрядности регистров (арифметика, указатели), гибкой адресации памяти, коротких прологов/эпилогов подпрограмм.
--------------------
Главная линия этого опуса ясна мне насквозь!
|
|
|
|
|
Feb 21 2008, 06:13
|

Местный
  
Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035

|
Плотность ещё и от самого кода зависит. Например обращение к полям упакованных структур раздувает код в АRM больше чем в 4 раза. У меня при переносе кода с AVR на ARM в THUMB режиме полоучилось примерно тот же самый объём(даже для ARM немного меньше получилось  ), в ARM режиме процентов на 25 больше. Компиляторы avr-gcc 4.2.1 и arm-elf-gcc 4.2.2 соответсвенно. Оптимизация -Os (максимальное сжатие по коду) З.Ы. Ну естественно так как я побил все дериктивы pack, то размер используемого RAM для ARM также вырос.
|
|
|
|
|
Feb 21 2008, 07:22
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата мне до сих пор не встречалось AVR-овских исходников НЕ ЗАТОЧЕНЫХ под его архитектуру - обилие жестко забитых 8bit переменных Ну не знаю, за других не в ответе. У меня 2 тайпдефа, UREG и REG, соответственно, беззнаковый и знаковый, оптимально лезущий в регистр. Переносится без проблем, никакого оверхеда. Это для локальных переменных. А для полей структур - там пофиг, по большому счету, что LDR, что LDRB например, только надо за выравниванием следить и особо не извращаться.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 21 2008, 07:26
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 26-06-07
Пользователь №: 28 723

|
Цитата(GetSmart @ Feb 21 2008, 06:59)  Экономить в ARMе на плотности кода примерно то же, что и в AVR на кол-ве регистров. Зачем спрашивается? Начиная с двух долларов ARM уже выгоднее AVRa. Менее 2 долларов при изготовлении устройств в размере не менее 1000 штук AVR может оказаться выгоднее по цене в очень несложных устройствах. А вот при малых партиях - тут уж программист пусть подумает сколько стоит его время и его профессионализм.
ЗЫ. Вопрос поставлен изначально неверно. Даже в самом дешёвом LPC памяти больше, чем в AVR за ту же цену. Правильно. Плюс разрядность упрощает любой мало-мальски вычислительный алгоритм. Поэтому лично я с 8-битниками, кроме Cygnal - и то только за их хорошие АЦП/ЦАП и скорость - завязал. Время 8-битных AVR прошло. А 32-битный AVR - не факт, что выживет, они c ним скорее всего опоздали.
|
|
|
|
|
Feb 21 2008, 07:49
|

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

|
Цитата(Rst7 @ Feb 21 2008, 10:22)  Ну не знаю, за других не в ответе. У меня 2 тайпдефа, UREG и REG, соответственно, беззнаковый и знаковый, оптимально лезущий в регистр Я не знаю, что это у Вас (у меня тоже есть bint - и никаких проблем, а int_least.. вообще стандарнты, но Вы их часто видите в AVR исходниках??? ), но настоятельно рекомендую посмотреть, что получается, если на массовые расходные переменные (безразлично регистровыми они станут или нет) накладывать исскусственное ограничение в 8bit (unsigned char) пришедшее с AVR.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|