реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как разместить массив констант в RAM?
Visor
сообщение Apr 13 2008, 08:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Сабж.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 13 2008, 14:18
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



В большинстве случаев разместить НЕ в RAM требует усилий, проще всего глобальный доступ.

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

При загрузке массив скопируется в RAM из FLASH.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 13 2008, 17:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



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

А как это физически происходит?
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 13 2008, 18:08
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



В программе есть несколько секций, например, код, статические данные и др. Линкеру известно, что делать с каждой секцией. Для секции глобальных данных линкер делает программный код, который копирует данные из области FLASH в RAM. Для деталей надо смотреть описание конкретного компилятора. Я разбирался для GCC. Какие данные где расположены, как копируются и др. рассматривались на форуме в разделе AVR, основные сообщения делал Сергей Борщ. Общие принципы одинаковы для всех компиляторов. Для программ, запускаемых под ОС свои провила линковки и запуска.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 13 2008, 21:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



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

Спасибо!
Порылся и нашел в ассемблерном коде где и как это делается.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016