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

 
 
> AT91RM9200: использование кеша и Data Abort, Выключаю кеш- и ошибка пропадает
Ruslan1
сообщение Sep 30 2006, 16:58
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Сразу оговорюсь, что если я не включаю кеш в бутлодере, то все работает отлично.

В своем первичном бутлодере включаю кеш команд:

__MCR(15,0,__MRC(15,0,1,0,0) | 0x00001000,1,0,0) ;

Кеш данных не включаю, так как MMU не использую (не умею), а без MMU он не работает.
Все отлично и шикарно, ускорение ого-го (в 4 раза при тестировании SDRAM).
Но вот когда загружаю в SDRAM основную прошивку и перехожу на нее, то в какой-то момент возникает исключение по вектору 0x10 (Data Abort). При попытке пошагово просмотреть то место, с которого происходит исключение, ничего крамольного не вижу. Более того- если я даже просто ставлю точку останова в основной программе до возникновения исключения, то дальше исключения уже не происходит. То есть достаточно поставить отладчиком точку останова, а при остановке запустить дальше- и никаких усключений, все работает отлично. Такое ощущение, что пока оно стоит, что-то там в кеше успевает дозреть и далее работает нормально.

Ну ладно. Выключаю кеш в конце бутлодера и потом включаю его по новой в основном коде- тоже возникает исключение.

Передаю управление основной программе из бутлодера в состоянии, как можно более близком к ресету (в основной программе происходит полный стартап, кроме уже проинициализированной бутлодером периферии): и ARM-мода, и прерывания выключены, и в супервизоре. Чего ему еще не хватает, не понимаю.

С помощью метода тыка добился почти работоспособного варианта: выключаю кеш где-то посередине бутлодера, и включаю его уже потом в основной программе.

В-общем шаманство какое-то. Может кто-то сталкивался с подобным?
И от чего вообще может возникает этот Data Abort, если я не включаю кеш данных (кстати, пробовал включать, ничего не изменилось), и не использую MMU ?
И вдогонку: а как MMU включить? Хочу кеш данных использовать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
cf7k
сообщение Oct 7 2006, 16:55
Сообщение #2


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

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



В доку по ядру 920 про использование кэша без ММУ написано это:

If the cache is enabled with the MMU disabled, all instruction fetches are treated as
cachable. No protection checks are made, and the physical address is flat-mapped to the
modified virtual address


Так что на стадии освоения вполне можно ускоряться кэшированием и без виртуальной адресации...
Так же для ускорения крайне положительно будет включить синхронный режим шины:

Код
  //i-cache
    asm("MRC p15, 0,  r0, c1, c0, 0");
    asm("ORR r0,  r0, #0x00001000");
    asm("MCR p15, 0,  r0, c1, c0, 0");
  //sync bus
    asm("MRC p15, 0,  r0, c1, c0, 0");
    asm("ORR r0,  r0, #0x40000000");
    asm("MCR p15, 0,  r0, c1, c0, 0");


Сам поездил... ускорение к "просто включенному кэшу" выводит на планируемые MIPS'ы smile.gif

Про DCache написано такое:

You must only enable the DCache when the MMU is enabled. This is because the
MMU translation tables define the cache and write buffer configuration for each
memory region.


Возможно как раз некогерентность кэша данных из-за этого и появилась... (т.е. ICache (у автора исходного сообщения) может совсем и не виноват).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ruslan1   AT91RM9200: использование кеша и Data Abort   Sep 30 2006, 16:58
- - aaarrr   Не совсем понятно, что у Вас происходит с кешем в ...   Sep 30 2006, 17:36
|- - Ruslan1   Цитата(aaarrr @ Sep 30 2006, 20:36) Не со...   Sep 30 2006, 19:28
- - yuri_t   Использование cache без включенного MMU не рекомен...   Sep 30 2006, 17:41
|- - Ruslan1   Цитата(yuri_t @ Sep 30 2006, 20:41) Испол...   Sep 30 2006, 19:54
- - aaarrr   Цитата(yuri_t @ Sep 30 2006, 21:41) Испол...   Sep 30 2006, 18:07
- - yuri_t   To aaarrr Насчет использования I-cache without MM...   Sep 30 2006, 18:42
- - aaarrr   Цитата(Ruslan1 @ Sep 30 2006, 23:28) Насч...   Sep 30 2006, 20:16
|- - Ruslan1   Цитата(aaarrr @ Sep 30 2006, 23:16) Цитат...   Sep 30 2006, 20:35
- - yuri_t   Я не призываю не использовать cache, IMHO, просто ...   Sep 30 2006, 20:35
|- - Ruslan1   Цитата(yuri_t @ Sep 30 2006, 23:35) Я не ...   Sep 30 2006, 20:43
- - aaarrr   Цитата(Ruslan1 @ Oct 1 2006, 00:35) Вона ...   Sep 30 2006, 21:44
- - DropDown   Цитата(Ruslan1 @ Sep 30 2006, 19:58) И вд...   Oct 1 2006, 05:53
- - Rst7   Цитата(Ruslan1 @ Sep 30 2006, 19:58) В-об...   Oct 1 2006, 07:03
- - sergeeff   Ощущение такое, что ошибка в чем-то другом. Я рабо...   Oct 2 2006, 05:29
- - aaarrr   Цитата(cf7k @ Oct 7 2006, 20:55) Возможно...   Oct 7 2006, 17:35
- - cf7k   Цитата(aaarrr @ Oct 7 2006, 21:35) Так не...   Oct 7 2006, 20:27


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:19
Рейтинг@Mail.ru


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