Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: lpc2378 и ETHERNET RAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
r301
В проекте используется lpc2378. Ни ETHERNET ни USB не используется.
Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ?
Если да, то как это сделать?
Для разработки используется keil + GCC, как я понимаю надо править LinkerScript.ld, но я не понял как указать для секции DATA два участка памяти. Какие будут мысли по этому поводу?
KRS
Цитата(r301 @ Feb 13 2008, 14:26) *
В проекте используется lpc2378. Ни ETHERNET ни USB не используется.
Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ?

Не забудьте посмотреть ERRATA, там есть ограничения и особенности.
Vitaliy_ARM
Цитата(r301 @ Feb 13 2008, 14:26) *
В проекте используется lpc2378. Ни ETHERNET ни USB не используется.
Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ?
Если да, то как это сделать?
Для разработки используется keil + GCC, как я понимаю надо править LinkerScript.ld, но я не понял как указать для секции DATA два участка памяти. Какие будут мысли по этому поводу?


Использовать можно, только GPDMA не имеет доступа к Ethernet RAM. Кейлом не пользуюсь. Самый простой вариант, если нужно там размещать большие буфера, то можно сделать вот так, и контроллировать все в ручную:

int main()
{
DWORD *pBuf = 0x7FE00000; // указатель на буфер в памяти Ethernet
DWORD Data;

*pBuf = 0x01020304;

Data = *pBuf; // Data = 0x01020304
}
zltigo
Цитата(Vitaliy_ARM @ Feb 14 2008, 02:32) *
Самый простой вариант...

Самый простой - сказать линкеру, что у него два блока RAM - пусть линкует.
r301
Цитата(zltigo @ Feb 14 2008, 03:11) *
Самый простой - сказать линкеру, что у него два блока RAM - пусть линкует.


вот я и спрашиваю, как это объяснить линкеру.
TanT
Цитата
Самый простой - сказать линкеру, что у него два блока RAM - пусть линкует.


Уважаемый Игорь, тема конечно старая, но действительно: как объяснить линкёру что у него два блока RAM? В частности в файле .xcl это можно оформить. (использую IAR)
HARMHARM
Цитата(TanT @ Mar 27 2009, 11:56) *
Как объяснить линкёру что у него два блока RAM? В частности в файле .xcl это можно оформить. (использую IAR)

-DRAMSTART=40000040
-DRAMEND=40007FDF
-DETHRAMSTART=7FE00000
-DETHRAMEND=7FE03FFF
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND,ETHRAMSTART-ETHRAMEND
lebiga
IAR 5xx
lpc23xxx.icf

...
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__];

do not initialize { section USB_DMA_RAM }; // не инициализировать - это если нужно...
do not initialize { section EMAC_DMA_RAM };

place in USB_DMA_RAM_region
{ readwrite data section USB_DMA_RAM };
place in EMAC_DMA_RAM_region
{ readwrite data section EMAC_DMA_RAM };



в файле *.с

#pragma segment="USB_DMA_RAM"
#pragma location="USB_DMA_RAM"
#pragma data_alignment=4
long buffer[2048]; // 8192 байт

или

char buffer[8192]; // 8192 байт
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.