ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
3345
Overheat (06.01.2004 09:40, просмотров: 2882)
ATmega128 и внешнее ОЗУ Помогите разобраться...
На плате стоят 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 во внешнем ОЗУ.

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


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

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

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