新唐Cortex M0使用semihost输入输出办法

新唐Cortex M0使用semihost输入输出办法 http://www.docin.com/p-72364998.html


Semihosting是一段功能代码,这段功能代码主要运行在PC上,并由调试工具上的固件来激活调用。而周工的EasyJTAG没有实现这个激活调用功能。(qemo是基于驻留程序angel来实现的)

ARM公司对Semihosting的中文解释是半主机机制。为什么叫半主机呢?主要是指应用程序的代码运行在目标系统上,当需要类似PC平台下的控制台输入输出时,会调用Semihosting去利用PC上的控制台输入输出设备:如打开关闭文件,PC显示器输出,键盘输入等等。.


从用户的角度来看,printf好像和普通的一样,关键的区别在于printf的实现。一般的调试器都提供两个版本的IO库,一个式标准的库,另外一个是支持semihosting的库。其实现有区别。下面以printf举例说明其原理:支持semihostingprintf的实现和标准的printf不同,支持semihostingprintfSWI指令来通知仿真器。仿真器在地址0x8处设置断点,但SWI指令执行后,仿真器可以捕获到该SWI指令。根据SWInumber来判断这个SWI是不是SEMIHOSTING请求,如果是,再根据具体的semihosting number响应用户的semihosting请求,完成用户的semihosting请求后,返回到SWI的后面一条指令,继续执行。所以,对用户来说,这是透明的。


.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值