首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

实现EMC2的硬件抽象层

实现EMC2的硬件抽象层

关键字:HAL   ADS8361   Linux  
1 概 述
嵌入式系统具有专用性强、外围设备多样的特性,这决定了其应用的硬件环境差异性较大。系统软件模块与硬件之间的接口是嵌入式实时系统的主要特征,是系统设计过程中的必需环节,也是影响嵌入式系统应用前景的关键问题之一。硬件抽象层(Hardware Abstraction Layer,HAL)的引入可有效解决这一问题。HAL是将硬件平台与应用软件隔离开来的软件层次,通过硬件抽象技术实现硬件相关和硬件无关两部分程序代码的隔离,为应用软件提供一个没有硬件特性的接口。硬件抽象层的引入不仅是系统体系结构设计方法的改进,更直接关系到整个系统的开发模式以及嵌入式操作系统的可移植性。硬件抽象层的引入大大推动了嵌入式系统开发的规范化进程。

EMC是一个开放源代码的用于机床或机器人等运动控制系统的计算机控制软件。它能同时驱动9轴电机。其运动控制特性包括:刀具半径和长度补偿、轴同步运动、自适应进给速度、恒速度控制等。EMC2在原有EMC软件的基础上加入了许多新的特性和功能,其中包括了HAL和软件PLC模块ClassicLadder。ClassicLadder是一个基于LGPL协议的梯形图解释器。它随着EMC2一起发布,可以与EMC2的HAL一起工作。本文中的控制系统利用EMC2的HAL为软PLC中的应用程序提供底层硬件操作支持,提高了应用程序的平台无关性与可移植性。

2 硬件架构

控制器是锂电池卷绕恒张力控制器,采用符合PC/104总线规范的单板计算机(以下简称PC104)与基于FPGA的专用主机板相结合的方法构建系统硬件。PC104中运行实时Linux,ClassicLadder及HAL作为实时模块加载到Linux系统中。

系统硬件框图如图1所示。其中ADS8361为12位模/数转换器,用于采集张力值等模拟量;AD5624为数/模转换器,用于控制直流电机转速及气压阀压力值;FPGA控制所有外围芯片,并产生电机脉冲方向信号,同时对电机编码器信号进行计数;CPLD控制I/O输入/输出点,并与FPGA交换信息。利用EMC2中HAL的实现原理,可编写组件将硬件系统所有设备抽象成引脚和函数的形式,供软PLC在需要时加载。






3 EMC2中HAL的基本概念

EMC2的HAL提供了一种简便方法,将一些已有软硬件模块进行加载和组合形成一个复杂的系统,从而使EMC2更容易配置,以使用各种硬件设备。硬件资源在HAL中被封装成特定组件,随时被控制系统载入使用。EMC2中的HAL有以下基本概念:

Component,组件。是定义好输入、输出及行为的软件模块,可以在需要时安装及连接。

Parameter,参数。许多硬件组件有可调整参数需要进行访问。HAL有输入及输出两种类型的参数。

Pin,引脚。硬件组件用于互联的连接端子。所有Pin都有名称,并在连接时使用。HAL的Pin是只存在于计算机内的软件实体。

Physical_Pin,物理引脚。许多I/O设备有真正的物理引脚或终端连接到外部硬件,这些被称为物理引脚。

Signal,信号。现实中硬件组件使用导线互连。在HAL中导线相当于“信号”。HAL的信号将HAL的引脚连接在一起,可以随意断开或重新连接。

Type,类型。引脚和信号都有类型属性,即信号只能连接到相同类型的引脚。目前,HAL有4种类型:BIT、FLOAT、U32、S32。

Function,函数。每个函数是一个执行具体行为的代码块,执行读取输入、计算输出等操作。系统设计者可以使用“线程”对一系列函数加以调度,以使其按照特定的顺序及时间间隔运行。

Thread,线程。作为一个实时任务的组成部分,线程是一个以特定时间间隔运行的函数序列。函数可以添加到线程并在每次线程运行时调用。

4 HAL架构

系统软件架构如图2所示。用HAL将各I/O通道、ADC通道、DAC通道、脉冲通道、编码器通道抽象成Pin,将对硬件各模块的操作抽象成各个Function,将Pin和Function封装在命名为hal_CNC的Component中。






硬件在Component中被映射为如下数据结构:






由上述结构可以看出,每个Pin对应一个相应类型的指针,该指针指向的内存区便存放该引脚的值。
返回列表