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

 
 
> ARM920T - MMU, AT91RM9200 доступ к глобальной переменной
Arischenko Ivan
сообщение Oct 4 2010, 08:21
Сообщение #1


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

Группа: Участник
Сообщений: 112
Регистрация: 29-10-06
Пользователь №: 21 768



Добрый день.
Запрограммирована таблица 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, объявленный глобально. В описанном коде переменная не меняется, такое ощущение что достается из кэша. Если область памяти, где находится программа объявить не кэшируемой и не буфферизируемой, то код начинает работать как надо.
Самое простое решение - вынести переменную в область памяти, объявленной не кэшируемой и не буфферизируемой или есть другое решение?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 22:12
Рейтинг@Mail.ru


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