|
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, 19:54
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(yuri_t @ Sep 30 2006, 20:41)  Использование cache без включенного MMU не рекомендуется (нельзя это делать вообще-то). Если у Вас не Linux с MMU, то MMU надо использовать в режиме MPU (иначе при переключении контекста придется выгружать cache). Для I/O портов надо создать регион(ы), где кеширование запрещено.
Иcпользование MMU/MPU и cachies - это большая тема и, к сожалению, в двух словах об этом не рассказать. Настоятельно рекомендую почитать об этом в книге Andrew Sloss , Dominic Symes , Chris Wright "ARM System Developer's Guide: Designing and Optimizing System Software" У меня не Линукс, у меня Юкос. Насчет выгрузить кеш при переключении контекста- я согласен это сделать, но не знаю как. Завтра попробую, как мне уже подсказали, инвалидизировать его. Насчет книг- спасибо за наводку, гляну. Еще вот увидел в документации на ядро 920T о кешах. А про MMU я со времен Блэкфина еще что-то помню. Потому что там его не было вообще, и это составляло проблему. Теперь же у меня есть MMU, и его наличие тоже является проблемой.  Цитата(yuri_t @ Sep 30 2006, 21:42)  Насчет использования I-cache without MMU/MPU - да, в даташите на AT91RM920 это описывается, но я лично так бы делать не стал... Ну уж нет, оно того стОит- ускорение в четыре раза это не шуточки!
|
|
|
|
Сообщений в этой теме
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 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 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
|
|
|