Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с адресацией памяти. Atmega 64
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
tdi@013h
Продолжаю свои прогулки по саду граблей и костылей. Обновляю среду разработки, на этот раз под AVR.
Codeblocks 10.05 + avr-gcc 4.5.2

Проект билдится. На выходе имеем следующее.
Цитата
avr-size bin/Debug/Atmel_OB.elf
text......data.....bss......dec........hex... filename
47872....1744....1660....51272....c848 bin/Debug/Atmel_OB.elf


При билде этого же проекта с помощью avr-3.4.6(изначально эту версию методом плясок выбрали потому что собирала проект как надо) имеем
Цитата
avr-size bin/Debug/Atmel_OB.elf
text......data.....bss......dec........hex... filename
55110...720......1660....57490....e092 bin/Debug/Atmel_OB.elf


Собственно засада в секции data, туда почему-то запихивается слишком много данных(т.е пытается впихнуть всё в ОЗУ, которого столько просто нет).
Куда смотреть и кого бить канделябром, чтобы на avr-4.5.2 собиралось так же, как и на 3.4.6?
sigmaN
ну я бы для начала смотрел в .map файл и определялся что именно там сидит в .data... а потом уже по исходнику бы прикидывал что к чему....
tdi@013h
Авторы проекта говорят, что при неправильном билде в ОЗУ засовываются строковые константы.
Проект большой, памяти впритык. По идее эти константы должны писаться на flash.
Что конкретно искать в .map файле?(могу на общее обозрение выкинуть)

Код не мой, что в нём происходит пока представляю слабо.
Методом тыка выяснено, что при сокращении конструкции вида
Цитата
mcu_flash_char cError[] = "\r\nError in the programm...\r\n";

до состояния
Цитата
mcu_flash_char cError[] = "\r\nErr\r\n";

секция data сокращается как раз на 20 байт.
sigmaN
ну в .map файле будет видно что именно и сколько памяти занимает в какой секции.
выкладывайте.

Цитата
mcu_flash_char cError[] = "\r\nError in the programm...\r\n";

до состояния
Цитата
mcu_flash_char cError[] = "\r\nErr\r\n";

секция data сокращается как раз на 20 байт.

ну так странно вообще как оно во флеши раньше оказывалось то....

http://www.nongnu.org/avr-libc/user-manual...l#faq_rom_array

а кто такой этот mcu_flash_char??
tdi@013h
Цитата(sigmaN @ Feb 21 2011, 14:29) *
ну так странно вообще как оно во флеши раньше оказывалось то....

а кто такой этот mcu_flash_char??

Мопед не мой.
mcu_flash_char выдернул первый попавшийся на глаза кусок с "написанным_в_вот_таких кавычках_текстом"
Во влэшэ оно оказывалось методом "3 раза ку, 2 раза в бубен, внезапно собралось как надо".

Немалое количество кода перелопачивать придётся, следуя вашему методу (находил я его)
Надеялся, что оно как-то словом магическим матерным для компилятора вылечится.
ps
С контроллерами имею дело не более месяца, поэтому пока слабо представляю что и как происходит(по специализации я тупо-админ).

Вкурил код. Вроде все переменные описываются как сказано в ссылке 4 поста(по крайней мере конструкции оттуда используются). Мистика.
sigmaN
поиск по всем файлам проекта по строке mcu_flash_char
надо найти, где определяется эта хренотень...
вообще, конечно странно, что предыдущая версия собирала как надо...
Юрий_СВ
Если компилируется и предупреждали о возможных проблеммах с размещением...

Значит mcu_flash_char, видимо, описан так :
#define mcu_flash_char const char

Так обычно пишут в книжках по Си, но в данном случае это не совсем верно.

Должно быть так:
#define mcu_flash_char PROGMEM const char
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.