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

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

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

А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю. Вообще отпортировав как-то с AVR на ARM(Thumb) был сильно удивлен тем, что код получился не слишком отличающимся по размеру. Соотношение между размерами ARM/Thumb может быть очень разным, но при достаточно обильном использовании более, чем 8bit констант выигрыш по размеру не более 20% в середнем пожалуй 30%.
MikePic
Цитата(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.
Но это лишь слова...
etoja
Если взять проект на С для Микрочиповского процессора PIC16F876 и перекомпилировать его для Филипсовского ARMa LPC2106, то размер исполняемого кода в "словах"(то есть командах) окажется приблизительно одинаковым.
Для ARMов рекомендую С компилятор Greenhills.
Очень качественный продукт, сильный отрыв от GNUсных поделок.
Есть в местных закромах, но требует времени на освоение.
zltigo
Цитата(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 вообще, ну кроме как в загрузчике.
AlexandrY
Тестирвал в свое время все что под руку попадалость.
По ссылке 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

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

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

В Thumb режиме код получается более компактный чем на mege.
В проекте было много 16-ти битных и 32-х битных операций.
vesago
Делаю проект на m128, схожий со сделанным ранее на lpc2214. Много кода выдрал из армированного проекта. На m128 размер кода получается не меньше. Ну или не существенно меньше.
Alex03
Помимо собственно кода, практически в каждой проге есть константные данные (таблицы констант, строки и т.д., я уж не говорю о графике). Как правило чем больше проект тем больше этих данных, а размер ими занимаемый практически не зависит от платформы. Т.е. разницы в размере кода (т.е. используемого пространства флеша) в ряде случаев может и не быть.
И ИМХО в общем случае можно говорить только об алгоритмах типа числодробилок и при указании конкретных компиляторов и их опций.
ЗЫ, любую (не самую примитивную) прогу можно ужать по памяти ценой потери времени. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.