嵌入式Win CE中CAN总线控制器的驱动设计与实现

  0 引 言

  近年来,由于消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式系统再度成为研究和应用的热点。嵌入式操作系统(Real-TIme Embedded OperaTIngSystem,RTOS或EOS)作为一种实时的、支持嵌入式系统应用的操作系统软件,成为嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。Windows CE操作系统就是微软公司从整体上为有限资源平台设计的多线程、完整优先权、多任务的操作系统。Win CE支持各种处理器产品家族,包括x86,Xscale,ARM,MIPS和SH系列。它的模块化设计允许它对从掌上电脑到专用工业控制器的用户电子设备进行定制,选择系统模块和组件的多少决定了所需内存的大小。

  Windows CE操作系统之所以能够支持各种各样的硬件设备,是因为对每一款硬件设备,都有其对应的设备驱动程序,否则这款硬件就无法在Windows CE下正常工作。Win CE提供了4种设备模型,其中2种是专门用于Win CE的模型,另外2种外部模型来自其他的操作系统。基于Win CE的两种模型是本机的设备驱动程序和流接口的驱动程序;两种外部模型用于通用串行总线(USB)和网络驱动器接口标准(NDIS)驱动程序。下面针对Win CE系统下基于三星公司的ARM9内核芯片S3C2410的CAN总线控制器SJA1000,以流接口驱动程序形式进行设计。

  1 CAN总线及控制器工作原理

  控制器局域网CAN是由ISO定义的串行通信总线,主要用于各种过程检测及控制。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1 Mb/s。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。它的基本设计规范要求有高位速率和高抗电磁干扰性,而且能够检测出产生的任何错误。由于CAN串行通信总线具有这些特性,它很自然的在汽车制造业以及航空工业中受到广泛应用。

  SJA1000是一种独立控制器用于移动目标和一般工业环境中的区域网络控制(CAN)。它是Philips半导体公司的PCA82C200 CAN控制器(BasicCAN)的替代产品。而且它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN2.0B协议。其内部体系结构如下图1所示。

  嵌入式Win CE中CAN总线控制器的驱动设计与实现

  CAN核心模块控制CAN帧的发送和接收。接口管理逻辑负责连接外部主控制器,该控制器可以是卫星控制器件或任何其他器件。经过SJA1000复用的地址/数据总线访问寄存器和控制读/写选通信号都在这处理。SJA1000的发送缓冲器能够存储一个完整的报文(扩展或标准的)。当主控制器初始化发送,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。当收到一个报文时,CAN核心模块将串行位流转换成用于验收滤波器的并行数据。通过这个可编程的滤波器,SJA1000能确定主控制器要接收哪些报文。所有收到的报文由验收滤波器验收并存储在接收FIFO。储存报文的多少由工作模式决定,最多能存储32个报文。

  2流接口驱动程序工作机制

  相比于本机设备驱动程序,流接口驱动程序表现为一个动态链接库,由设备管理器统一加载、管理和卸载。与具有单独目的的内部设备驱动程序相比,所有的流接口驱动程序都是用同一组接口并调用同一个函数集——流接口函数。Win CE的文件系统通过这些人口点函数与流接口驱动进行通信,从而达到应用程序访问驱动程序、操作硬件的目的。流接口驱动程序要实现的DLL接口见表1。

  嵌入式Win CE中CAN总线控制器的驱动设计与实现

  在实际的开发中,上述接口名称中的XXX三个字母被具体设备的设备文件名所代替。流接口驱动程序通过编译后,生成DLL文件,即动态链接库文件。

技术专区

  • Alexa语音服务软件扩展STM32Cube
  • 结合DNN API驱动未来神经网络应用的解决方案
  • 针对于高端移动通信和汽车市场的四集群设计
  • 一款基于帧捕捉的开源图形调试器应用设计
  • 即将成为标准配置的最新安全技术:后视摄像系统
  • 嵌入式Win CE中CAN总线控制器的驱动设计与实现已关闭评论
    A+
发布日期:2019年07月14日  所属分类:物联网