当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]嵌入式微处理器EP9315二次开发

武汉中科院岩土力学所智能仪器室对基于ARM9的嵌入式系统进行二次开发,高速微处理器与现有低速设备接口及在配套的操作系统中就SY5声波检测仪原有功能设计相应驱动是本文研究的重点。同时提出了可行的硬件调试方法,为今后基于ARM9微处理器的硬件开发提供了思路。

1 系统构成

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

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

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

1.2 系统主体结构

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

 

 

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

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

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

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

(1)改善信号的质量。某些对时延比较敏感、且在系统内又相距较远或者较分散的信号,信号线的寄生电容会损害信号的特性。采用74LVXC4245驱动芯片进行隔离,会改善系统的性能。

(2)抗干扰。增加74LVXC4245这样的有源缓冲器可以有效地减少干扰。

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

 

 

为给低速设备提供足够脉宽的总线信号,设置应用模块地址空间存储空间读写特性寄存器SMCBCR7中等待时间位WST1和WST2:

总线读取等待时间=(WST+1)×总线时钟

连续读取等待时间=(WST+1)×总线时钟

调试代码如下:

//总线时钟为200MHz

ClkSet1=0x02A4A3D7;

//设置cs7数据宽度为8,读写脉宽为150ns

temp=SMCBCR7;

temp=temp& 0xcfffffff;

temp=temp | 0xffef;

SMCBCR7=temp;

这种设置使得SDRAM等高速外设和低速外设拥有不同的总线频率,具有很大的灵活性。

2 系统软件

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

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

2.2 驱动程序开发

2.2.1 应用模块初始化

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

(1)检查应用模块硬件信息的正确性。

(2)用Windows CE中的API函数为应用模块驱动中用到的数据结构分配缓冲区。

hDev=LocalAlloc(LPTR,sizeof(Dev_INFO));

其中:pDev为包含设备必要信息的结构体指针,Dev_INFO为该结构体类型。

(3)设置应用模块的默认参数,如应用模块在系统中分配的物理地址空间的基地址。

PHYSICAL_ADDRESS phyAddr;//64_bit地址

phyAddr.LowPart=hDev->dwIOBaseAddr;//32_bit物理基地址

phyAddr.HighPart=0;//高32_bit地址

(4)通过HalTranslateBusAddress( )和MmIoSpace( )映射I/O地址,提供直接访问设备的虚拟地址。

if(!HalTranslateBusAddress(Isa,0,phyAddr,0,&phyAddr)) return FALSE;

hDev->lpMappedBaseAddr=(LPBYTE)MmMapIoSpace(phyAddr,size,FALSE);

if(!hDev->lpMappedBaseAddr) return FALSE;

如果分配内存或映射虚拟地址失败,则返回FALSE,退出初始化程序。

(5)初始化应用模块的读写属性和共享模式。

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

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

DEV_Write(<由应用程序传入的设备句柄>,<写入数据指针>,<写入数据位数>)

{//每写1字节调用一次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自定义。

结论

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭