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

 
 
 
Reply to this topicStart new topic
> lpc2378 и ETHERNET RAM
r301
сообщение Feb 13 2008, 11:26
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 20-10-07
Пользователь №: 31 533



В проекте используется lpc2378. Ни ETHERNET ни USB не используется.
Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ?
Если да, то как это сделать?
Для разработки используется keil + GCC, как я понимаю надо править LinkerScript.ld, но я не понял как указать для секции DATA два участка памяти. Какие будут мысли по этому поводу?
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 13 2008, 12:00
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(r301 @ Feb 13 2008, 14:26) *
В проекте используется lpc2378. Ни ETHERNET ни USB не используется.
Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ?

Не забудьте посмотреть ERRATA, там есть ограничения и особенности.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Feb 13 2008, 23:32
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(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
}

Сообщение отредактировал Vitaliy_ARM - Feb 13 2008, 23:33


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 14 2008, 00:11
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Vitaliy_ARM @ Feb 14 2008, 02:32) *
Самый простой вариант...

Самый простой - сказать линкеру, что у него два блока RAM - пусть линкует.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
r301
сообщение Feb 14 2008, 01:34
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 20-10-07
Пользователь №: 31 533



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


вот я и спрашиваю, как это объяснить линкеру.
Go to the top of the page
 
+Quote Post
TanT
сообщение Mar 27 2009, 09:56
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



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


Уважаемый Игорь, тема конечно старая, но действительно: как объяснить линкёру что у него два блока RAM? В частности в файле .xcl это можно оформить. (использую IAR)

Сообщение отредактировал TanT - Mar 27 2009, 10:10


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 27 2009, 14:21
Сообщение #7


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(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
Go to the top of the page
 
+Quote Post
lebiga
сообщение Mar 30 2009, 07:51
Сообщение #8


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

Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292



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 байт
Go to the top of the page
 
+Quote Post

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

 


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


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