Необходимо из имеющейся RAM выделить область памяти недоступную для создания кучи. Вот не найду где такое написано. в NIOS это можно было сделать bsp_editorом а как в SoC это сделать, где прочитать? использую gcc компилятор бареметал приложение.
Golikov A.
Mar 26 2015, 09:29
Ну самое простое это в программе забабахать переменную нужного размера, она ляжет в РАМ и будет не давать это место никому.
uint8_t MyData[1024]; //выделяет килобайт памяти
uint8_t *DataP = MyData; - указатель на начало куска
*(int32_t *)DataP = 10; - так можно туда инты пихать
можно
uitn32_t *DataIP = (int32_t *)DataP ;
*DataIP++ = 15;
*DataIP++ = 16;
Так же если в линк скрипте должны быть такие воpмозности. Выделить регион и какие-то данные в него запихать или оставить его чистым...
Или вам эта память нужна вне проца?
Цитата
Или вам эта память нужна вне проца?
Мне надо будет туда из программы писать по адресам. Поэтому хочется что бы я мог указывать кусок памяти(с точностью до байта) разрешённый для размещения в ней стека и кучи. Соответственно в остальную я буду писать.
Golikov A.
Mar 26 2015, 14:11
Ну так вроде в линкере это и указывается.
Там должна быть возможность задания регионов, и должно быть возможно указывать в какой регион что пихается...
Обычно правда делают наоборот
Выделяют кусок памяти куда хотят писать, а остальное отдают под стэк и под кучу. Это же вещи для которых памяти много не бывает. Так что лучше в них сгрузить все что осталось, когда под необходимое уже место выделили.
В этой концепции создание огромного массива - как раз займет сколько надо памяти, оставив что осталось под кучу.
нашел не в линкере, а в mkimage: mkimage.exe -A arm -T standalone -C none -a 0x100040 -e 0 -n "baremetal image" -d BIN IMG
В общем можно через него. Ну разобрался, Спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.