当前位置:首页 > 智能硬件 > 智能硬件
[导读]摘要:工业控制计算机中广泛使用串行接口UART与外围设备进行通信,同时,Windows操作系统以其友好的UI界面被广泛采用。文中阐述了UART设备的工作原理,并利用Jungo公司的WinDriver软件实现了Windows操作系统下一种PC

摘要:工业控制计算机中广泛使用串行接口UART与外围设备进行通信,同时,Windows操作系统以其友好的UI界面被广泛采用。文中阐述了UART设备的工作原理,并利用Jungo公司的WinDriver软件实现了Windows操作系统下一种PCI转多路UART设备的驱动开发

0 引言

XR17D158是在工业控制计算机中被广泛使用的一种PCI转8路UART接口芯片。本文首先介绍Window操作系统驱动程序和开发工具Win Driv er软件,并通过该软件完成XR17D158在Windows系统下驱动程序的开发。并以此为基础,提出了一种利用WinDrive工具开发PCI总线设备驱动程序的软件架构。

1 Windows操作系统驱动开发

Windows操作系统以其友好的用户图形界面和强大的功能在工业控制计算机领域广泛使用。但是Windows对系统底层操作进行了屏蔽,限制应用程序直接访问硬件资源,应用程序需要调用设备的驱动程序访问硬件资源,而开发Windows环境下的驱动程序,需要对操作系统内核的运行机制有深入的了解。

美国Jungo公司的WinDriver驱动程序工具包使程序设计人员不需要掌握Windows操作系统内核的相关内容,只需要调用WinDriver提供的接口函数就可以直接访问系统硬件资源,减轻了设计人员的开发难度。WinDriver同时支持PCI/CardBus/ISA/ISAPnP/EISA/CompactPCI和USB等多种总线结构。

WinDriver驱动程序的体系结构如图1所示。

利用WinDriver开发驱动,可以使用内核插入模式和用户模式。内核插入模式效率高,但编写复杂,需要编写者对操作系统内核和微软提供的DDK(Device Driver Kits)都有深入的了解。用户模式下,开发人员通过WinDriver Wizard图形化界面的引导:首先,生成所要开发设备的.inf文件,其次,生成设备驱动程序源代码模板。该模板由三部分组成:1)WinDriver提供给用户的设备访问库函数WDC Lib;2)Win Driv er所产生的设备操作例程,用以检查设备的硬件功能是否正常;3)用户开发环境,包括:Visual Studio、Delphi等。

2 XR17D158工作原理

2.1 XR17D158简介

XR17D158是EXAR公司生产的一款PCI总线UART芯片,符合PCI2,3规范。XR17D158拥有8路独立的UART接口,每路UART接口兼容16C550的配置寄存器和64字节的发送/接收FIFO。XR17D158每路UART接口的数据传输速率可进行设置,最高速率可达921.6kbps。

XR17D158内部的寄存器用来实现PCI设备的配置、芯片自身的状态监控和串行数据的接收和发送。X86体系结构下,系统上电后,BIOS将读取XR17D158的PCI信息,根据系统的硬件架构为XR17D158分配存储地址、端口地址和中断号等信息。并将信息写入PCI配置寄存器中,例如系统会将XR17D158的UART配置寄存器基地址写入BAR0(10H)中。

2.2 XR17D158芯片配置

2.2.1 波特率设置

XR17D158的8路UART接口可以配置不同的波特率,波特率计算公式为:

式(1)中,MCR[7]代表域分频系数,分频系数由每路UART接口的DLM和DLL寄存器控制,对一路UART接口的波特率配置步骤如下:

(1)LCR[7]置1,使能DLM、DLL寄存器;

(2)EFR[4]置1,使能MCR[7:5];

(3)设置MCR[7],MCR[7]=0,预分频系数为1,MCR[7]=1,预分频系数为4;

(4)设定分频系数,根据所要设定的波特率,利用式(1)计算分频系数,并将分频系数写入DLM、DLL寄存器中;

(5)EFR[4]清0,锁存MCR[7]。

2.2.2 UART接口数据接收

UART接口的数据接收部分由接收移位寄存器(RSR)和接收保持寄存器(RHR)组成,RSR检测接收到的每一位数据的有效性,当检测到停止位时,表明一个字符接收完毕,RSR将数据装入RHR中。数据准备好中断(ISR[2]=1)会在数据装入RHR,或者在接收FIFO使能并且接收数据达到设定的FIFO触发条件时产生。处理器可以利用查询方式和中断方式读取XR17D158接收FIFO的数据。两种方式实现的步骤为:

(1)查询方式:1)设置UART通道的波特率;2)中断使能寄存器[IER]清0,禁止所有中断;3)读取线路状态寄存器(LSR);4)如果LSR[0]=0,表示RHR或者接收FIFO中没有数据,等待一定时间后,重复第3)步;5)如果LSR[0]=1,表示RHR或者接收FIFO中已经保存有接收到的数据,此时读取RHR中的数据,并重复第3)步。

(2)中断方式:1)设置UART通道的波特率;2)IER[0]置1,使能RHR中断;3)当PCI总线上产生中断时,读取INT0寄存器,确定产生中断的通道号;4)读取INT1、INT2、INT3寄存器,确定产生中断的UART接口序号和中断源;5)读取RHR中的数据。

2.2.3 UART通道数据发送

发送数据过程,有效数据由主机写入UART接口中的发送FIFO寄存器,当发送保持寄存器(THR)清空标志位ISR[1]=1,表示发送FIFO中的数据减少到满足设定的触发中断条件而引起中断,在输出移位寄存器(TSR)中,由发送控制逻辑在待发送数据加上起始位、奇偶校验位和终止位,并按设定的时钟频率逐位移出数据。

3 开发实例

使用WinDriver用户模式开发的驱动程序,实则是为上层的应用程序提供一组访问设备的接口函数,实现应用程序对设备的初始化、读操作、写操作和设置等。

XR17D158的驱动程包含:UART接口打开函数XR17D158_Open()、UART接口读函数XR17D158_Read()、UART写函数XR17D158 Write()和UART接口关闭函数XR17D158 Close()。为了提高驱动效率,可以在内存中分别开辟一个接收缓冲区和一个发送缓冲区,XR17D158 Read()和XR17 D158 Write()不直接访问硬件设备,而是通过对内存缓沖区的读写,实现对XR17D158的读操作和写操作。本文提出的驱动程序架构如图2所示。

图2中,XR17D158 Open()中注册的中断服务程序XR17D158 Handle()完成XR17158的数据接收与发送;XR17D158 Read()和XR17D158 Write()为应用层提供读/写接口,通过内存缓沖区接收XR17D158_Handle()的数据或向XR17D158_Handle()发送数据。

XR17D158_Open()使用WDC_PciReadCfg()和WDC_PciWriteCfg()实现对XR17D158PCI配置空间的访问,使用WDC_ReadAddr8()和WDC_Write Addr80实现对XR17D158中设备配置寄存器和UART配置寄存器的操作,如UART接口波特率的配置:

UAR了接口数据的读取可以使用查询方式或者接口方式,但是查询方式要求处理器周期地对XR17D158的状态进行检测,处理器的效率较低。因此本文使用中断的方式完成UART接口数据的接收和发送。中断服务程序XR17D158 Handle()的工作过程过程如下:

XR17D158_Handle()实现UART接口和内存缓冲区之间的数据交换,从内存缓冲区中读取XR17D158_Write()写入的数据实现数据的发送,向内存缓冲区中写入UART接口接收的数据,再由XR17D158_Read()读取实现数据的接收。在XR17D158_Open()使用WDC_XR17D158_IntEnable()注册XR17D158_Handle()。

4 结果验证

使用外部设备向XR17D158子卡发送RS232数据,发送数据波特率为9600 bps,发送周期为1 Hz,通过示波器观察XR17D158的接收数据波形。

图3(a)为XR17D158接收到RS232数据的波形,图3(b)为XR17D158所产生的中断信号波形,中断信号为低电平时,驱动程序处理XR17D158所接收到的数据。试验中,RS232数据为周期发送,每帧数据为90字节,图3中可以看出驱动程序处理每帧数据的时间约为0.1ms,如果8路UART接口同时接收数据,且波特率为921.6kbps,此时驱动程序处理数据的时间约为100ms,不会出现丢数现象。

5 结束语

文中简单地介绍了WinDriver软件工具的特点和驱动产生的过程,并针对一种PCI转UART设备XR17D158,提出了使用WinDriver开发PCI设备驱动的软件架构。此时Windows驱动设备的开发更像是Windows应用程序的开发,仅在一个驱动函数中使用WinDriVer提供的接口函数,而无需触及Windows内核。此外该驱动架构不仅适用于XR17D158设备,还可应用于其它PCⅡ设备,如PCI9056等。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭