2017-02-16 10 views
0

Я использую gcc 4.8.4 на ARM от TI. Я хочу перенаправить printf() и fgets() в мой драйвер UART. Я ищу функциональный интерфейс для установки драйвера ввода-вывода файлов. Но в документах GCC говорится: «Не пытайтесь создавать свои собственные объекты типа FILE, пусть библиотека это сделает». Я не могу себе представить, что мне нужно перестроить glibc, чтобы изменить это? Кто-нибудь знает пример создания моей собственной структуры FILE?Можно ли заменить драйвер ввода-вывода для printf во время выполнения с помощью gcc?

Я вижу определение, используемое для FILE (__sFILE в reent.h). Кажется опасным только создать его и использовать. Но возможно?

ответ

0

Я хочу направить printf() и fgets() в мой драйвер UART.

Вы, возможно, ищете

freopen("/dev/uart", "r", stdin); 
freopen("/dev/uart", "w", stdout); 

Documentation.

+0

Не так много. Мне интересно, как создать/dev/uart. Это не linux, но это glibc. –

+0

'/ dev/uart' - это то, что создает драйвер ядра UART, и' freopen' связывает 'stdout' с ним. Если ваш вопрос касается части * kernel *, то вы задали совершенно неправильный вопрос. –

+0

Это помогает. Часто бывает трудно получить хороший ответ, когда вы задаете неправильный вопрос. :-) Поскольку это не ядро ​​Linux, мне придется вникать в то, что делает TI. –