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

 
 
> ILINK и куски RAM по разным адресам
grinux
сообщение Aug 27 2017, 20:12
Сообщение #1


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

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Всем привет.
Может кто-нибудь знает, как заставить линкер автоматически раскидывать rw данные по памяти, состоящей, например, у NXP LPC23xx из трех кусков.
define symbol __ICFEDIT_region_RAM_start__ = 0x40000040;
define symbol __ICFEDIT_region_RAM_end__ = 0x40007FFF;
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];

define symbol __region_USB_DMA_RAM_start__ = 0x7FD00000;
define symbol __region_USB_DMA_RAM_end__ = 0x7FD01FFF;
define region USB_DMA_RAM_region= mem:[from __region_USB_DMA_RAM_start__ to __region_USB_DMA_RAM_end__];

define symbol __region_EMAC_DMA_RAM_start__ = 0x7FE00000;
define symbol __region_EMAC_DMA_RAM_end__ = 0x7FE03FFF;
define region EMAC_DMA_RAM_region= mem:[from __region_EMAC_DMA_RAM_start__ to __region_EMAC_DMA_RAM_end__];

place in RAM_region { readwrite,
block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
block UND_STACK, block ABT_STACK, block HEAP };
place in USB_DMA_RAM_region
{ section USB_DMA_RAM };
place in EMAC_DMA_RAM_region
{ section EMAC_DMA_RAM };

сейчас если я хочу положить в область USB или EMAC что то, то нужно явно указывать:
int var @ "USB_DMA_RAM";

Хотелось бы так определить эти три зоны в icf файле, чтобы не нужно было явно указывать расположение для переменных.
Вот такой трюк не прокатил:
place in RAM_region { readwrite,
block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
block UND_STACK, block ABT_STACK, block HEAP };
place in USB_DMA_RAM_region
{ readwrite };
place in EMAC_DMA_RAM_region
{ readwrite };


Сообщение отредактировал grinux - Aug 27 2017, 20:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Aug 28 2017, 06:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(grinux @ Aug 27 2017, 23:12) *
Может кто-нибудь знает, как заставить линкер автоматически раскидывать rw данные по памяти, состоящей, например, у NXP LPC23xx из трех кусков.

Код
define region RAM_regionA   = mem:[from 0x1FFE8000 size 0x18000]; //PSRAM (code)
define region RAM_regionB   = mem:[from 0x20000000 size 0x20000]; //DSRAM1 (RW-data)
define region RAM_regionC   = mem:[from 0x20020000 size 0x20000]; //DSRAM2 (RW-data)
...
place in RAM_regionB | RAM_regionC {rw, first block CSTACK, section .raw, block HEAP};

PS: Неужто кто-то ещё пишет новое ПО для столь старого МК?? wacko.gif
Go to the top of the page
 
+Quote Post



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

 


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


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