ATmega128 и внешнее ОЗУ
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Overheat 06 января 2004 г. 10:15

Помогите разобраться...
На плате стоят ATmega128 и ОЗУ(32Kx8). Пишу под IAR 2.28.
Разрешаю работу с внешним ОЗУ:
SetBitsPort(MCUCR,0x80); // MCUCR |= 0x80; // XRAM enabled
SetBitsPort(XMCRB,0x01); // XMCRB |= 0x01;
SetBitsPort(DDRC,0x80); // DDRC |= 0x80;
ResetBitsPort(PORTC,0x80); // PORTC &= ~0x80;

Правлю low_level_init.c дабы разрешить размещение RSTACK во внешнем ОЗУ:
__require(__RSTACK_in_external_ram);

В xcl файле прописал базу и размер внешней памяти
-D_..X_EXT_SRAM_BASE=1100
-D_..X_EXT_SRAM_SIZE=6000


И что получается
Если память распределяется следующим образом:
NEAR_Z, RSTACK, CSTACK во внутреннем ОЗУ, а
HEAP во внешнем, то все работает.
Если же один из сегментов (NEAR_Z, RSTACK, CSTACK) оказывается во внешнем, то программа даже не начинает работать.

Пробовал простые тесты памяти:
Циклицески писал и читал по указалелю на адрес больший чем 0x1100;
Все работает.

Извиняюсь, может сумбурно описал проблему. Задавайте наводящие вопросы.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru