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

 
 
 
Reply to this topicStart new topic
> Сравнение размера кода ARM (LPC2xxx) и AVR (ATMega)
MikePic
сообщение Aug 24 2007, 06:24
Сообщение #1


Участник
*

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



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

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

Заранее благодарю.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 24 2007, 06:41
Сообщение #2


Гуру
******

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



Цитата(MikePic @ Aug 24 2007, 09:24) *
Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
MikePic
сообщение Aug 24 2007, 07:03
Сообщение #3


Участник
*

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



Цитата(zltigo @ Aug 24 2007, 10:41) *
А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю.

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

Цитата
Вообще отпортировав как-то с 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.
Но это лишь слова...
Go to the top of the page
 
+Quote Post
etoja
сообщение Aug 24 2007, 07:17
Сообщение #4


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Если взять проект на С для Микрочиповского процессора PIC16F876 и перекомпилировать его для Филипсовского ARMa LPC2106, то размер исполняемого кода в "словах"(то есть командах) окажется приблизительно одинаковым.
Для ARMов рекомендую С компилятор Greenhills.
Очень качественный продукт, сильный отрыв от GNUсных поделок.
Есть в местных закромах, но требует времени на освоение.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 24 2007, 07:24
Сообщение #5


Гуру
******

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



Цитата(MikePic @ Aug 24 2007, 10:03) *
перевести текущий проект ...

Зачем весь проект? Просто отдельные файлы компильнуть.
Цитата
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 вообще, ну кроме как в загрузчике.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 24 2007, 19:40
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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

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

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

Заранее благодарю.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 25 2007, 02:41
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(MikePic @ Aug 24 2007, 09:24) *
Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx?

По размеру кода у меня в среднем получилось 1:1 (ARM режим : Mega)
на меге кода чуть-чуть меньше, но этим "меньше" можно пренебречь.

В Thumb режиме код получается более компактный чем на mege.
В проекте было много 16-ти битных и 32-х битных операций.
Go to the top of the page
 
+Quote Post
vesago
сообщение Aug 25 2007, 07:01
Сообщение #8


Тутэйшы
****

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



Делаю проект на m128, схожий со сделанным ранее на lpc2214. Много кода выдрал из армированного проекта. На m128 размер кода получается не меньше. Ну или не существенно меньше.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Aug 28 2007, 08:54
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Помимо собственно кода, практически в каждой проге есть константные данные (таблицы констант, строки и т.д., я уж не говорю о графике). Как правило чем больше проект тем больше этих данных, а размер ими занимаемый практически не зависит от платформы. Т.е. разницы в размере кода (т.е. используемого пространства флеша) в ряде случаев может и не быть.
И ИМХО в общем случае можно говорить только об алгоритмах типа числодробилок и при указании конкретных компиляторов и их опций.
ЗЫ, любую (не самую примитивную) прогу можно ужать по памяти ценой потери времени. smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:30
Рейтинг@Mail.ru


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