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

 
 
> Зависания на printf, нужен форматированный вывод в DBGU
athlon64
сообщение Jul 5 2010, 07:08
Сообщение #1


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

Группа: Свой
Сообщений: 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);
работает прекрасно.

Куда смотреть?


--------------------
Руслан
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
athlon64
сообщение Jul 15 2010, 15:09
Сообщение #2


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

Группа: Свой
Сообщений: 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]);
}


--------------------
Руслан
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 15 2010, 15:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(athlon64 @ Jul 15 2010, 19:09) *
Думаю, теперь верно?

Нет. Еще char на int замените.

Вообще, старайтесь не использовать переменные не полной размерности там, где в этом нет необходимости.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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