一、SWO输出
类似UART串口输出,SWO(Serial Wire Output)串行线输出也是其中的一种,但需要MCU支持SWO功能才行(目前很多MCU都支持)。
可以在线调试时,输出到IDE界面,比如:
还可以离线输出到一些工具界面,比如:
二、CLI调试输出信息
上面几种方式都是单纯的输出调试/日志信息,相对更高级一点的做法就是通过CLI(Command Line Interface)命令行的方式获取调试信息。
命令行相信大家不模式,做嵌入式开发的都知道,像Linux的终端就是一个命令行,只是我们这里说的命令行,相对Linux的终端来说要简单的多。但原理类似,都是通过输入命令来查看数据或执行某个动作。
1、相对printf优势
通过CLI可以任意时刻查看指定信息,执行某种操作。
2、相对printf劣势
需要在代码中集成CLI组件,以及对应的(查看、执行动作等)代码,更占用资源(当然,可以使用轻量级的CLI,相对不占资源那种)。
比如我之前用的一种,估计占用Flash不到1K的空间:
其实,很多RTOS都集成了CLI组件,想用其实也不是想象中的那么复杂,和移植RTOS差不多,甚至更简单。
|