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

 
 
> 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
 
Start new topic
Ответов
Rst7
сообщение Feb 21 2008, 10:01
Сообщение #2


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

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



Цитата
команда LDRB автоматически расширяет число до 32 бит.


Расширять то она расширяет. Только компилятор обязан при, например, выполнении char a=b+2 и b=254 обеспечить 0 в а, а не 256 (если тупо расширить), вот отсюда он и генерит сбросы старших битов. А если еще и signed char, то вообще мраки начинаются...


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


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

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



Цитата(Rst7 @ Feb 21 2008, 13:01) *
А если еще и signed char, то вообще мраки начинаются...

Да тоже самое что и unsigned char, просто сдвиг другой для unsigned используется пара LSL/LSR а для signed LSL/ASR.

Вообще что бы код хорошо работал и на ARM и на AVR, я все локальные переменные объявляю uint_fast8_t, и все операции с переменными которые в памяти делаю через временные локальные объявленные как uint_fast8_t. Тогда все нормально загрузка идет через LDRB, а промежуточные операции все 32 битные (на ARM)
Тут главное помнить что uint_fast8_t может быть больше 8 бит....
примерно так
Код
uint8_t var;
void f(uint_fast8_t arg)
{
  uint_fast8_t tmp;
  tmp = var;
  if ( tmp > arg) tmp = arg+5;
  else tmp*=2;
  var = tmp;
}


Сообщение отредактировал KRS - Feb 21 2008, 10:27
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- e_ol   ARM и AVR cравнение плотности кода   Feb 21 2008, 00:28
- - GetSmart   Экономить в ARMе на плотности кода примерно то же,...   Feb 21 2008, 03:59
|- - SIA   Цитата(GetSmart @ Feb 21 2008, 06:59) Эко...   Feb 21 2008, 07:26
- - vet   e_ol Переводил 67 кБ прошивку (из них 5 кБ констан...   Feb 21 2008, 06:13
- - xelax   Плотность ещё и от самого кода зависит. Например о...   Feb 21 2008, 06:13
- - sensor_ua   Cortex (STM32, Luminary) интересны, если рассматри...   Feb 21 2008, 06:56
- - KRS   Очень многое завист от назначения и необходимой ра...   Feb 21 2008, 07:06
- - vesago   Я проект с LPC2214 переносил на m128. Размер кода ...   Feb 21 2008, 07:08
|- - zltigo   Цитата(vesago @ Feb 21 2008, 10:08) На пл...   Feb 21 2008, 07:25
|- - vesago   Цитата(zltigo @ Feb 21 2008, 09:25) Ну е...   Feb 21 2008, 11:20
- - zltigo   Цитата(e_ol @ Feb 21 2008, 03:28) Кто пер...   Feb 21 2008, 07:14
- - Rst7   Цитатамне до сих пор не встречалось AVR-овских исх...   Feb 21 2008, 07:22
|- - zltigo   Цитата(Rst7 @ Feb 21 2008, 10:22) Ну не з...   Feb 21 2008, 07:49
|- - xelax   Цитата(zltigo @ Feb 21 2008, 10:49) но на...   Feb 21 2008, 08:49
|- - aaarrr   Цитата(xelax @ Feb 21 2008, 11:49) А по п...   Feb 21 2008, 08:57
|- - alexander55   Цитата(aaarrr @ Feb 21 2008, 11:57) Компи...   Feb 21 2008, 09:59
- - Rst7   Цитатано настоятельно рекомендую посмотреть, что п...   Feb 21 2008, 08:05
- - GetSmart   Цитата(aaarrr)Компилятор просто начнет "делат...   Feb 21 2008, 09:16
- - aaarrr   А если бы не расширяла - легче было бы? Сделайте +...   Feb 21 2008, 09:22
|- - GetSmart   Цитата(KRS @ Feb 21 2008, 15:19) Кодuint8...   Feb 21 2008, 11:42
|- - KRS   Цитата(GetSmart @ Feb 21 2008, 14:42) Реа...   Feb 21 2008, 11:53
|- - vesago   Цитата(GetSmart @ Feb 21 2008, 13:42) Реа...   Feb 21 2008, 12:12
|- - Alechek   Цитата(GetSmart @ Feb 21 2008, 16:42) Тес...   Feb 21 2008, 18:27
- - GetSmart   Это я тоже заметил. Просто компиляторы пока недост...   Feb 21 2008, 10:14
- - GetSmart   Ну уже писали же, что нужно предопределять типы, у...   Feb 21 2008, 12:02
- - KRS   Цитата(GetSmart @ Feb 21 2008, 15:02) Ну ...   Feb 21 2008, 13:21


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

 


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


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