资源说明:基于Win CE的两种模型是本机的设备驱动程序和流接口的驱动程序;两种外部模型用于通用串行总线(USB)和网络驱动器接口标准(NDIS)驱动程序。下面针对 Win CE系统下基于三星公司的ARM9内核芯片S3c2410的CAN总线控制器SJAl000,以流接口驱动程序形式进行设计。
在嵌入式领域,WinCE操作系统因其模块化设计和对多种处理器的支持,广泛应用于各种设备。在WinCE系统中,设备驱动程序是连接硬件和操作系统的关键部分,使得硬件设备能够正常工作。对于特定的硬件,如CAN总线控制器,驱动程序的设计尤为重要。本文将聚焦于在WinCE环境下,基于三星的ARM9内核芯片S3C2410上的CAN总线控制器SJAl000的流接口驱动程序设计。
CAN(Controller Area Network)总线是一种高效的串行通信协议,尤其适合于工业控制和汽车电子应用,因为它具有高速率、抗干扰性强以及错误检测能力。SJAl000是一款先进的CAN控制器,支持CAN2.0B协议,具备多种工作模式,可以存储多个报文,并通过验收滤波器筛选接收的数据。
在WinCE中,驱动程序分为本机设备驱动程序和流接口驱动程序。本机驱动直接与系统内核交互,而流接口驱动则表现为动态链接库(DLL),通过一组统一的接口函数提供服务。流接口驱动的优势在于,它们可以被设备管理器统一管理,且与文件系统接口兼容,便于应用程序通过标准的文件操作函数进行访问。
设计SJAl000的流接口驱动程序,需要实现一系列关键函数,如CAN_Init用于初始化控制器,CAN_Deinit负责关闭和清理,CAN_Open用于打开设备,CAN_Close关闭设备,CAN_Read和CAN_Write分别用于读写数据,CAN_IOControl执行特定的I/O控制命令。这些函数构成了驱动程序的核心功能,确保了应用程序与硬件之间的高效通信。
在实现过程中,首先需要理解SJAl000的内部架构和操作机制,包括CAN核心模块、接口管理逻辑、发送缓冲器和接收FIFO等组成部分。然后,根据WinCE的流接口函数规范,编写相应的驱动代码,确保每个函数都能正确地与硬件交互,执行预期的操作。
例如,CAN_Init函数可能涉及配置SJAl000的寄存器,设置波特率、验收滤波器等参数;CAN_Read和CAN_Write函数则需要处理数据的串行化和并行化,以及正确地同步发送和接收操作。CAN_IOControl函数则可以用于执行更复杂的控制操作,如改变工作模式或设置特定的控制器选项。
设计嵌入式WinCE下的CAN总线控制器驱动,需要深入理解CAN总线协议、SJAl000控制器的特性,以及WinCE的驱动模型。通过流接口驱动程序,可以提供一个标准的、统一的方式来操作硬件,简化了应用程序与硬件间的交互,增强了系统的可移植性和可维护性。在实际开发中,还需要考虑中断处理、错误处理以及性能优化等方面,以确保驱动程序的稳定性和效率。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。
English
