|
|
  |
Watchpoint-ы на Microblaze c MMU, Почему-то не работают |
|
|
|
Oct 25 2016, 08:40
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 25 2016, 10:59)  2 Олег Гаврильченко вы пробовали на простых conditions который 100% должны пройти ? Простите, я не понял, что значить простые conditions? Я ставлю watchpoint на адрес, (даже проверяю в xmd что она стоит на правильном адресе), и в программе программе происходит запись по этому адресу. Но Watchpoint почему-то не срабатывает. Если я затем пытаюсь остановить MCU в XMD командой stop, то выдаются сообщения об ошибках непонятных: Error: Microblaze stalled on a blocking instruction or invalid bus access <некий адрес> Или один раз даже когда я ввел в XMD команду stop, MCU не остановился(!), но мне 3 раза было выдано такое сообщение(я точно сообщение не запомнил): ERROR: Exception TLB data EAR=<адрес на который я ставил Watchpoint>. Может быть дело в каких-то неудовлетворенных времянных ограничениях? Формально они все проходят, но у меня на тактовом сигнале MCU минимальное Setup time 0,035 нс. Я на одном из форумов читал, что подобные ошибки могут происходить из за времянок. Но там была только первая ошибка. Или может я не до конца понимаю, как работают Watchpoints при включенном MMU.
|
|
|
|
|
Oct 25 2016, 13:10
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 25 2016, 15:41)  Вы учитываете что Addr должен быть virtual? Да, если я правильно понимаю, то watchpoint ставиться именно на виртуальный адрес, не на физический?
|
|
|
|
|
Oct 25 2016, 13:49
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 25 2016, 16:41)  2 Олег Гаврильченко Именно {Microblaze c MMU} не пользовал, но исходя из того что видел у армов - breakpoint-ы идут по virtual. Так же возможен вариант работы с cache. Breakpoint-ы работают нормально, ставятся на виртуальный адрес и срабатывают. Проблемы именно с Watchpoints возникают. Кэш 1-го уровня(внутри MCU) включен 32k, write-back и на иструкции и на данные. Проблемы могут быть как-то связаны с кэшем?
Сообщение отредактировал Олег Гаврильченко - Oct 25 2016, 13:57
|
|
|
|
|
Oct 25 2016, 14:24
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 25 2016, 17:16)  Вот это
говорит что у вас проблемы именно с Addr -> EAR== Exception Address Register Исходя из того что помню - если есть обращение к Addr но мы его не нашли в таблице, мы генерируем exception. А адрес страницы памяти в которой находиться адрес на которую я ставил Watchpoint обязательно должен быть в TLB?
|
|
|
|
|
Oct 25 2016, 17:20
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Олег Гаврильченко Обязательно должен быть TLB entry чтобы оттранслировать. НО, я тут взглянул одним глазом в MicroBlaze Processor Reference Guide чтобы как то прояснить для себя ситуацию ({Microblaze c MMU}-зверюшка для меня новая): Chapter 2: MicroBlaze Architecture, а именно Exception Address Register (EAR) И думаю что ваш случай: - A data TLB miss exception that specifies the (virtual) effective address accessed Судя по первому сообщению. Проверьте ещё Exception Status Register (ESR) и если это подтвердится, тогда у вас такой case: Цитата ..If the requested data is not found in TLB, a TLB miss (similar as cache miss) is generated, followed by the page table translation and TLB update operation.
|
|
|
|
|
Oct 26 2016, 08:55
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 25 2016, 20:20)  2 Олег Гаврильченко Обязательно должен быть TLB entry чтобы оттранслировать. НО, я тут взглянул одним глазом в MicroBlaze Processor Reference Guide чтобы как то прояснить для себя ситуацию ({Microblaze c MMU}-зверюшка для меня новая): Chapter 2: MicroBlaze Architecture, а именно Exception Address Register (EAR) И думаю что ваш случай: - A data TLB miss exception that specifies the (virtual) effective address accessed Судя по первому сообщению. Проверьте ещё Exception Status Register (ESR) и если это подтвердится, тогда у вас такой case: Вы уверены, что адрес страницы с тем адресом на который я поставил Watchpoint должен быть в TLB? У меня ядро Linux, оно постоянно переписывает TLB, и исключение TLB miss exception обрабатывает сама. И зачем все таки необходимо иметь в TLB адрес этой страницы? Ведь нужно только остановить процессор при попытке записи туда.
|
|
|
|
|
Oct 27 2016, 15:27
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Kuzmi4 @ Oct 27 2016, 18:19)  2 Олег Гаврильченко в принципе вам и не надо её насиловать, проверьте какой то case где где вы точно можете увидеть выходящий request.. Простите, я не понял, что нужно проверить? Я отлаживаю очень тяжелый случай в драйвере Linux. Очень редко происходит ситуация, что кто-то перезависывает одну из переменных. Но кто это делает не понятно, поэтому мне и нужен watchpoint.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|