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

 
 
> Пошаговый отладчик пользовательской программы, как это делается?
TMX
сообщение Mar 25 2006, 07:20
Сообщение #1


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

Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064



Возникла задача разработки транслятора технологического языка программирования. Требуется, чтобы была возможность пошаговой отладки на целевом устройстве.
Как это делается вообще?
Задача выполняется на ARM (LPC или SAM7, скорее первый).
Основная проблема - как заставить ядро ARM выходить в обработку исключения при достижении заданного адреса в пользовательской программе.
Пока решения следующие (в скобках - пятибалльный показатель уверенности в результате):
. Заливать отладочный вариант проги со SWI после каждой макрокоманды(4).
. Вызывать в цикле пользовательские команды в виде отдельных функций по ссылке, с выходом в проверку после каждого вызова(5+).
. Ставить внешний Atmega8, который буде рулить JTAG-ом(2).
. Не сбрасывать флаг прерывания, чтобы проц каждый раз заходил в обработку при исполнении очередной команды(1).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Mar 25 2006, 09:38
Сообщение #2


Гуру
******

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



Цитата(TMX @ Mar 25 2006, 09:20) *
Как это делается вообще?

Читаем последние главы мануала на LPC посвященные поддержке разных способов отладки.
А вообще-то этот раздел DSP посвящен.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
TMX
сообщение Mar 25 2006, 15:34
Сообщение #3


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

Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064



Цитата(zltigo @ Mar 25 2006, 12:38) *
Читаем последние главы мануала на LPC посвященные поддержке разных способов отладки.

Ну и читайте на здоровье...
Я эти главы прочитал: все эти способы отладки, насколько я понял, требуют внешнего JTAG, см. рис. 40, 43, 44.
А это для моей задачи избыточно.
Мне достаточно, чтобы только код юзера исполнялся. Т.е. у меня есть возможность вставлять в его код отладочные строки т.п. Просто интересует, как это делается обычно.
Go to the top of the page
 
+Quote Post
makc
сообщение Mar 25 2006, 16:00
Сообщение #4


Гуру
******

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



Цитата(TMX @ Mar 25 2006, 18:34) *
Цитата(zltigo @ Mar 25 2006, 12:38) *

Читаем последние главы мануала на LPC посвященные поддержке разных способов отладки.

Ну и читайте на здоровье...
Я эти главы прочитал: все эти способы отладки, насколько я понял, требуют внешнего JTAG, см. рис. 40, 43, 44.
А это для моей задачи избыточно.
Мне достаточно, чтобы только код юзера исполнялся. Т.е. у меня есть возможность вставлять в его код отладочные строки т.п. Просто интересует, как это делается обычно.


Когда я столкнулся с подобной проблемой отладки у меня не было JTAG'a, да и времени его делать тоже. Проштудировав документацию я пришел к тому же самому выводу - отладка без внешнего JTAG'a довольно большая проблема, если только не использовать отладочную версию прошивки/программы и т.п. После этого я сделал себе макросы на C, которые в случае компиляции отладочной версии прошивки в критических местах выдают отладочную информацию в UART. Мне этого хватило...

PS: Я одного не могу понять: добавить в ядро ARM отладочные регистры, с помощью которых можно было бы программно устанавливать точки останова по нескольким условиям (наподобие того, как это сделано в IA32/IA64) совсем не большая проблема. Почему этого не сделали? Единственное объяснение - узкая специализация ядра на встраиваемые применения, где можно и нужно с точки зрения разработчиков отлаживаться с помощью JTAG'a и ему подобных средств внутрисистемной отладки.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TMX   Пошаговый отладчик пользовательской программы   Mar 25 2006, 07:20
|- - DASM   Цитата(zltigo @ Mar 25 2006, 12:38) Цитат...   Mar 25 2006, 10:41
||- - makc   Цитата(DASM @ Mar 25 2006, 13:41) Как это...   Mar 25 2006, 10:57
- - zltigo   Цитата(TMX @ Mar 25 2006, 17:34) Ну и чит...   Mar 25 2006, 16:48
|- - TMX   Цитата(zltigo @ Mar 25 2006, 19:48) Плохо...   Mar 25 2006, 17:24
||- - makc   Цитата(TMX @ Mar 25 2006, 20:24) В сущнос...   Mar 25 2006, 17:50
||- - psL   Цитата(makc @ Mar 25 2006, 20:50) А что д...   Mar 25 2006, 20:10
||- - 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


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 05:13
Рейтинг@Mail.ru


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