新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > EMC2的硬件抽象层原理与实现

EMC2的硬件抽象层原理与实现

作者:时间:2009-12-28来源:网络收藏

依照上述做法将所有功能模块全部导出到HAL后,在rtapi_app_main()的最后调用hal_ready(comp_id),表明该Component已经初始化完毕,可以开始使用了。
在关闭Component退出时,系统会自动调用hal_CNC.C中编写的rtapi_app_exit()。其如下:
void rtapi_app_exit(void){hal_exit(comp_id);)
hal_exit()关闭并释放HAL及RTAPI使用到的系统资源,使这些资源可被重新使用。
自带的工具comp对源文件hal_CNC.c和hal_CNC.h进行编译,即可得到名为hal_CNC的Compo-nent。该组件自动放入的模块库中,随时可被其他软件模块调用。

本文引用地址:http://www.eepw.com.cn/article/152181.htm


6 HAL的使用
以DAC为例,在Linux下的命令行输入“halrun”进入的HAL运行界面,输入:
loadrt threads namel=thread periodl=1000000
创建名为“thread”的线程,该线程执行周期为1 ms。
执行:
loadrt hal_CNC
将所编写的系统组件调入,执行:
addf CNC.DAC.write thread
将DAC的写函数加入到前面创建的线程thread,使之以与thread相同的执行周期被调用。然后使可通过控制DAC的引脚来输出相应的电压。如:
setp CNC.DAC.0.value 1
该语句将使电路板上的DAC输出端子输出1 V的电压。
用类似的方法将其他软件模块通过与HAL的引脚连接,便了其他软件对HAL的调用。


7 HAL在ClassicLadder中的调用
以从DAC输出5 V为例,将classicladder的一个名为“classicladder.0.s320ut-00”的有符号32位整型Pin赋值为5。该值经过HAL中的一个类型转换Component“s32tofloat”变为浮点数,再连接到hal_CNC中的DAC单元的引脚“CNC.DAC.0.value”,便在实际电路板的DAC输出端输出5 V的电压。引脚连接如表1所列。

其中“→”和“←”表示引脚之间的连接,用HAL中的Sig-nal
在软PLC中设置变量W10的值为5,则在DA输出端子引脚上用万用表测到5 V的电压。软PLC中的操作输出如图3所示。

其中4个窗口表示DAC的4个通道,分别令DAC输出5 V、2 V、3 V、4 V的电压。


8 结 论
实践证明,HAL的引入可极大提高软件实现的硬件无关性。从软件的角度来看,其面向的硬件具有同质的接口,对硬件的操作具有相似的方法与架构,极大地简化了软件对硬件的控制,方便了同类软件在不同硬件平台间的移植。这就为软硬件同步设计、分工协作奠定了良好的基础。该架构已成功应用在文中所述的锂电池卷绕恒张力控制器中,取得了良好效果。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭