|
Пошаговый отладчик пользовательской программы, как это делается? |
|
|
|
 |
Ответов
|
Mar 25 2006, 16:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(TMX @ Mar 25 2006, 17:34)  Ну и читайте на здоровье... Плохо читали, ибо сложно не понять, что существует аппаратная поддержка BreakPoint, RealMonitor и Angel, реализующийся, например на RS232. Цитата PS: Я одного не могу понять: добавить в ядро ARM отладочные регистры, с помощью которых можно было бы программно устанавливать точки останова по нескольким условиям (наподобие того, как это сделано в IA32/IA64) совсем не большая проблема. Почему этого не сделали? Почему не сделали - сделали: The EmbeddedICE logic contains 16 registers. The ARM7TDMI-S debug architecture is described in detail in "ARM7TDMI-S (rev 4) Technical Reference Manual" (ARM DDI 0234A) published by ARM Limited and is available via Internet at http://www.arm.com.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 25 2006, 17:24
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064

|
Цитата(zltigo @ Mar 25 2006, 19:48)  Плохо читали, ибо сложно не понять, что существует аппаратная поддержка BreakPoint, RealMonitor и Angel, реализующийся, например на RS232. Возможно я плохо читал, но я не понял, как получить доступ к регистрам управления из программы. Буду благодарен за подсказку в какой конкретно регистр писать адрес останова? В сущности, куда записывать, чтобы программа вылетела по Prefetch Abort?
|
|
|
|
|
Mar 25 2006, 17:50
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(TMX @ Mar 25 2006, 20:24)  В сущности, куда записывать, чтобы программа вылетела по Prefetch Abort? На сколько я понимаю, исключение Prefetch Abort генерируется только в случае, если производитель процессора с ядром ARM использовал сигнал ABORT: Цитата An abort indicates that the current memory access cannot be completed. It is signaled by the external ABORT input. The ARM7TDMI-S checks for the abort exception at the end of memory access cycles. Иными словами, если контроллер памяти не дает сигнала ABORT, то пишите - не пишите, а исключения не получите. Цитата(zltigo @ Mar 25 2006, 20:43)  Цитата(makc @ Mar 25 2006, 19:37)  Тут ясно написано, что для программирования EmbeddedICE-RT используется TAP. Т.е. из самого отлаживаемого ядра процессора добраться до требуемых регистров EmbeddedICE не получится. Или я чего-то не понимаю?
Я уже объяснил, что ввело меня в заблуждение :-( Извиняюсь, пока я тут писал свой ответ, Вы успели ответить раньше.  Цитата(psL @ Mar 25 2006, 20:43)  обычно брекпоинт в мониторных системах представляет собой програмное прерывание - ловушку, по которому программа вываливается в отладчик, т.е. код операции пользовательской программы меняется на програмное прерывание, а сам код запоминается в некоторой структре. Вываливаемся в отладчик->смотрим что нужно->выполняем замещенный код->продолжаем выполнение программы.
Если я правильно понял задачу, в Вашем случае можно перед каждой интерпретируемой командой поставить ловушку, в обработчике которой анализировать признак выполнения по шагам. А что делать если код исполняется из FLASH? Его модифицировать "на лету" не получится. К тому же я слабо себе представлю, как будет работать такая подмена в случае конвейера ядра ARM. Ведь возврат будет происходить не на подмененную инструкцию, а на следующую за ней. Т.е. при подмене обработчик исключения должен будет обработать подмененную команду самостоятельно, а если она работает с памятью по относительному смещению (такое, кстати, бывает довольно часто)?
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Mar 25 2006, 20:10
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(makc @ Mar 25 2006, 20:50)  А что делать если код исполняется из FLASH? Его модифицировать "на лету" не получится. К тому же я слабо себе представлю, как будет работать такая подмена в случае конвейера ядра ARM. Ведь возврат будет происходить не на подмененную инструкцию, а на следующую за ней. Т.е. при подмене обработчик исключения должен будет обработать подмененную команду самостоятельно, а если она работает с памятью по относительному смещению (такое, кстати, бывает довольно часто)? Все правильно говорите. Но: Возможно я не правильно уловил суть вороса - помоему человеку нужна отладка в интерперетаторе, а не эмуляция отладки самого интерпретатора через JTAG, которая, насколько мне известно, невозможна.
|
|
|
|
Сообщений в этой теме
TMX Пошаговый отладчик пользовательской программы Mar 25 2006, 07:20 zltigo Цитата(TMX @ Mar 25 2006, 09:20) Как это ... Mar 25 2006, 09:38 DASM Цитата(zltigo @ Mar 25 2006, 12:38) Цитат... Mar 25 2006, 10:41  makc Цитата(DASM @ Mar 25 2006, 13:41) Как это... Mar 25 2006, 10:57 TMX Цитата(zltigo @ Mar 25 2006, 12:38) Читае... Mar 25 2006, 15:34  makc Цитата(TMX @ Mar 25 2006, 18:34) Цитата(z... Mar 25 2006, 16:00    makc Цитата(psL @ Mar 25 2006, 23:10) Цитата(m... Mar 25 2006, 21:23 makc Цитата(zltigo @ Mar 25 2006, 19:48) Цитат... Mar 25 2006, 17:37 TMX Возможно, я не совсем правильно спросил,
добавлю:
... Mar 25 2006, 17:03 zltigo Цитата(TMX @ Mar 25 2006, 19:24) В сущнос... Mar 25 2006, 17:33 zltigo Цитата(TMX @ Mar 25 2006, 19:03) Возможно... Mar 25 2006, 17:41 psL обычно брекпоинт в мониторных системах представляе... Mar 25 2006, 17:43 zltigo Цитата(makc @ Mar 25 2006, 19:37) Тут ясн... Mar 25 2006, 17:43 zltigo Цитата(makc @ Mar 25 2006, 19:50) А что д... Mar 25 2006, 18:12 TMX Большое спасибо всем ответившим, не имел доступа к... Mar 28 2006, 08:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|