roboforum.ru

Технический форум по робототехнике.


Впрос про память МК

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Впрос про память МК

Сообщение GIGAWAT » 04 фев 2007, 12:34

Здраствуйте.
Хотелось бы узнать, как можно определить размер который займет HEX файл в памяти МК.
Я для экспериментов купил платку AVR Butterfly c mega169 на борту.
У этого МК 16К памяти программ. Исходники поставляемые с платой в конечном итоге формируют HEX размером примерно 39К, который туда записывается без проблем.
ВОПРОС: КАК ОН ТУДА ВЛЕЗАЕТ ? =)
Кстати записываю я все через RS232 с помошью Boot сектора который кстати отнимает от памяти программ аж целый килобайт =)
Когда я начал дописывать к этим исходникам свои модули то уперся как раз в бут сектор ,AVRProg начал ругаться 8
Изображение
Единственный выход который я пока нашел, это просто свотреть в дизасеблере не упирается ли прога в начальный адрес загрузчик
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Re: Впрос про память МК

Сообщение avr123.nm.ru » 04 фев 2007, 13:22

GIGAWAT писал(а):Я для экспериментов купил платку AVR Butterfly c mega169 на борту.


Оличная штука.

HEX - содержит еще и служебную информацию.

Советую использовать CVAVR  или  WinAVR  и книгу  по этому набору "SmileyMicro C Programming Book and Butterfly"

http://slil.ru/23767326      пароль 1

на сайте SmileyMicros.com лежит только первая глава.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение GIGAWAT » 04 фев 2007, 13:52

Насчет служебной инфы я как то неподумал спасибо =).

Я пользуюсь WinAVR(GCC) т.к. он дает самый компактный код да и исходники к платке написаны для GCC, плюс на GCC написан Linux =), выбор очевиден.
Книжку Smiley использовал как нач пособие. Ну и конечно же читал ваш курс, СПАСИБО ВАМ ЗА ВАШ ТРУД =)

Кстати не подскажете , вот такой девайс http://megachip.ru/item.php?item_id=172042 будет работать с VMLAB ?

Очень уж хочется JTAG попробовать =) но AVRStudio уже достало...хочу перейти на VMLAB,а если сей девайс не заработает с VM то так и придется мучатся со студией  :?
Просто связка AVRStudio 4.12+WinAVR виснет при компиляции больших проектов и обработке програмных задержек delay (в данном случае исходников для Butterfly), поэтому приходится в ProgrammersNotepad билдить .elf файл а потом уже его симулировать и отправлять через com порт в бутлоадер, а там уж mega169 сама себя программирует.
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение aesok » 04 фев 2007, 14:53

GIGAWAT писал(а):Просто связка AVRStudio 4.12+WinAVR виснет при компиляции больших проектов и обработке програмных ...


Вы устанавливали 4 сервис-пак на AVRStudio, если нет то поставте.

Анатолий.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение avr123.nm.ru » 04 фев 2007, 17:05

WinAVR + VMLAB  не виснет и пример есть в примерах VMLAB
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение GIGAWAT » 04 фев 2007, 19:35

aesok писал(а):
GIGAWAT писал(а):Просто связка AVRStudio 4.12+WinAVR виснет при компиляции больших проектов и обработке програмных ...


Вы устанавливали 4 сервис-пак на AVRStudio, если нет то поставте.

Анатолий.


Действительно поставил сервис-пак и все заработало =)
Осталось лишь решить проблему с размеров кода, т.к. при использовании стандартных настроек код не влезает а при использовании make файла который уже был с проектом все нормально, и это при том что уровни оптимизации и в настройках и в файле -0s.
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение aesok » 04 фев 2007, 23:55

GIGAWAT писал(а):Осталось лишь решить проблему с размеров кода...


Вы можете использовать утилиту avr-size:
$ avr-size main.elf
  text    data     bss     dec     hex filename
 12578      18     887   13483    34ab main.elf

text - код программы - флеш
data - даные во флеш, используються для инициализации переменных.
bss - RAM - занатая под переменые.

GIGAWAT писал(а):Осталось лишь решить проблему с размеров кода, т.к. при использовании стандартных настроек код не влезает а при использовании make файла который уже был с проектом все нормально, и это при том что уровни оптимизации и в настройках и в файле -0s.


Немного сократить размер кода можно если использовать GCC опцию -mcall-prologues. Добавте ее в Project options/Custom options/[All files].
И полностью пересоберите проект (Rebuild All).

Анатолий.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение GIGAWAT » 06 фев 2007, 00:11

Спасибо за совет, код действительно стал меньше ...
Но все равно еще слишком велик , для сравнения хекс файл который получается при работе из студии размером 42Кб, а при использования внешнего мэйк файла размер уменьшается до 38Кб.

При завершении компиляции из под студии разультат следующий:
AVR Memory Usage
----------------
Device: atmega169
Program:   15302 bytes (93.4% Full)
(.text + .data + .bootloader)
Data:        252 bytes (24.6% Full)
(.data + .bss + .noinit)

У меня подозрение лишь насчет + .bootloader)
Как видно память еще не концилась но код уже залез в область бутлоадера о чем сообщает ощибка которую я показал на кортинке в начале топика.
Для справки еще предоставляю два мейк файла:
1)маленького размера (2,5Кб), сгенерирован плагином GCC для АВРСтудии
2)большого размера (10Кб), азят из файлов которые идут в комплекте к исходников к плате AVR Butterfly(исходники с сайта SmileyMicros.com, оптимизированные под GCC)
Кому не лень посмотрите их, может кто знает что как ? =)
Заранее спасибо 8)  :roll:
Вложения
makefile_2.txt
(10.28 КиБ) Скачиваний: 301
Makefile_1.txt
(2.69 КиБ) Скачиваний: 268
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение aesok » 06 фев 2007, 02:27

Попробуйте в AVRStudio включить эти опции:
-funsigned-bitfields
-fpack-struct
-fshort-enums
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение GIGAWAT » 06 фев 2007, 13:30

aesok писал(а):Попробуйте в AVRStudio включить эти опции:
-funsigned-bitfields
-fpack-struct
-fshort-enums

Спасибо, попробуем =)
А не подскажете где можно посмотреть полный список параметров
(на русском желательно) ?
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение GIGAWAT » 07 фев 2007, 00:45

ПРОБЛЕМА РЕШИЛАСЬ !!!  8)
Оказалось, что нужно было всего лишь навсего добавить одну библиотеку из списка во в этом окошке:
Изображение
После этого размер выходного кода уменьшился аж на 2 кб =)
Так вот...
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение SS » 24 фев 2007, 13:44

GIGAWAT писал(а):Очень уж хочется JTAG попробовать =) но AVRStudio уже достало...хочу перейти на VMLAB,а если сей девайс не заработает с VM то так и придется мучатся со студией  :?
Просто связка AVRStudio 4.12+WinAVR виснет при компиляции больших проектов и обработке програмных задержек delay (в данном случае исходников для Butterfly), поэтому приходится в ProgrammersNotepad билдить .elf файл а потом уже его симулировать и отправлять через com порт в бутлоадер, а там уж mega169 сама себя программирует.


Попробуй IAR код получается не менее компактный, а может даже и более, но глюков в нём точно меньше и в дабавок поддерживает JTAG
SS
 
Сообщения: 71
Зарегистрирован: 01 май 2006, 23:00
Откуда: Ukrain


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29