Перейти к содержанию
    

Размещение данных в памяти

Имеется проект с NIOSII и SDRAM. Вопрос в следующем. Хочу создать массив данных (unsigned char array [10][10] например) и разместить его в памяти SDRAM по заранее определенному адресу: array[0][0] в ячейке с адресом 0x100, array[0][1] в ячейке с адресом 0x101 и т.д. Как это сделать в Eclipse? Через BSP Editor...->Linker Script?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.

Так и сделано. Я знаю абсолютный адрес ее местоположения. Как сделать так чтобы первый элемент массива находился в определенной ячейке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и сделано. Я знаю абсолютный адрес ее местоположения. Как сделать так чтобы первый элемент массива находился в определенной ячейке?

 

По идее это должно как-то прагмами в самом C коде настраиваться. Причем вряд ли напрямую. Скорее нужно создать дополнительный сегмент, положить его по нужному адресу, потом положить переменную в данный сегмент. Как это точно делается - черт его знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В линкере расписать так чтобы нужная уобласть не попадала не в одну секцию.

После этого объявить указатель на эту область.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В линкере расписать так чтобы нужная уобласть не попадала не в одну секцию.

После этого объявить указатель на эту область.

Нужная область должна попасть в SDRAM но при это не попадала не в одну секцию? это как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильнее было бы написать чтобы никакая другая секция не попала в нужную область.

надо просто чтобы в эту память не попала никакая другая секция. А дальше можно работать с ней через указатель.

Или сделать доп секцию, разместить ее в этой памяти, а в коде прагмами переменные класть в эту особую секцию

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если место нужно для обмена информацией между разными процессами/железом, то необходимо подтверждение записи данных в RAM. По шине они могут идти неопределенное время.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...