3482|2

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

嵌入式开发之微秒级延迟的实现【原创】 [复制链接]

嵌入式开发之微秒级延迟的实现【原创】


★本文为原创文章,如需转载,请务必注明出处。★

嵌入式系统的开发中,经常遇到要延迟一定时间再进行后续处理。特别是对硬件的读写操作,经常是要精确到微秒级的延迟。使用嵌入式操作系统时,通常API只精确到毫秒级。对于那些没有使用嵌入式操作系统的,更无API调用可言。
本文就讨论从实际工程项目经验中总结出来的微秒级延迟的实现方法,仅供借鉴。
一、关于CPUSystem Clock
主频:就是CPU正常工作时的时钟频率,从理论上讲CPU的主频越高,它的速度也就越快,因为频率越高,单位时钟周期内完成的指令就越多,从而速度也就越快。一般对应CPU DataSheet中的System Clock。比如:瑞萨SH7145的System Clock=50MHz。其含义就是1秒钟CPU能够处理50M条汇编指令。
二、关于汇编列表文件
对编译器进行相关设置后,C语言程序编译后可以产生汇编列表文件。汇编列表文件的内容就是C源代码及其编译后对应的汇编指令。以瑞萨SH7145的C语言编译器XASS-V为例,编译后的列表文件是*.lis,内容片段如下。

                              
从上面的lis文件可以很容易看出一行C语言代码编译后对应几条汇编指令。
三、关于200微秒延迟的实现
    实际工程中,有一个需求是对硬件某个寄存器写入数据后,要在200微秒内去检查该寄存器的状态。那么,200微秒内是如何实现的呢?
    且看如下最后实现的代码:

    显然,for循环的次数决定了时间。那么,为什么是循环1000次呢?这就要用到了刚才提到的lis文件了。首先,要了解一次for循环会执行多少条汇编指令。然后,得出执行一次for循环需要多少时间。最后,再根据200微秒计算出循环次数。
     瑞萨SH7145的DataSheet上有这么一段话“The SH7144 series CPU hasa RISC-type instruction set. Most instructions can be executed in one
state (one system clock cycle), which greatly improvesinstruction execution speed.”。可见,执行一条汇编指令需要一个CPU System Clock Cycle。
     而上面for循环的C语言代码,编译后的lis文件如下。
  
即1次for循环需要执行10条汇编指令,占用10个CPU System Clock Cycle。
瑞萨SH7145的System Clock=50MHz,即1秒钟处理50M条汇编指令。
执行1条汇编指令所需时间:10^6/(50*10^6)=0.02微秒/指令。
因此,200微秒需要200/(0.02*10)=1000次for循环。
     需要注意的是,上面只是提供一种思路。不同的CPU其系统时钟不同,执行每条指令所占用的时间也不一样,而且不同编译器编译后的list文件也不太相同,所以需要具体问题具体分析,找出最合适的办法。





文章2-1.jpg (35.58 KB, 下载次数: 0)

文章2-1.jpg

文章2-2.jpg (27.94 KB, 下载次数: 0)

文章2-2.jpg

文章2-3.jpg (43.51 KB, 下载次数: 0)

文章2-3.jpg

最新回复

好巧妙的思路,抱走,以后尝试下!!!!!!!!!!  详情 回复 发表于 2015-9-21 11:02
点赞 关注

回复
举报

6423

帖子

17

TA的资源

版主

沙发
 
瑞萨SH7145的System Clock=50MHz,即1秒钟处理50M条汇编指令
这个的时钟周期等于指令周期吗?
 
个人签名training
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
好巧妙的思路,抱走,以后尝试下!!!!!!!!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表