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

 
 
> Prefetch abort
Grizzzly
сообщение Jun 5 2014, 06:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Пытаюсь найти ошибку, приводящую к prefetch abort. После остановки программы в отладчике прочитал регистры. R13 для SVC, FIQ, IRQ не превосходит границы областей, выделенных под соответствующие стеки. То есть их переполнения нет. При этом PC = FC13FFFC. Огромное число, которого не может быть. R14 = 00000000 в режиме SVC, в других режимах - огромные числа. Так, R14_abt = 20000097 (как он получился нечетным?). Поэтому SUBS PC,R14_abt,#4 не помогает. Таких огромных адресов нет.
Как в данном случае понять, где возникает ошибка?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jun 5 2014, 07:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Останавливаете после уже "улёта" в неизвестность?
В этом случае - толку от содержимого регистров ==0.
До того как вы нажали HALT в отладчике, CPU уже успел выполнить неск. миллионов инструкций, и многократно переписал эти регистры.

Такую ошибку отловить сложно и очень долго и муторно.
Хотя вроде есть Tracer-ы, которые умеют запоминать сколько-то последних инструкций и отматывать назад. Но стоят жорого и требуют особенного подключения для себя (Trace).

Когда у меня были подобные проблемы, приходилось использовать таймер с высокочастотным прерыванием:
Так скажем с частотой 1МГц (или чаще) вызывалась ISR и писала в буфер содержимое регистров и стека.
И проверяла некоторые условия - например - нахождение SP и PC в пределах некоторых значений с остановом если
вышли за диапазон.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:33
Рейтинг@Mail.ru


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