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;
Все работает.
Извиняюсь, может сумбурно описал проблему. Задавайте наводящие вопросы.