avr ограничение на объем данных размещенных в Flash памяти програмы

slider
Offline
Зарегистрирован: 17.06.2014

что скажете, гуру AVR ?

Короче, из много опытов вывода графики (что было под рукой ардуино MegaCore на  Atmega128 ) , появился вывод , что 

существует некое ограничение (компилятором или железно в 8bit avr ) на размещение констант (иконок, данных,..)  в памяти для команд. 

дано дисплей, ардуино 8бит и UTFT. шрифты не используются (ибо особо не проконтролируешь потом использование памяти) , програмный код минимален - только вызов иконок.

Опытным путем , докидывая иконки свыше 52% памяти атмеги128 . а это около 65кбайт !  (16битное слово) , то перестает все отображаться - белый экран сразу после заливки скетча.

если же забить 52% иконками , и дальше до 99% забить кодом ( к примеру тестами UTFT , вызовами этих же иконок)  - то всё работает! 

Ззначит получается что при использовании много шрифтов и иконок,  вначале надо написать простенький скетч вызова всего используемого текста, иконок и констант, и проверить скомпилить,  и убедиться в том, чтобы объем не превышал 65кбайт . А потом уже смело использовать с остальным кодом.  

Для владельцев DUE думаю это не актуально, она 32битная.  У UNO atmega328 и так память программ не превышает 65К.

Получается что проблемы могут быть у MEGA atmega2560 . 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Для начала хотелось бы увидеть фрагмент чтения из PROGMEM.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

не ну то, что адресоваться к памяти более 65к напрямую на 8 битном низзя это то понятно, что вторые - странично

mazahaker
Offline
Зарегистрирован: 02.11.2015

andriano пишет:

Для начала хотелось бы увидеть фрагмент чтения из PROGMEM.

col=pgm_read_word(&data[tc]); с чтением все ок, да и если бы было не так, ничего бы не рисовалось

ua6em пишет:

не ну то, что адресоваться к памяти более 65к напрямую на 8 битном низзя это то понятно, что вторые - странично

Но ведь не одну иконку читаем over 65k а несколько мелких...

negavoid
Offline
Зарегистрирован: 09.07.2016

Дело не в 146% PROGMEM, дело в KABOOM! :)

mazahaker
Offline
Зарегистрирован: 02.11.2015

Не совсем понятно, как в описанном случае это произойдет? из за чего получится дикая фрагментация