|
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 включить? Хочу кеш данных использовать.
|
|
|
|
|
 |
Ответов
|
Oct 7 2006, 16:55
|
Частый гость
 
Группа: Свой
Сообщений: 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'ы  Про 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 (у автора исходного сообщения) может совсем и не виноват).
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|