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

 
 
> Размещение данных в памяти, по определенному адресу.
LAS9891
сообщение Mar 14 2017, 06:46
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Имеется проект с NIOSII и SDRAM. Вопрос в следующем. Хочу создать массив данных (unsigned char array [10][10] например) и разместить его в памяти SDRAM по заранее определенному адресу: array[0][0] в ячейке с адресом 0x100, array[0][1] в ячейке с адресом 0x101 и т.д. Как это сделать в Eclipse? Через BSP Editor...->Linker Script?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Vit1248
сообщение Mar 14 2017, 07:46
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-11-06
Пользователь №: 21 895



По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение Mar 14 2017, 07:51
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Vit1248 @ Mar 14 2017, 10:46) *
По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.

Так и сделано. Я знаю абсолютный адрес ее местоположения. Как сделать так чтобы первый элемент массива находился в определенной ячейке?
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Mar 14 2017, 09:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(LAS9891 @ Mar 14 2017, 10:51) *
Так и сделано. Я знаю абсолютный адрес ее местоположения. Как сделать так чтобы первый элемент массива находился в определенной ячейке?


По идее это должно как-то прагмами в самом C коде настраиваться. Причем вряд ли напрямую. Скорее нужно создать дополнительный сегмент, положить его по нужному адресу, потом положить переменную в данный сегмент. Как это точно делается - черт его знает.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Mar 14 2017, 13:18
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Посмотрите в доках к GCC компилятору как расположить данные по абсолютному адресу.

Вот, к примеру: How to place a variable at a given absolute address in memory (with GCC)

Go to the top of the page
 
+Quote Post
VBKesha
сообщение Mar 17 2017, 09:34
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 10-01-07
Из: Брянск
Пользователь №: 24 263



В линкере расписать так чтобы нужная уобласть не попадала не в одну секцию.
После этого объявить указатель на эту область.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение Mar 17 2017, 09:38
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(VBKesha @ Mar 17 2017, 12:34) *
В линкере расписать так чтобы нужная уобласть не попадала не в одну секцию.
После этого объявить указатель на эту область.

Нужная область должна попасть в SDRAM но при это не попадала не в одну секцию? это как?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 17 2017, 12:58
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Правильнее было бы написать чтобы никакая другая секция не попала в нужную область.
надо просто чтобы в эту память не попала никакая другая секция. А дальше можно работать с ней через указатель.
Или сделать доп секцию, разместить ее в этой памяти, а в коде прагмами переменные класть в эту особую секцию
Go to the top of the page
 
+Quote Post
lexx
сообщение Mar 21 2017, 13:16
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 25-06-04
Пользователь №: 186



Если место нужно для обмена информацией между разными процессами/железом, то необходимо подтверждение записи данных в RAM. По шине они могут идти неопределенное время.
Go to the top of the page
 
+Quote Post

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

 


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


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