dkukushkin 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Для удобства хочется видеть под отладчиком что печатается с помощью 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 дня бьюсь... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Как увидеть что выводится с помощью printf? Напишите свою пустышку putchar, поставьте там точку останова и смотрите побайтно глазками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dkukushkin 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Напишите свою пустышку putchar, поставьте там точку останова и смотрите побайтно глазками. Ага. Особенно удобно текст сообщения по 1-й букве читать. То что читалось бы за минуту -- нужно будет целый день по букве читать. Это же все для удобства и экономии времени делается. Должно же быть решение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Для удобства хочется видеть под отладчиком что печатается с помощью 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; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dkukushkin 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба ... 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Это все так делают? Или существует человеческое решение видеть все на экране IO Terminal?Я, по крайней мере, считаю себя человеком:) И выбрал именно такое решение когда хочу отлаживать код, который выполняется в прерывании, к примеру. Вам предложил исходя именно из этих соображений. Ну а человеческое использование printf, на мой взгляд, выводить с ее помощью информацию на терминал РС, если возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Это все так делают? Или существует человеческое решение видеть все на экране IO Terminal?Многие выводят в реальный терминал :) В 4х надо было в настройках линкера на вкладке output включить with runtime control modules и with io emulation modules. Под это отъедалась одна точка останова. Что в новых - понятия не имею. В доке должно быть написано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dkukushkin 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба У меня почему-то отладка JetLink 5 работает очень плохо, через 2 раза. Переменные часто не доступны. Когда пытаюсь идти по шагам -- перескакивает, пишет fail и перескакивает точку. Когда пытаюсь просмотреть массив из 1-го совета -- там ничего не показывает -- пишет undefinite. Зачем убрали возможность использовать printf -- не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 15 мая, 2010 Опубликовано 15 мая, 2010 · Жалоба У меня почему-то отладка JetLink 5 работает очень плохо, через 2 раза. ... Зачем убрали возможность использовать printf -- не понятно. Не понимаю .... В симуляторе нужен printf - один раз использовал, могу понять. В реальном устройстве под отладкой нужен printf? Ну так направьте вывод на другое реальное устройство - дисплей, терминал, светодиод, в конце концов. Да, JTAG в ARM7 часто и в самом деле танцы с бубном, но реальное устройство обычно какие-то интерфейсы имеет, почему туда чего-нить не подключить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 15 мая, 2010 Опубликовано 15 мая, 2010 · Жалоба В опциях general options -> library Configuration поставить Semihosted, в опциях С/C++ Compiler -> Preprocessor в дефайнах если прописано NDEBUG то стереть этот дефайн и должно все заработать через prinf, только имхо это тормоз редкий да и размер кода сразу возрастет :), лучше такую фичу самому прикрутить к уарту и смотереть тоже самое в терминалке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dkukushkin 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба В опциях general options -> library Configuration поставить Semihosted, в опциях С/C++ Compiler -> Preprocessor в дефайнах если прописано NDEBUG то стереть этот дефайн и должно все заработать через prinf, только имхо это тормоз редкий да и размер кода сразу возрастет :), лучше такую фичу самому прикрутить к уарту и смотереть тоже самое в терминалке. Странно, Semihosted и NDEBUG нет, но не работает. А смотреть нужно в IO Terminal? Или куда оно должно выводить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться