Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как разместить массив констант в RAM?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Visor
Сабж.
mdmitry
В большинстве случаев разместить НЕ в RAM требует усилий, проще всего глобальный доступ.

const uint8_t arr[] = {1,2,3,4}

При загрузке массив скопируется в RAM из FLASH.
Visor
Цитата(mdmitry @ Apr 13 2008, 22:18) *
При загрузке массив скопируется в RAM из FLASH.

А как это физически происходит?
mdmitry
В программе есть несколько секций, например, код, статические данные и др. Линкеру известно, что делать с каждой секцией. Для секции глобальных данных линкер делает программный код, который копирует данные из области FLASH в RAM. Для деталей надо смотреть описание конкретного компилятора. Я разбирался для GCC. Какие данные где расположены, как копируются и др. рассматривались на форуме в разделе AVR, основные сообщения делал Сергей Борщ. Общие принципы одинаковы для всех компиляторов. Для программ, запускаемых под ОС свои провила линковки и запуска.
Visor
Цитата(mdmitry @ Apr 14 2008, 02:08) *
В программе есть несколько секций, например, код, статические данные и др. Линкеру известно, что делать с каждой секцией. Для секции глобальных данных линкер делает программный код, который копирует данные из области FLASH в RAM. Для деталей надо смотреть описание конкретного компилятора. Я разбирался для GCC. Какие данные где расположены, как копируются и др. рассматривались на форуме в разделе AVR, основные сообщения делал Сергей Борщ. Общие принципы одинаковы для всех компиляторов. Для программ, запускаемых под ОС свои провила линковки и запуска.

Спасибо!
Порылся и нашел в ассемблерном коде где и как это делается.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.