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

 
 
> 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
Ответов
yuri_t
сообщение Sep 30 2006, 17:41
Сообщение #2


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Использование 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"
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Sep 30 2006, 19:54
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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, и его наличие тоже является проблемой. smile.gif


Цитата(yuri_t @ Sep 30 2006, 21:42) *
Насчет использования I-cache without MMU/MPU - да, в даташите на AT91RM920 это
описывается, но я лично так бы делать не стал...

Ну уж нет, оно того стОит- ускорение в четыре раза это не шуточки!
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
- - 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


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

 


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


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