|
Зависания на printf, нужен форматированный вывод в DBGU |
|
|
|
Jul 5 2010, 07:08
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882

|
Процессор SAM7X512, IAR 5.4. В проекте используются порты COM0, COM1, PIT, TWI. Основой для проекта был пример из IAR "basic-usart-hw-handshaking-project". Приём в порты COM0, COM1 сделан через регистры побайтно, вывод - через DMA. Нужно для вывода отладочного лога в DBGU форматированный вывод. При инициализации DBGU: Код PIO_Configure (DBGU_pins, PIO_LISTSIZE(DBGU_pins)); DBGU_Configure (DBGU_STANDARD, 115200, BOARD_MCK); и попытке вывести любую строку при помощи Код printf("TEST"); процессор зависает. То же самое при выводе с помощью Код TRACE_INFO("TEST"); и соответствующей инициализацией из trace.c порта DBGU. При этом в порт ничего не попадает. А вот Код DBGU_PutChar(byte); работает прекрасно. Куда смотреть?
--------------------
Руслан
|
|
|
|
|
 |
Ответов
|
Jul 15 2010, 15:09
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882

|
Цитата(MALLOY2 @ Jul 15 2010, 18:43)  format_buff нестоит делать локальной!!!!! стека не напасетесь!!!! Сделал Цитата(MALLOY2 @ Jul 15 2010, 18:43)  Стоит также заменить vsprintf на vsnprintf, но есть НО, почитайте о результатах которые возвращет эта функция, она может вернуть -1, для вашего кода это будет баг. Надо перед отправкой в порт проверить значение len и тип len сменить на знаковый. Думаю, теперь верно? Код void DBGU_fprint(const char *args, ...) { char len,i_len; va_list ap; va_start(ap, args); len = vsnprintf(format_buff, sizeof(format_buff), args, ap); va_end(ap); if (len > 0) for (i_len=0; i_len < len; i_len++) DBGU_PutChar(format_buff[i_len]); }
--------------------
Руслан
|
|
|
|
Сообщений в этой теме
athlon64 Зависания на printf Jul 5 2010, 07:08 jorikdima В размер стэка смотреть. Перво-наперво попробовать... Jul 5 2010, 07:40 athlon64 Ошибочка вышла - если выводим только текст, не вис... Jul 5 2010, 08:02 athlon64 Увеличил размер стека в icf-файле с 4Кб до 8Кб. Не... Jul 6 2010, 03:11 athlon64 Решения так и не нашёл, пока вывожу в цикле посимв... Jul 15 2010, 04:54 MALLOY2 Попробуйте так
Кодchar format_buff[512]; ... Jul 15 2010, 05:44 defunct Цитата(MALLOY2 @ Jul 15 2010, 08:44) Попр... Jul 19 2010, 22:06  sergeeff Цитата(defunct @ Jul 20 2010, 02:06) А чт... Jul 20 2010, 06:19   defunct Цитата(sergeeff @ Jul 20 2010, 09:19) Лов... Jul 20 2010, 14:03 athlon64 Цитата(MALLOY2 @ Jul 15 2010, 11:44) Попр... Jul 15 2010, 06:06 MALLOY2 Цитата#include <stdarg.h>
Смотрите, размер ... Jul 15 2010, 07:47 aaarrr Цитата(MALLOY2 @ Jul 15 2010, 11:47) Смот... Jul 15 2010, 07:55 MALLOY2 Согласен, забыл про нее, давно пользуюсь своей фун... Jul 15 2010, 07:59 athlon64 Цитата(MALLOY2 @ Jul 15 2010, 13:47) Смот... Jul 15 2010, 08:15 MALLOY2 Это расписано почти в каждой книжке по С, stdarg.h Jul 15 2010, 08:21 athlon64 Кодvoid DBGU_fprint(const char *args, ...... Jul 15 2010, 09:45 aaarrr Цитата(athlon64 @ Jul 15 2010, 13:45) Пок... Jul 15 2010, 10:35 MALLOY2 format_buff нестоит делать локальной!!... Jul 15 2010, 12:43 sergeeff Цитата(athlon64 @ Jul 15 2010, 18:09) if ... Jul 16 2010, 10:35 athlon64 Цитата(aaarrr @ Jul 15 2010, 21:18) Нет. ... Jul 16 2010, 03:34 aaarrr Цитата(athlon64 @ Jul 16 2010, 07:34) У м... Jul 16 2010, 05:38 athlon64 Цитата(sergeeff @ Jul 16 2010, 16:35) Код... Jul 18 2010, 15:46 sergeeff Цитата(athlon64 @ Jul 18 2010, 18:46) в с... Jul 18 2010, 16:11 aaarrr Цитата(athlon64 @ Jul 18 2010, 19:46) в с... Jul 18 2010, 16:14 athlon64 Цитата(aaarrr @ Jul 18 2010, 22:14) Нет, ... Jul 19 2010, 15:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|