您尚未登录。

楼主 #1 2020-05-09 20:03:33

缥缈九哥
会员
注册时间: 2020-05-09
已发帖子: 76
积分: 92

启动新唐M0的semihost半主机调试--缥缈九哥

启动新唐M0的semihost半主机调试:
利用NUC100SERIESBSP_CMSIS_V1.03.002建立的工程。
1,针对startup_NUC1xx.s文件的修改
A,第010行改为:SEMIHOSTED       SETL    {TRUE} ;SEMIHOSTED       SETL    {FALSE}
B,第256行改为:;yuanxihua@21cn.com                ENTRY
2,针对 retarget.c文件的修改
A,第021行改为:#define DEBUG_ENABLE_SEMIHOST   /* To enable semihosted. !!!The SEMIHOSTED of startup_NUC1xx.s must be {TRUE} */
3,在MDK的NU-LINK的Debug模式中,打开View->Serial Windows-> UART #1即可利用如下调试信息:
printf("*** 9G-NUC122 V1.00 Build by yuanxihua@21cn.com on ("__DATE__ " - " __TIME__ ")\n\r");
printf("*** 9G-NUC122 V1.00 Rebooting ...\n\r\n\r");
打印到上面的虚拟串口。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0203ic/Bgbjjgij.html

8.1.1. 什么是半主机?

半主机是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如
printf()

scanf()
,来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。

这种机制很有用,因为开发时使用的硬件通常没有最终系统的所有输入和输出设备。 半主机可让主机来提供这些设备。

半主机是通过一组定义好的软件指令(如 SVC)来实现的,这些指令通过程序控制生成异常。 应用程序调用相应的半主机调用,然后调试代理处理该异常。 调试代理提供与主机之间的必需通信。

半主机接口对 ARM 公司提供的所有调试代理都是通用的。 在无需移植的情况下使用 RealView ARMulator? ISS、指令集系统模型 (ISSM)、实时系统模型 (RTSM)、RealView ICE 或 RealMonitor 时,会执行半主机操作,请参阅Figure 8.1。

在很多情况下,半主机由库函数内的代码调用。 应用程序还可以直接调用半主机操作。 有关 ARM C 库中的半主机支持的详细信息,请参阅《库和浮点支持指南》中的第 2 章 C 和 C++ 库。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn