Semihost指的是半主机模式,在开发中使用semihost可以实现即使目标开发板没有外接输出串口,我们也能很容易的利用调试工具的窗口,达到输入输出的效果。目前新唐的MCU都可以快速实现Semihost功能,步骤如下。
1、目前新唐的BSP包例程都有加入semihost,可以直接用这里面的工程。我这边直接测试Semihost这个工程。

2、打开工程,主要关注retarget.c和startup_xxxxx.s即可。

3、打开retarget.c文件,主要是关注DEBUG_ENABLE_SEMIHOST和指定UART端口,这里用的是UART2,可以自定义改动其他UART。

4、打开options for target,定义下DEBUG_ENABLE_SEMIHOST即可。

5、编译烧录后,进入Debug模式,打开UART1窗口。

6、全速运行后就可以在UART1 窗口看到打印的信息了,这里直接打印了printf("\n Start SEMIHOST test: \n"); 我这边通过getchar()输入112233也直接打印了。
目前测试来看Semihost功能实现,后续没有串口助手的时候可以直接使用这个方式来调试。

我这边再介绍下Nulink Me烧录调试器这个板子的特色,它本身可以就是个串口调试工具(USB -UART)。目前这个功能仅限于Nulink Me这款烧录器,使用开发板调试的时候,可以直接打开串口助手打印Log信息。
首先,新唐的开发板黄色部分是连接好的UART TX和RX。一般板子默认接到MCU的UART0。


接着,把板子的VCOM中的TXD和RXD都拨到NO位置。

最后在BSP中找个UART工程烧录,这时候打开串口助手就可以识别到串口号了,并且可以打印信息了。

|