问题提出:
自从Keil MDK的编译器从AC5更新到AC6之后,原先使用的ITM串口输出方式编译时总提示错误,
因为结构替__FILE需要重新定义;
而目前又没有找到合适的让AC6编译通过的办法。
无奈之下,寻找能替代ITM串口输出的办法,还真找到了,就是RTT Viewer方式的串口输出。
问题解答:
ITM方式串口输出,使用了MCU的SWO(Serial Wire Output)引脚,
RTT方式串口输出,不需要通过SWO引脚,即可实现printf输出,而且性能(耗时)远远高于ITM方式。
如上图所示,semihosting耗时10700uS,ITM方式耗时120uS,而RTT只需要耗时1uS就可以了。
RTT:Real Time Transfer,实时传输。
SEGGER实时传输RTT是一种在嵌入式应用中实现交互式用户I/O的技术。
需要如下三个步骤实现通过RTT的printf。
1、将RTT源代码添加到目标工程中。
A、打开Jlink的安装目录,比如我安装在目录D:\Program Files (x86)\SEGGER\JLink_V650b;
当然,也可以从官网下载最新版的Jlink,性能会更强一些,兼容性会更好一些。
下载地址:https://www.segger.com/downloa