|
AT91RM9200: использование кеша и Data Abort, Выключаю кеш- и ошибка пропадает |
|
|
|
Sep 30 2006, 16:58
|
Гуру
     
Группа: Свой
Сообщений: 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 включить? Хочу кеш данных использовать.
|
|
|
|
|
 |
Ответов
|
Sep 30 2006, 20:43
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(yuri_t @ Sep 30 2006, 23:35)  Я не призываю не использовать cache, IMHO, просто надежней ее использовать совместно с MMU.
Вот цитата из ARM920T Technical Reference Manual, Rev. DDI0151C.
4.2.2 Enabling and disabling the ICache
"...The ICache is usually used with the MMU enabled. In this case the Ctt in the relevant MMU translation table descriptor indicates whether an area of memory is cachable." Да я ж не против, я только за обеими четырьмя конечностями! Но это ж не так просто, задействовать MMU. (Все, вырубаюсь, спать охота. Завтра все, что тут рекомендовали, попробую начать воплощать.)
|
|
|
|
Сообщений в этой теме
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 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 cf7k В доку по ядру 920 про использование кэша без ММУ ... Oct 7 2006, 16:55 aaarrr Цитата(cf7k @ Oct 7 2006, 20:55) Возможно... Oct 7 2006, 17:35 cf7k Цитата(aaarrr @ Oct 7 2006, 21:35) Так не... Oct 7 2006, 20:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|