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

 
 
 
Reply to this topicStart new topic
> Отладка в Keil+RL-RTX, помогите разобраться
M&P
сообщение Nov 15 2009, 23:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-06-08
Пользователь №: 38 465



Hi, All!

Я использую связку Keil + RL-RTX (подобие RTOS от того же Keil), на базе NXP (LPC17xx).

Взял простейший пример RTX_ex1 и пытаюсь его запустить (пока что в симуляторе).

Возник очень непонятный вопрос. Я хочу поместить в свою программу отладочные сообщения, выдаваемые по UART. Но, если я подключаю к примеру stdio.h и ставлю где-то нечто вроде
printf("Hello world!\n");
то после попадания на эту строчку программа улетает в непонятное место в коде. В форумах читал, что вроде как нужно переопределять стандартные функции ввода-вывода в файле retarget.c, но как это сделать - непонятно. И зачем? Понимаю, что надо, но как работает механизм - непонятно.

Помогите пожалуйста, разобраться, что нужно сделать и как это вообще должно работать. Чувствую что все это достаточно несложно, но в концепцию не врубаюсь smile.gif

Второй вопрос: вроде бы можно сделать вывод отладочных сообщений прямо через JTAG (т.к. в Keil MDK присутствует окно View->Serial Windows->Debug (printf) Viewer. Так ли это? И как это использовать? В чем различие в использовании по сравнению с использованием UART?

Всем заранее спасибо!

P.S. документ RL-ARM Real-Time Library User's Guide by Keil, к сожалению скуп, на объяснения по этим вопросам.
Go to the top of the page
 
+Quote Post
M&P
сообщение Nov 16 2009, 20:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-06-08
Пользователь №: 38 465



Цитата
Второй вопрос: вроде бы можно сделать вывод отладочных сообщений прямо через JTAG (т.к. в Keil MDK присутствует окно View->Serial Windows->Debug (printf) Viewer. Так ли это? И как это использовать? В чем различие в использовании по сравнению с использованием UART?

Вдумчивое чтение документации показало, что такая функциональность действительно присутствует. Это называется Serial Wire Viewer (SWV), и работает только через Serial Wire Debug port (SWD). Через JTAG НЕ РАБОТАЕТ. К сожалению, мои MT-link'и SWD не поддерживают sad.gif

Вопрос по поводу printf debugging через UART остается актуальным.
Go to the top of the page
 
+Quote Post
M&P
сообщение Nov 17 2009, 07:38
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-06-08
Пользователь №: 38 465



Разобрался с retarget.

Для того, чтобы работала функция printf, нужно

1) подключить stdio.h
2) переопределить в retarget.c функцию
int sendchar(int ch);
которая используется функцией printf. В ней нужно прописать вывод 1 (одного) символа в нужный нам UART.
3) profit! работает.

Пока что непонятно кое-что - в одних форумах советуют переопределять функцию sendchar, во вторых - putchar, в третьих putc - неужели это совсем без разницы?

позже выложу ссылки.

Сообщение отредактировал M&P - Nov 17 2009, 07:39
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:29
Рейтинг@Mail.ru


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