Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Размещение данных в памяти
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
LAS9891
Имеется проект с NIOSII и SDRAM. Вопрос в следующем. Хочу создать массив данных (unsigned char array [10][10] например) и разместить его в памяти SDRAM по заранее определенному адресу: array[0][0] в ячейке с адресом 0x100, array[0][1] в ячейке с адресом 0x101 и т.д. Как это сделать в Eclipse? Через BSP Editor...->Linker Script?
Vit1248
По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.
LAS9891
Цитата(Vit1248 @ Mar 14 2017, 10:46) *
По идее нужно SDRAM прописать в QSYS, он же выдаст для eclipse абсолютный адрес ее местоположения.

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


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

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

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

Нужная область должна попасть в SDRAM но при это не попадала не в одну секцию? это как?
Golikov A.
Правильнее было бы написать чтобы никакая другая секция не попала в нужную область.
надо просто чтобы в эту память не попала никакая другая секция. А дальше можно работать с ней через указатель.
Или сделать доп секцию, разместить ее в этой памяти, а в коде прагмами переменные класть в эту особую секцию
lexx
Если место нужно для обмена информацией между разными процессами/железом, то необходимо подтверждение записи данных в RAM. По шине они могут идти неопределенное время.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.