Semihosting功能是CoIDE1.3.1中新加的一个功能。在调试时,用户的程序在使用相关的输入和输出函数时,会触发一个相应的软件终端,调试器相应这个中断之后,用户可以在CoIDE的Semihosting窗口中看到MCU的输出信息或者输入信息给MCU。
这个功能是调试程序时才能使用的,而且需要用户修改程序代码才能实现。如果不是在调试程序,或者调试时Semihosting功能没有打开,而代码里又进行了Semihosting的设置,那么代码执行时会停在软件中断处,不会继续进行。这个和SWD trace 功能有很大差别。
使用Semihosting的方法:
1. 首先,编辑代码,在CoIDE中勾选Semihosting组件,并查看Semihosting的例子。
2. 这个例子不能直接添加到工程中,而是要使用这个例子的函数替换掉printf.c中的同名函数或者厂商库中的Printchar函数
3. 在代码中加入想要打印的文字,以/n或者/n/r结尾,如:printf("Hello world!\n\r");
4. 在调试设置中,勾选Semihosting Enable选项
5. 连接调试器,进入调试
Note:CoIDE没有实现scanf重定向的函数,测试Semihosting输入可以使用SH_GetChar(),或者自己实现一个scanf。
Semihosting的功能和调试器及使用的MCU无关,但是只能在调试时使用。代码正式发布时不适合使用Semihosting功能。 |