Добрый день.
Запрограммирована таблица TTB, реальные адреса совпадают с реальными.
Цитата
for (i = 0; i < 4096; ++i)
pTranslationTable[i] = ((i << 20) + 0x12);
Включено : MMU, I-cache, D-cache
Область памяти, где находится программа объявлена кэшируемой и буферизируемой.
Цитата
pTranslationTable[0x21f] += (1<<2) + (1<<3);
Есть код :
Цитата
AT91F_US_ReceiveFrame(COM3,(char *)message,5,0,0);
if ((message[0]==(char)0x73) & (message[1]==(char)0x74) & (message[2]==(char)0x61) & (message[3]==(char)0x72) & (message[4]==(char)0x74))AT91C_BASE_PIOA->PIO_CODR |= ( LED_USER ) ;
if ((message[0]==(char)0x73) & (message[1]==(char)0x74) & (message[2]==(char)0x6F) & (message[3]==(char)0x70)) AT91C_BASE_PIOA->PIO_SODR |= ( LED_USER ) ;
AT91F_US_SendFrame(COM3,(char *)message,5,0,0);
переменная message -> массив char, объявленный глобально. В описанном коде переменная не меняется, такое ощущение что достается из кэша. Если область памяти, где находится программа объявить не кэшируемой и не буфферизируемой, то код начинает работать как надо.
Самое простое решение - вынести переменную в область памяти, объявленной не кэшируемой и не буфферизируемой или есть другое решение?