Перейти к содержанию
    

Сравнение размера кода ARM (LPC2xxx) и AVR (ATMega)

Уважаемые, хотелось бы услышать ваше мнение, если кто проводил тест на сравнение размера кода для ARM (LPC2xxx) и AVR (ATMega), используя компилятор IAR-овский (из последних, например). Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx? Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос. Поиск ничего не даёт кроме сообщения об ошибке.

 

В LPC будет использовать 32-битный набор команд. Сравнивал один и тот же код для ARM и Thumb-режима, получал коэффициент 1,5-1,54. Компилятор IAR 4.41A

 

Заранее благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос.

А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю. Вообще отпортировав как-то с AVR на ARM(Thumb) был сильно удивлен тем, что код получился не слишком отличающимся по размеру. Соотношение между размерами ARM/Thumb может быть очень разным, но при достаточно обильном использовании более, чем 8bit констант выигрыш по размеру не более 20% в середнем пожалуй 30%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю.

Да проблем то никаких, просто СВОИХ "машиннонезависимых" нет, а перевести текущий проект (хотя бы один) займёт пару-тройку часов. Наделся, что кто-то из форумчан обладает статистикой.

 

Вообще отпортировав как-то с AVR на ARM(Thumb) был сильно удивлен тем, что код получился не слишком отличающимся по размеру. Соотношение между размерами ARM/Thumb может быть очень разным, но при достаточно обильном использовании более, чем 8bit констант выигрыш по размеру не более 20% в середнем пожалуй 30%.

Сами NXP заявили: For critical code size applications, the alternative 16-bit Thumb mode reduces code by more than 30 % with minimal performance penalty.

Но это лишь слова...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если взять проект на С для Микрочиповского процессора PIC16F876 и перекомпилировать его для Филипсовского ARMa LPC2106, то размер исполняемого кода в "словах"(то есть командах) окажется приблизительно одинаковым.

Для ARMов рекомендую С компилятор Greenhills.

Очень качественный продукт, сильный отрыв от GNUсных поделок.

Есть в местных закромах, но требует времени на освоение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

перевести текущий проект ...

Зачем весь проект? Просто отдельные файлы компильнуть.

For critical code size applications, the alternative 16-bit Thumb mode reduces code by more than 30 % with minimal performance penalty.

Thumb начинает резко проигрывать по размеру кода, например, при банальной операции с константами более 8bit, которые уже не помещаются в формат команды и начинается бодяга...

Хотя на на чисто регистровых операциях явный выигрыш.

В моих применениях цифра 15-20% экономии кода более реальна. Причем по прикидкам, большая экономия на размере кода соответствует меньшей потере производительности.

Опять - обработчики прерываний не Thumb и соответстенно вызываемые из них функции Interwork, что опять снижает эффект от Thumb. Короче, я не пользуюсь Thumb вообще, ну кроме как в загрузчике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тестирвал в свое время все что под руку попадалость.

По ссылке http://aly.projektas.lt/Tests/AllCPU/WhetsRes.htm#1 качайте архивы, там почте везде есть MAP файлы и сравнивайте.

 

Уважаемые, хотелось бы услышать ваше мнение, если кто проводил тест на сравнение размера кода для ARM (LPC2xxx) и AVR (ATMega), используя компилятор IAR-овский (из последних, например). Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx? Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос. Поиск ничего не даёт кроме сообщения об ошибке.

 

В LPC будет использовать 32-битный набор команд. Сравнивал один и тот же код для ARM и Thumb-режима, получал коэффициент 1,5-1,54. Компилятор IAR 4.41A

 

Заранее благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx?

По размеру кода у меня в среднем получилось 1:1 (ARM режим : Mega)

на меге кода чуть-чуть меньше, но этим "меньше" можно пренебречь.

 

В Thumb режиме код получается более компактный чем на mege.

В проекте было много 16-ти битных и 32-х битных операций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делаю проект на m128, схожий со сделанным ранее на lpc2214. Много кода выдрал из армированного проекта. На m128 размер кода получается не меньше. Ну или не существенно меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помимо собственно кода, практически в каждой проге есть константные данные (таблицы констант, строки и т.д., я уж не говорю о графике). Как правило чем больше проект тем больше этих данных, а размер ими занимаемый практически не зависит от платформы. Т.е. разницы в размере кода (т.е. используемого пространства флеша) в ряде случаев может и не быть.

И ИМХО в общем случае можно говорить только об алгоритмах типа числодробилок и при указании конкретных компиляторов и их опций.

ЗЫ, любую (не самую примитивную) прогу можно ужать по памяти ценой потери времени. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...