基于嵌入式微处理器EP9315的二次开发技术

1 系统构成

1.1 高性能的ARM9嵌入式微处理器

本设计选择Cirrus Logle公司2004年7月推出的EP93XX系列中的高端产品EP9315。该微处理器是高度集成的片上系统处理器,拥有先进的200MHz ARM92OT处理器并支持Linux、Windows CE和其他许多嵌入式操作系统的存储器管理单元(MMU)。它具有ARM920T内核所有的优异性能。与其他ARM9微处理器相比,EP9315具有以下特性:MaverickCrunchTM数学运算引擎,支持浮点、整数和信号处理指令;丰富的集成外设接口,包括PCMCIA、接口图形加速器、可接两组设备的EIDE、1/10/100Mbps以太网MAC、3个2.O全速HOST USB、专用SDRAM通道的LCD接口、触摸屏接口、SPI串行外设接口、AC97接口、6通道TS接口、8×8键盘扫描接口;支持4组32位SDRAM的无缝连接等。

配合Windows CE.net嵌入式操作系统,系统开发效率高、运行稳定,为工业控制提供了可靠的系统平台。基于定制的WinCE操作系统实现工业控制中应用模块的专用驱动,提高了嵌入式系统的通用性。

1.2 系统主体结构

EP9315嵌入式系统总体结构如图l所示。整个系统分为嵌入式系统、应用模块(声波检测仪)和转换模块三部分。Cirrus Logic公司为用户提供了基于该处理器的全功能开发板。该开发板扩展了EP9315的所有功能,并可根据实际需求将全功能开发板的硬件进行裁减,从而降低成本。该开发板预留了标准PC104接口,可方便用户开发应用。应用模块也预留标准PC104接口,其中的I/O控制信号、数据线、地址线与EP9315嵌入式系统的PCl04接口一一对应。而系统中的转换模块可保证嵌入式系统和应用模块连接的稳定性。

EP935嵌入式系统主要由电源、32MB/64MB内存、LCD接口、警示LED、主USB、面板按键、CF卡接口、以太网接口和标准PCI04接口组成。其中电源提供5V、3.3V、1.8V三种电压输出,分别给应用模块、外设、CPU内核供电。内存为操作系统提供运行空间。其中嵌入式系统与应用模块的I/O控制信号、数据线和地址线都引到标准PC104插座上,经转换模块处理后相接。采用PC104总线标准实现了嵌入式系统的各种应用目标。液晶显示屏用于人机交互,警示LED直观地显示电源状况。主USB支持U盘和USB鼠标键盘,CF卡作为大容量存储器存放应用模块的数据,用户通过面板按键实现对整个系统的控制。

1.3 嵌入式系统板与应用模块的连接方案

系统外接的应用模块(SY5声波检测仪)采用5l系列单片机控制数字模拟电路实现特殊功能。整个数字电路部分均为5V供电,模拟部分由5V及正负12V供电,采样数据通过RS232串口传给上位机进行数据处理。而EP9315、I/O口及外围电路均为3.3V供电,管脚承受的最大电压不超过3.6V。

考虑到每个管脚的驱动能力有限,用电平转换驱动芯片74INXC4245实现电平转换。其作用如下:

(1)改善信号的质量。某些对时延比较敏感、且在系统内又相距较远或者较分散的信号,信号线的寄生电容会损害信号的特性。采用74LVXC4245驱动芯片进行隔离,会改善系统的性能。
(2)抗干扰。增加74VXC4245这样的有源缓冲器可以有效地减少干扰。
(3)电平转换。3.3V到5V和5V到3.3V双向电平转换。

74LVXC4245是8通道电压转换器,最大可提供200mA的驱动电流。与专用模块接口时,主要实现数据线、地址线、I/O信号、中断信号等的单/双向电平转换。

地址线的电平转换方向设置为3.3V到5V。I/O、中断信号的电平转换方向可设置为单向转换,3.3V到5V或5V到3.3V片选可接地。

数据线是双向信号,电平转换时要特别注意其方向信号和片选信号的设计。设计不合理会造成总线冲突,系统无法启动。数据线电平转换电路如图2所示。

由图2可见,方向信号使用读信号的反向信号#RD,保证读操作时数据线由5V到3.3V,写操作时数据线由3.3V到5V,防止了总线冲突。使能信号OE可接地或接片选信号。

EP9315在WinCE操作系统下主频达到200MHz,总线频率为1OOMHz,外设时钟为50MHz,硬件调试环境必须与操作系统完全吻合。而应用模块多采用74系列芯片,工作频率一般为几兆赫兹。频率不匹配造成了EP9315发出的读写及使能信号脉宽不足50ns,对由74系列芯片组成的专用模块不能实现正确的读写操作。因此,系统的存储空间采用了如图3所示的分配,应用模块地址空间为CS7:0X7000_0000_OX7FFF_FFEF。

为给低速设备提供足够脉宽的总线信号,设置应用模块地址空间存储空间读写特性寄存器SMCBCR7中等待时间位WST1和WST2:
总线读取等待时间=(WST+1)×总线时钟
连续读取等待时问=(WST+1)×总线时钟
调试代码如下:
 
这种设置使得SDRAM等高速外设和低速外设拥有不同的总线频率,具有很大的灵活性。

2 系统软件

2.1 嵌入式操作系统下的驱动程序类型

由于Windows CE.net开发工具好学易用,没有目标设备时可以在PC上仿真测试,因此基于Windows CE.net的嵌入式开发日益普及。但要在操作系统下控制应用模块就要为应用模块编写驱动。本质上,Windows CE的设备驱动程序都是一些动态链接库(.dll文件),这些dll向内核提供了入口函数,使设备管理模块可以通过这些函数与具体的硬件设备进行通信。由于应用模块功能的不同,微软没有提供相应的驱动,所以只能自行开发测试。开发过程中采用单层驱动结构。

2.2 驱动程序开发

2.2.1 应用模块初始化


应用模块的初始化在标准流接口函数DEV_Init()中完成,在内核加载驱动时调用该函数,其中DEV为设备文件名的前缀,Windows CE使用其识别与特殊流接口驱动程序相对应的特殊设备。初始化的基本步骤为:
??

2.2.2 应用模块数据接收与发送

应用模块数据的传递在流接口函数Dev_Write( )和Dev_Read()由完成。

DEV_Wnte(<由应用程序传入的设备句柄>,<写入?数据指针>,<写入数据位数>)
{//每写l字节调用一次WRITE_PORT_UCHAR();}
DEV_Read(<由应用程序传入的设备句柄>,<存放数据指针>,<读入数据位数>)
{//每读1字节调用一次READ_PORT_UCHAR();}
其中:WRITE_PORT_UCHAR()和READ_PORT_UCH-AR()中传递的地址为经过MmMapIoSpace()映射过的虚拟地址。

2.2.3 建立应用程序和设备驱动的联系
操作系统中的应用程序与驱动中的流接口函数一一对应。其关系如图4。

当应用程序准备对某个设备进行读写时,系统必须先执行CreateFile()函数打开这个设备,得到的设备句柄即为底层设备驱动中Dev_Open()的返回值。应用程序通过CloseHandle()调用设备驱动中的Dev_Close( )。执行完该函数后驱动程序引用的设备将不再有效。当一个流接口驱动程序被打开后,应用程序使用ReadFile()对这个设备进行读操作,驱动程序中Dev_Read()响应该操作;同样应用程序使用WriteFile()对该设备进行写操作,驱动程序中Dev_Write()响应此操作。另外,应用程序还可以使用DeviceIOControl()通知操作系统调用流接口驱动中的DEV_IOControl()去通知驱动程序要执行的操作。这些操作用户可用Windows CE提供的API函数CTL_CODE自定义。

笔者在Windows CE.net操作系统下,已实现了基于EP9315嵌入式系统对武汉中科院岩土力学所设计的SY5声波仪的控制,设备运行稳定。与原来由51单片机搭建的SY5声波仪相比,该系统功耗降低、体积变小、稳定性增强、成本降低,更适合工业控制中的运用。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个关于嵌入式系统很详细的文档 第1章 概 述 1.1 研发背景 随着电子技术的发展,微型计算机应用迅速渗透到各个领域。工业控制领域中计算机应用从编程器、单板机、微机系统到工业网络,由简单到复杂,对软件的要求越来越高。近年来网络技术的飞速发展,又为工业自动化开辟了广阔的发展空间,用户可以方便快捷地组建优质高效的监控系统,并且通过采用远程监控及诊断、双机热备等先进技术,使系统更加安全可靠,在这方面,出现了许多应用软件,其中的典型代表就是工控组态软件,如昆仑通态软件公司的MCGS,亚控公司的组态王,Intellution公司的!FIX等。 组态软件的目的就是提供给用户一种二次开发平台,尽量减少组建工程过程中的重复劳动,隐蔽复杂的编程过程。而目前的组态软件大多停留在对人机界面的组态上,随着我国工业自动化水平的不断提高和普及,对工控组态软件的要求也越来越高。对设备驱动程序的可组态是目前研究的热点。 一直以来,工业控制软件缺乏统一的工业标准,不同厂家的软件之间进行通讯是非常麻烦的一件事。各个厂家的软件对控制系统硬件操作的设备驱动程序接口也各不相同,这样为了对市场上不同厂家的设备都能管理,控制软件厂家必须针对市场上的几百种常用的设备都开发设备驱动程序,而且当硬件设备升级、修改时,驱动程序也必须修改,这样做的代价无疑是相当高的。目前并没有一种软件能够很好的实现对设备驱动的所见即所得的支持[1]。出现这种现象的原因主要是外部设备种类繁多,所基于的协议也是千差万别,如果要实现一种比较通用的驱动很不容易。但是我们可以考虑提供一个一般工程人员非常熟悉的开发环境,在这个环境中通过简单易行的操作实现数据的采集和控制。用户只需要关注他们熟知的通讯规程,然后用一种图形化的方法来实现通讯的一个过程,而不需要对程序内部实现有所了解。所以希望通过这种二次开发平台的设计、开发来解决工控软件与大部分的硬件设备数据交换问题。 1.2 本文的目的和意义 本文主要目的是研究面向对象软件开发技术和软件设计模式在工业数据采集软件设计开发中的应用。内容基于一套包含多种智能控制模块的嵌入式实时控制软件,实际上就是一套软PLC软件包,并结合当前工控组态软件实际情况,开发符合国际标准的功能块图(Function Block Diagram?FBD)编程语言[3],即第四代编程语言(4GL语言),以方便用户的组态为目的,使用户不需要编程经验就可组态出优质高效的符合自己需求的工业控制系统,其功能块编译后实际上生成第三代编程语言(3GL语言),而本文要实现的FBD也就是C++的代码生成器。 这种FBD编程语言有着很广泛的应用价值: 首先,普通的工控组态软件要与设备连接,必须有支持所挂设备的驱动程序,运用符合标准的图形化FBD编程模块后,将不需对市场上的几百种常用的设备都开发设备驱动程序,也不需要专门的编程人员,而由用户根据实际需要,应用功能块来搭建完成,打破了组态软件仅限于人机界面的组态局面,实现设备驱动的可组态。例如可移植到北京昆仑通态自动化软件科技有限公司最新推出的嵌入式组态软件??MCGSE中,使其可以用图形化的FBD语言组态设备和策略,将监控和软逻辑集成一体。 其次,运用于嵌入式实时控制软件,可以作为独立的开发环境,与工控机配合使用,形成软PLC。形成一套面向中小型过程应用和设备集成控制的开放型控制系统。满足工控行业从简单到复杂的各种控制应用要求和各种设备过程自动化控制的应用要求,是用来代替硬PLC(可编程控制器)[4] 和各种设备过程控制系统的理想解决方案。 社会的发展以及先进的生产管理理念的不断引入,当今用户不仅要求系统本身能够完成各种常规及先进的控制要求,而且要求通过友好的动画界面显示现场生产的状况。普通的PLC加HMI人机接口界面软件构成的系统在快速逻辑控制应用领域有其优势[1],尤其在断续的生产过程以及各种设备控制应用领域有他的市场并能保持较为适中的系统价格,但在连续复杂的过程控制以及各种针对特殊应用要求的领域和具备先进的生产管理方面满足不了用户的要求,同时系统的可靠性也有待提高。我们通过软PLC来代替普通的PLC,并集成到现有的MCGS人机界面组态软件中不失为解决上述问题的好方法,实现将图形组态与控制器组态相结合。 笔者主要负责其中基于功能流程图的驱动程序软件的设计和开发,以实现设备驱动的可组态,使用户可方便的用FBD来开发设备驱动,针对大多数的工业过程控制应用如:石油化工、电站、钢铁冶炼、食品加工等要求,完成对控制器的控制策略的组态。工程人员只需简单地从功能块库中拖拽所需功能块到组态窗口中并用软接线连接起来就可快速的生成需要的控制策略。使用规范的FBD编程语言来增强昆仑通态的组态软件??MCGS的脚本处理功能和策略功能,提供可视化的I/O设置,简化设备驱动的开发;取代组态软件中原来的设备接口,完成数据采集和数据传送。然后考虑进一步完善界面和加强功能后作为单独的软件系统,形成一套软逻辑控制系统。 1.3 研究方法与思路 目前,在软件中实现与硬件设备的数据交换有以下一些方法: 1.编写特定设备的驱动程序。这种方式是最多和最常见的手段,一般使用VC、VB、Delphi的高级语言进行纯粹的程序开发。这种方法不仅可以开发数据采集程序,还可以编写硬件设备的底层驱动,功能非常强大。但是这种方式对开发人员要求非常高,开发人员必须非常熟练的使用这些开发工具,还要对在不同平台下的驱动设计方法、技巧十分清楚。一般来说,这种开发都是专业的软件开发公司的业务。对于工业控制中的技术人员不适合,并且这样开发出来的产品一般是二进制文件,硬件有了小的改动都需要修改源代码进行重新编译,不能做到很好的复用性。然而,在工业中使用的硬件设备基本结构相同,存在很小的差异,使用这种方法就不太适合。 2.建立统一数据接口标准[6]。如:OPC基金会制定了一套标准的OPC规范。OPC规范基于微软的COM技术,它规范了过程控制和生产自动化软件与用OPC服务器实现的硬件驱动程序之间的接口,并且提供基于工业自动化应用的统一数据传输平台。各个硬件厂商在开发自己设备时只要遵守这个规范,就可以用标准的通讯程序与硬件进行数据交换。但是,这只是提供一个通讯的框架,必须符合才能使用,它的灵活性很差。并且对于很多简单的智能仪表完全没有必要去遵循相对而言庞大的协议。 3.提供一个二次开发的环境。这里有两种方案[8]:一种是提供了I/O采集和数据通讯的动态连接库,然后在协议编辑器中编写通讯协议,最后生成一个工程文件。其中笛卡儿有限公司开发的Omni Server就是其中的代表作。另一种是遵循IEC1131标准的[3]。IEC1131-3标准是PLC程序设计语言的标准,它提供了一种非常灵活的程序开发方法,是一种面向图形的方法。关于IEC1131-3标准将在后面章节作详细介绍。由于基于IEC1131标准设计的程序基本都是PLC或大型控制器的编程软件,主要考虑的是实现硬件的内部功能,并没有将数据通讯的功能作为主要的考虑因素。 根据本课题的特点,通过参考IEC1131-3标准和其他PLC、控制器设计软件,探讨了一种基于功能块图(FBD)的驱动程序开发模式。通过将具体功能和框架分离的设计方法实现功能的易扩充性和跨平台的易移植性。 1.4 主要背景知识及技术 本文主要涉及工业控制领域的相关知识,在此领域中工控组态软件、PLC及其发展动向、IEC1131-3标准、嵌入式软件等是本文密切相关的内容,这些内容之间有着密切的联系,都是完成本文必不可少的。首先从大的角度看,本文属于工控组态软件的范畴,是组态软件在嵌入式系统平台下运行的一种形式,与嵌入式软件是密不可分的。那么,提到嵌入式就不能不提起PLC,PLC是目前在工业自动化控制领域运用非常广泛的一种逻辑器件,正由于它的运用广泛,人们才十分关注他,在实际的生产应用过程中不断发现其使用的不便之处,摸索出解决问题的方法,即用符合IEC1131-3标准的编程规则,来实现复杂的逻辑控制,并考虑用软件来替代硬的PLC,这也是PLC发展的新的动向。相关的内容将在后面章节作详细介绍。 另外,软件设计用到的面向对象软件开发技术和软件设计模式,也将在本文中作较细致的阐述。 1.5 主要研究内容及本文结构安排 课题内容基于一套包含多种智能控制模块的嵌入式实时控制软件,运用面相对象软件设计方法对其中的FBD功能块进行分析设计,参考IEC1131标准,提出适合需要的编程模型并定义需求、进行功能设计和开发。 作为该课题的负责人,笔者的工作主要是: 1. 运用计算机科学技术知识,结合工业自动化控制领域的相关知识,确定课题的范围。 2. 确定功能块图的模型,根据模型设计和开发FBD开发环境的系统框架。 3. 参考类似软件,结合本软件的要求,分析、编写数学“加”功能块的详细需求文档,实现模块的功能。 本文论述了课题的研究思路、工作和取得的研究成果,文章的内容结构安排如下: 本文分为三大部分: 第一部分,在第一章交代本课题的意义、背景和研究方向,使读者能够了解课题的来由和基本研究思路。 第二部分包括两章,在第二章中介绍嵌入式系统的相关知识和概念,并介绍了MCGS嵌入式实时控制软件的特点、软件结构等相关内容,在第三章讨论完成本课题中需要用到的一些知识和相关技术。为后续论文作必要的知识准备。 第三部分是整个软件系统设计和实现,是本文的主体部分。第四章阐述了FBD的设计思想及其实现效果,第五章中文章详细的介绍了系统的整体设计、核心框架的设计并给出了核心类的实现;第六章介绍了数学“加”模块的需求设计与实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值