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

 
 
 
Reply to this topicStart new topic
> Watchpoint-ы на Microblaze c MMU, Почему-то не работают
Олег Гаврильченк...
сообщение Oct 24 2016, 17:49
Сообщение #1


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

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



Отлаживаю драйвер для Linux на Microblaze. Начал использовать аппаратные Watchpoints, включил поддержку 4 breakpoints и 2 Watchpoins. Для отладки использую XMD+GDB. При установке watchpoint срабатывания почему-то не происходит. Возможно кто-то сталкивался.


Сообщение отредактировал Олег Гаврильченко - Oct 24 2016, 17:50
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 25 2016, 07:59
Сообщение #2


Гуру
******

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



2 Олег Гаврильченко
вы пробовали на простых conditions который 100% должны пройти ?
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 25 2016, 08:40
Сообщение #3


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

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 25 2016, 12:41
Сообщение #4


Гуру
******

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



Вы учитываете что Addr должен быть virtual?
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 25 2016, 13:10
Сообщение #5


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

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



Цитата(Kuzmi4 @ Oct 25 2016, 15:41) *
Вы учитываете что Addr должен быть virtual?

Да, если я правильно понимаю, то watchpoint ставиться именно на виртуальный адрес, не на физический?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 25 2016, 13:41
Сообщение #6


Гуру
******

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



2 Олег Гаврильченко
Именно {Microblaze c MMU} не пользовал, но исходя из того что видел у армов - breakpoint-ы идут по virtual.
Так же возможен вариант работы с cache.
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 25 2016, 13:49
Сообщение #7


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 25 2016, 14:16
Сообщение #8


Гуру
******

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



Вот это
Цитата(Олег Гаврильченко @ Oct 25 2016, 11:40) *
ERROR:
Exception TLB data EAR=<адрес на который я ставил Watchpoint>.

говорит что у вас проблемы именно с Addr -> EAR== Exception Address Register
Исходя из того что помню - если есть обращение к Addr но мы его не нашли в таблице, мы генерируем exception.
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 25 2016, 14:24
Сообщение #9


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

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



Цитата(Kuzmi4 @ Oct 25 2016, 17:16) *
Вот это

говорит что у вас проблемы именно с Addr -> EAR== Exception Address Register
Исходя из того что помню - если есть обращение к Addr но мы его не нашли в таблице, мы генерируем exception.

А адрес страницы памяти в которой находиться адрес на которую я ставил Watchpoint обязательно должен быть в TLB?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 25 2016, 17:20
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 26 2016, 08:55
Сообщение #11


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

Группа: Участник
Сообщений: 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 адрес этой страницы? Ведь нужно только остановить процессор при попытке записи туда.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 26 2016, 11:43
Сообщение #12


Гуру
******

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



2 Олег Гаврильченко
исходил из вот этого:
http://i.stack.imgur.com/MlEIQ.jpg
Глобально, я вам пытаюсь сказать что скорее всего проблема в том что он не может оттраслировать нормально ваш virtual Addr и потому всегда сваливается в exception и потому по факту тригирование события не происходит.
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 27 2016, 15:08
Сообщение #13


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

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



Но TLB полностью контролируется ОС Linux, я не могу заставить ее хранить адрес выбранной страницы данных в TLB. Получается, не могу пользоваться Watchpoints..
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 27 2016, 15:19
Сообщение #14


Гуру
******

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



2 Олег Гаврильченко
в принципе вам и не надо её насиловать,
проверьте какой то case где где вы точно можете увидеть выходящий request..
Go to the top of the page
 
+Quote Post
Олег Гаврильченк...
сообщение Oct 27 2016, 15:27
Сообщение #15


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

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



Цитата(Kuzmi4 @ Oct 27 2016, 18:19) *
2 Олег Гаврильченко
в принципе вам и не надо её насиловать,
проверьте какой то case где где вы точно можете увидеть выходящий request..


Простите, я не понял, что нужно проверить? Я отлаживаю очень тяжелый случай в драйвере Linux. Очень редко происходит ситуация, что кто-то перезависывает одну из переменных. Но кто это делает не понятно, поэтому мне и нужен watchpoint.
Go to the top of the page
 
+Quote Post

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

 


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


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