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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ARM и AVR cравнение плотности кода
e_ol
сообщение Feb 21 2008, 00:28
Сообщение #1


Участник
*

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



Изделие массовое, соотношение цена - ресурсы МК критичное.

Вот стоим на распутье: ресурсов ATMEGA не хватает ,присматриваемся к PIC24,LPC21** ждем ATXMEGA.

Кто переводил свои проекты с AVR на ARM какая плотность кода получается при компиляции типовых задач (не "заточенных" под конкретную архитектуру процессора) ?


Скажем для примера возьмем компилятор IAR для AVR и ARM, ARM в THUMB режиме. help.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 21 2008, 03:59
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Экономить в ARMе на плотности кода примерно то же, что и в AVR на кол-ве регистров. Зачем спрашивается? Начиная с двух долларов ARM уже выгоднее AVRa. Менее 2 долларов при изготовлении устройств в размере не менее 1000 штук AVR может оказаться выгоднее по цене в очень несложных устройствах. А вот при малых партиях - тут уж программист пусть подумает сколько стоит его время и его профессионализм.

ЗЫ. Вопрос поставлен изначально неверно. Даже в самом дешёвом LPC памяти больше, чем в AVR за ту же цену.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
vet
сообщение Feb 21 2008, 06:13
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



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


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
xelax
сообщение Feb 21 2008, 06:13
Сообщение #4


Местный
***

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



Плотность ещё и от самого кода зависит. Например обращение к полям упакованных структур раздувает код в АRM больше чем в 4 раза.

У меня при переносе кода с AVR на ARM в THUMB режиме полоучилось примерно тот же самый объём(даже для ARM немного меньше получилось laughing.gif ), в ARM режиме процентов на 25 больше.

Компиляторы
avr-gcc 4.2.1 и arm-elf-gcc 4.2.2 соответсвенно. Оптимизация -Os (максимальное сжатие по коду) smile.gif

З.Ы. Ну естественно так как я побил все дериктивы pack, то размер используемого RAM для ARM также вырос.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Feb 21 2008, 06:56
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Cortex (STM32, Luminary) интересны, если рассматривать эту самую плотность. Сам столкнулся с резким изменением подходов к программированию всвязи с отсутствием довлеющей нехватки ОЗУ. В результате многие задачи стали решаться значительно меньшими затратами как по тексту, так и по реальному объёму кода.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 21 2008, 07:06
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Очень многое завист от назначения и необходимой разрядности данных.
Если хватает 8 битной арифметики и надо дергать ногами. То плотность кода у АВР естественно будет несравнимо выше, а код проще и понятнее. Но вот если надо борабатывать хотя бы 12 битное ацп... на АРМ уже гораздо удобнее будет.
Go to the top of the page
 
+Quote Post
vesago
сообщение Feb 21 2008, 07:08
Сообщение #7


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Я проект с LPC2214 переносил на m128. Размер кода к моему удивлению принципиально не снизился. Вот другое дело - avr показался мне устойчивее. На плате стоит хостовый LPC и периферийная мега. При мощных помехах LPC загибается. Спасает только внешний вачдог. АВР ни разу не отказывал. Думаю LPC затактировать от генератора.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 21 2008, 07:14
Сообщение #8


Гуру
******

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



Цитата(e_ol @ Feb 21 2008, 03:28) *
Кто переводил свои проекты с AVR на ARM какая плотность кода получается при компиляции типовых задач (не "заточенных" под конкретную архитектуру процессора) ?

Для начала, мне до сих пор не встречалось AVR-овских исходников НЕ ЗАТОЧЕНЫХ под его архитектуру - обилие жестко забитых 8bit переменных - очень нехилая заточка под архитектуру smile.gif. Даже небольшая подчистка кода под естсественные int дает заметную экономию и размера и быстродействия. Заданный вопрос не нов - поищите в форуме предыдущие ответы, но они будут в том-же ключе. Чем действительно стоит озаботится, так это размером RAM.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 21 2008, 07:22
Сообщение #9


Йа моск ;)
******

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



Цитата
мне до сих пор не встречалось AVR-овских исходников НЕ ЗАТОЧЕНЫХ под его архитектуру - обилие жестко забитых 8bit переменных


Ну не знаю, за других не в ответе. У меня 2 тайпдефа, UREG и REG, соответственно, беззнаковый и знаковый, оптимально лезущий в регистр. Переносится без проблем, никакого оверхеда.

Это для локальных переменных. А для полей структур - там пофиг, по большому счету, что LDR, что LDRB например, только надо за выравниванием следить и особо не извращаться.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 21 2008, 07:25
Сообщение #10


Гуру
******

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



Цитата(vesago @ Feb 21 2008, 10:08) *
На плате стоит хостовый LPC и периферийная мега. При мощных помехах LPC загибается.

smile.gif Ну если LPC,это поминаемый Вами LPC22xx c внешней шиной на которой висит RAM/ROM и все это по традиции на 2x слойной плате спроектированой без опыта шаманства со скростными девайсами на двуслойных платах, то это совершенно "нормально" smile.gif. Кроме того,какое отношение Ваша реплика имеет к заданному вопросу?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SIA
сообщение Feb 21 2008, 07:26
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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 ним скорее всего опоздали.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 21 2008, 07:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 21 2008, 08:05
Сообщение #13


Йа моск ;)
******

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



Цитата
но настоятельно рекомендую посмотреть, что получается


Я знаю. Просто ужасно smile.gif Поэтому за этим слежу в своих исходниках.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
xelax
сообщение Feb 21 2008, 08:49
Сообщение #14


Местный
***

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



Цитата(zltigo @ Feb 21 2008, 10:49) *
но настоятельно рекомендую посмотреть, что получается, если на массовые расходные переменные (безразлично регистровыми они станут или нет) накладывать исскусственное ограничение в 8bit (unsigned char) пришедшее с AVR.


А по подробней об этом можно?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 21 2008, 08:57
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(xelax @ Feb 21 2008, 11:49) *
А по подробней об этом можно?

Компилятор просто начнет "делать" из 32-х битного процессора восьмибитный, с соответствующим оверхедом.
Go to the top of the page
 
+Quote Post

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

 


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


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