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

 
 
 
Reply to this topicStart new topic
> printf в IAR 5.5, увидеть выводимое printf с отладчиком JetLink
dkukushkin
сообщение May 14 2010, 07:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-04-10
Пользователь №: 56 643



Для удобства хочется видеть под отладчиком что печатается с помощью printf. Среда IAR 5.5, контроллер ARM7S, отладчик JetLink 5.

Нашел что вроде как нужно включить C-Spy в опциях проекта, Linker, вкладка Output и смотреть в IO Terminal. Но на этой вкладке у меня почему-то только 1 флаг и 1 текстовое поле: "Output file" и "Include debug information in output" соответственно. Никаких других элементов там нет. В IO Terminal пусто -- никакой информации не выводится вообще. Скачал полную версию -- то же самое.

Собственно, что делать? Как увидеть что выводится с помощью printf? Уже 2 дня бьюсь...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 14 2010, 09:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dkukushkin @ May 14 2010, 10:20) *
Как увидеть что выводится с помощью printf?

Напишите свою пустышку putchar, поставьте там точку останова и смотрите побайтно глазками.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
dkukushkin
сообщение May 14 2010, 09:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-04-10
Пользователь №: 56 643



Цитата(Dog Pawlowa @ May 14 2010, 12:08) *
Напишите свою пустышку putchar, поставьте там точку останова и смотрите побайтно глазками.


Ага. Особенно удобно текст сообщения по 1-й букве читать. То что читалось бы за минуту -- нужно будет целый день по букве читать. Это же все для удобства и экономии времени делается. Должно же быть решение?
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 14 2010, 09:14
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(dkukushkin @ May 14 2010, 14:20) *
Для удобства хочется видеть под отладчиком что печатается с помощью printf. Среда IAR 5.5, контроллер ARM7S, отладчик JetLink 5.

Код
...
volatile char g_print_buffer[HOW_MACH_NEED_BYTES] = {0, };
volatile int idx = 0;
...
int putchar(int c)
{
    g_print_buffer[g_idx] = c;
    g_idx++;
    if(g_idx >= HOW_MACH_NEED_BYTES)
        g_idx = 0;        
}


--------------------
Go to the top of the page
 
+Quote Post
dkukushkin
сообщение May 14 2010, 09:24
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-04-10
Пользователь №: 56 643



Цитата(prottoss @ May 14 2010, 12:14) *
Код
...
volatile char g_print_buffer[HOW_MACH_NEED_BYTES] = {0, };
volatile int idx = 0;
...
int putchar(int c)
{
    g_print_buffer[g_idx] = c;
    g_idx++;
    if(g_idx >= HOW_MACH_NEED_BYTES)
        g_idx = 0;        
}


Это все так делают? Или существует человеческое решение видеть все на экране IO Terminal?
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 14 2010, 10:01
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(dkukushkin @ May 14 2010, 16:24) *
Это все так делают? Или существует человеческое решение видеть все на экране IO Terminal?
Я, по крайней мере, считаю себя человекомsmile.gif И выбрал именно такое решение когда хочу отлаживать код, который выполняется в прерывании, к примеру. Вам предложил исходя именно из этих соображений.
Ну а человеческое использование printf, на мой взгляд, выводить с ее помощью информацию на терминал РС, если возможно.


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 14 2010, 10:23
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(dkukushkin @ May 14 2010, 12:24) *
Это все так делают? Или существует человеческое решение видеть все на экране IO Terminal?
Многие выводят в реальный терминал smile.gif
В 4х надо было в настройках линкера на вкладке output включить with runtime control modules и with io emulation modules. Под это отъедалась одна точка останова. Что в новых - понятия не имею. В доке должно быть написано.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
dkukushkin
сообщение May 14 2010, 18:01
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-04-10
Пользователь №: 56 643



У меня почему-то отладка JetLink 5 работает очень плохо, через 2 раза.

Переменные часто не доступны. Когда пытаюсь идти по шагам -- перескакивает, пишет fail и перескакивает точку.

Когда пытаюсь просмотреть массив из 1-го совета -- там ничего не показывает -- пишет undefinite.

Зачем убрали возможность использовать printf -- не понятно.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 15 2010, 10:51
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dkukushkin @ May 14 2010, 21:01) *
У меня почему-то отладка JetLink 5 работает очень плохо, через 2 раза.
...
Зачем убрали возможность использовать printf -- не понятно.

Не понимаю ....
В симуляторе нужен printf - один раз использовал, могу понять.
В реальном устройстве под отладкой нужен printf? Ну так направьте вывод на другое реальное устройство - дисплей, терминал, светодиод, в конце концов.
Да, JTAG в ARM7 часто и в самом деле танцы с бубном, но реальное устройство обычно какие-то интерфейсы имеет, почему туда чего-нить не подключить?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение May 15 2010, 13:13
Сообщение #10


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



В опциях general options -> library Configuration поставить Semihosted, в опциях С/C++ Compiler -> Preprocessor в дефайнах если прописано NDEBUG то стереть этот дефайн и должно все заработать через prinf, только имхо это тормоз редкий да и размер кода сразу возрастет smile.gif, лучше такую фичу самому прикрутить к уарту и смотереть тоже самое в терминалке.
Go to the top of the page
 
+Quote Post
dkukushkin
сообщение May 18 2010, 17:45
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-04-10
Пользователь №: 56 643



Цитата(MALLOY2 @ May 15 2010, 16:13) *
В опциях general options -> library Configuration поставить Semihosted, в опциях С/C++ Compiler -> Preprocessor в дефайнах если прописано NDEBUG то стереть этот дефайн и должно все заработать через prinf, только имхо это тормоз редкий да и размер кода сразу возрастет smile.gif, лучше такую фичу самому прикрутить к уарту и смотереть тоже самое в терминалке.


Странно, Semihosted и NDEBUG нет, но не работает. А смотреть нужно в IO Terminal? Или куда оно должно выводить?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:17
Рейтинг@Mail.ru


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