Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Watchpoint-ы на Microblaze c MMU
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Олег Гаврильченко
Отлаживаю драйвер для Linux на Microblaze. Начал использовать аппаратные Watchpoints, включил поддержку 4 breakpoints и 2 Watchpoins. Для отладки использую XMD+GDB. При установке watchpoint срабатывания почему-то не происходит. Возможно кто-то сталкивался.
Kuzmi4
2 Олег Гаврильченко
вы пробовали на простых conditions который 100% должны пройти ?
Олег Гаврильченко
Цитата(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.
Kuzmi4
Вы учитываете что Addr должен быть virtual?
Олег Гаврильченко
Цитата(Kuzmi4 @ Oct 25 2016, 15:41) *
Вы учитываете что Addr должен быть virtual?

Да, если я правильно понимаю, то watchpoint ставиться именно на виртуальный адрес, не на физический?
Kuzmi4
2 Олег Гаврильченко
Именно {Microblaze c MMU} не пользовал, но исходя из того что видел у армов - breakpoint-ы идут по virtual.
Так же возможен вариант работы с cache.
Олег Гаврильченко
Цитата(Kuzmi4 @ Oct 25 2016, 16:41) *
2 Олег Гаврильченко
Именно {Microblaze c MMU} не пользовал, но исходя из того что видел у армов - breakpoint-ы идут по virtual.
Так же возможен вариант работы с cache.

Breakpoint-ы работают нормально, ставятся на виртуальный адрес и срабатывают. Проблемы именно с Watchpoints возникают.
Кэш 1-го уровня(внутри MCU) включен 32k, write-back и на иструкции и на данные. Проблемы могут быть как-то связаны с кэшем?
Kuzmi4
Вот это
Цитата(Олег Гаврильченко @ Oct 25 2016, 11:40) *
ERROR:
Exception TLB data EAR=<адрес на который я ставил Watchpoint>.

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

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

А адрес страницы памяти в которой находиться адрес на которую я ставил Watchpoint обязательно должен быть в TLB?
Kuzmi4
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.
Олег Гаврильченко
Цитата(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 адрес этой страницы? Ведь нужно только остановить процессор при попытке записи туда.
Kuzmi4
2 Олег Гаврильченко
исходил из вот этого:
http://i.stack.imgur.com/MlEIQ.jpg
Глобально, я вам пытаюсь сказать что скорее всего проблема в том что он не может оттраслировать нормально ваш virtual Addr и потому всегда сваливается в exception и потому по факту тригирование события не происходит.
Олег Гаврильченко
Но TLB полностью контролируется ОС Linux, я не могу заставить ее хранить адрес выбранной страницы данных в TLB. Получается, не могу пользоваться Watchpoints..
Kuzmi4
2 Олег Гаврильченко
в принципе вам и не надо её насиловать,
проверьте какой то case где где вы точно можете увидеть выходящий request..
Олег Гаврильченко
Цитата(Kuzmi4 @ Oct 27 2016, 18:19) *
2 Олег Гаврильченко
в принципе вам и не надо её насиловать,
проверьте какой то case где где вы точно можете увидеть выходящий request..


Простите, я не понял, что нужно проверить? Я отлаживаю очень тяжелый случай в драйвере Linux. Очень редко происходит ситуация, что кто-то перезависывает одну из переменных. Но кто это делает не понятно, поэтому мне и нужен watchpoint.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.