在嵌入式系统开发中,我们通常会将标准输入输出作为一个控制台功能添加到我的嵌入式应用程序中。这样我就有了一个命令行接口,可以检查和修改目标系统。
调试跟踪信息输出主要有重定向、Semihosting、Segger RTT 等方法,我们最常用的方法就是将标准输入输出进行重定向,今天就来重点学习一下重定向的实现方法!
基本原理
重定向在软件编程中是一个非常普遍的概念,不同的编程应用中重定向的方式差别巨大。在嵌入式中,重定向也被用在了不同的需求中,例如,代码重定向、输入输出重定向。本文我们就是来重点学习输入输出的重定向。
相关验证的源码:https://gitee.com/itexp/STM32_BareMetal
C 标准库
输入输出重定向是通过重新实现 C 库的底层 I/O 函数来实现的。 C/C++ 标准库是编译工具链的基本组件之一,它提供了我们常用的函数的基本实现。其中有许多处理 I/O 的函数,包括标准字符流函数、文件系统访问函数、时间和日期函数、各种系统操作函数以及终止和断言函数,这组函数称为标准 I/O 接口。