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

 
 
> printf в IAR C, как победить ошибку
skopus
сообщение Dec 7 2005, 08:47
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



хочу в проекте использовать printf для вывода данных через USART
версия IAR C 4.11A. В проекте используется библиотека Normal DLIB

а когда компилятор натыкается на printf, выдает следующую ошибку

Error[e46]: Undefined external "__write" referred in ?putchar ( F:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\LIB\DLIB\

может есть патч какой?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Dec 7 2005, 10:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(IgorKossak @ Dec 7 2005, 11:08) *
В таких случаях я обычно использую sprintf - вывод в стринг.
А уж из этого стринга можно выводить в любое устройство вывода (через драйвер): UART, LCD,...

Да, нормальный подход.
Если поуниверсальнее, то свой аналог printf(), как обертка на vsprintf()
Что-то типа:

void bprintf( char *arg_list, ...)
{
va_list arg_buffer;
va_start( arg_buffer, arg_list );
vsprintf( tobuff, arg_list, arg_buffer );
// тут пользуем получившуюся в tobuff строку
........
// Причем не обязательно многократно вызывая посимвольную печать,
// как это навязывается "готовым" ptintf() Да и использовать не использовать стек
// можно выбирать....

}
Цитата(BVU @ Dec 7 2005, 11:08) *
А лучше написать свою (sprintf), что будет экономнее, как для обьема кода (не надо использовать лишние библиотеки) и не требует лишних затрат на размер стэка.

Напишет, со временем, если будет увереность, что сможет шустрее и/или компактнее написать а пока достаточно обратить внимание на предоставляемые в некоторых пакетах облегченные вариаты
..printf() с отсутствием плавающей точки, даты,....

Кстати, в Pro версии IAR исходники библиотек вроде даются? А на здешнем FTP, для ARM они
случаем не лежат? Чувствую необходимость почитать....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 7 2005, 10:25
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(zltigo @ Dec 7 2005, 12:15) *
...Кстати, в Pro версии IAR исходники библиотек вроде даются? А на здешнем FTP, для ARM они
случаем не лежат? Чувствую необходимость почитать....

У меня есть полные версии для АРМ 4.20а и для АВР 3.20д.
Ничего новее не попадалось уже очень долго.
Выложить, к сожалению, не могу - сижу за корпоративным файрволом.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- skopus   printf в IAR C   Dec 7 2005, 08:47
- - Rash   тебе надо переопределить функцию putchar(), т.к. т...   Dec 7 2005, 08:57
- - skopus   хорошо, а где и как я должен ее переопределить. мо...   Dec 7 2005, 09:08
- - IgorKossak   В таких случаях я обычно использую sprintf - вывод...   Dec 7 2005, 09:08
|- - BVU   Цитата(IgorKossak @ Dec 7 2005, 12:08) В ...   Dec 7 2005, 09:20
- - skopus   В мануале нашел, что надо сделать. Нужно написать ...   Dec 7 2005, 09:36
|- - GxOST   Цитата(skopus @ Dec 7 2005, 12:36) В ману...   Dec 7 2005, 09:40
|- - Mty   Цитата(skopus @ Dec 7 2005, 12:36) В ману...   Dec 7 2005, 10:21
- - zltigo   Цитата(IgorKossak @ Dec 7 2005, 12:25) У ...   Dec 7 2005, 10:36
|- - IgorKossak   Цитата(zltigo @ Dec 7 2005, 12:36) ...А н...   Dec 7 2005, 11:15
- - compas   Для форматированного вывода куда угодно в IARe под...   Dec 9 2005, 08:43
- - SatMinistry   Здравствуйте. Пытаюсь использовать приведенную мет...   Jun 11 2010, 08:49
|- - zltigo   Цитата(SatMinistry @ Jun 11 2010, 11:49) ...   Jun 11 2010, 09:15
- - SatMinistry   скомпилилось таки после прямой замены на __farflas...   Jun 11 2010, 09:51


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

 


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


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