Добрый вечер.
Разбираюсь с newlib; сейчас попытался перенаправить стандартный вывод, и столкнулся с такой проблемой:
переопределил функции:
Код
_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len);
_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len);
(и прочие низкоуровневые вызовы для newlib)
и вызвал printf(), после чего обнаружил, что _write_r не вызывается.
Попробовал так же вместо указанных функций переопределять лишь
Код
int _read (int file, char *ptr, int len);
int _write(int file,char *ptr,int len);
результат тот же.
Ключи линкера:
Код
LIBS = -lstdc++ -lc -lgcc -lm
LDFLAGS = -nostartfiles -Wl,-Map=$(TARGET).map,--cref $(LIBS) -T$(TARGET).ld
В качестве референса использовал этот проект:
http://www.siwawi.arubi.uni-kl.de/avr_proj...ects/#gcc_stdioToolchain из последней сборки yagarto.
Итак, вопрос: как переопределить стандартный ввод/вывод, и что я делаю не так?
upd: версия newlib: 1.18
Сообщение отредактировал Spym - Nov 2 2010, 19:25