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

发布者:泉地水无痕最新更新时间:2013-03-18 来源: dzsc关键字:WinCE  CAN总线控制器  S3c2410 手机看文章 扫描二维码
随时随地手机看文章

    引 言

  近年来,由于消费电子、计算机、通信(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总线控制器SJAl000,以流接口驱动程序形式进行设计。

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

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

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

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

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

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


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

  3 CAN总线控制器sJAl000驱动程序设计

  CAN总线控制器SJAl000驱动采用流接口驱动程序模型,要实现的流接口函数分别为CAN_Init,CAN_Deinit,CAN_Open,CAN_Close,CAN_Read,CAN_write,CAN_IOControl等。应用程序使用CreatFile()函数以文件的方式打开CAN控制器驱动,以获取驱动文件的句柄,然后使用该句柄调用DeviceloControl(),ReadFile(),WriteFile()函数来CAN控制器的各种功能。

  由于篇幅有限,下面仅针对CAN_Init,CAN_Read和CAN_IntrThread函数的实现进行详细的设计。

  3.1 CAN_Init函数的设计实现

  当用户开始使用CAN总线控制器时,设备管理器调用这个函数来初始化控制器设备SJAl000。这个函数是通过设备管理器提供的ActiveDeviceEx()函数来调用的。函数执行后,如果成功就返回设备的句柄。CAN_Init函数的流程如图2所示。 [page]


  3.2 CAN_Read函数的设计实现

  根据CAN协议规范,报文的接收由CAN控制器SJAl000独立完成,收到的报文放在接收缓冲器。可以发送给主控制器的报文由状态寄存器的接收缓冲器状态标志“RBS’’和接收中断标志“RI”标出(如果使能)。主控制器会将这条信息发送到本地的报文存储器,然后释放接收缓冲器并对报文操作。发送过程能被SJAl000的中断请求或查询SJAl000的控制段状态标志来控制。cAN_Read函数操作成功则返回实际读取的字节数,否则返回值为-1。CAN_Read函数程序的流程图如图3所示。

  3.3 CAN_IntrThread函数的设计实现

  在SJAl000控制器中,报文的发送和接收是采用中断方式来完成的。内核函数InterruptInitialize()外部中断事件和将逻辑中断号绑定,这一步就会使能该中断。当该中断发生时,ISR就触发该事件生效。完成以上工作后,驱动程序中的IST就可以使用WaitForsin-gleObject()函数等待中断的发生。中断处理结束后,IST需要调用InterruptDone()告诉操作系统中断处理结束。中断服务线程CAN_IntrThread函数程序流程图如图4所示。

  其他的流接口函数根据win cE流接口驱动程序模型进行编写。

  4 驱动程序的封装及加载

     通过上面的工作,能够编译得到一个DLL函数,但它的接口函数还没有导出,还需要告诉链接程序需要输出什么样的函数。为此,必须建立一个def文件,使用WindoWS下自带的记事本程序编辑一个文件名为“Can.def”的文件: 

  最后需要编写自己的CEC文件。主要是添加一个Build Method,任务是复制注册表到Win CE的系统目录下面。加一个bib File,其主要功能是把编译的can.dll文件添加到系统内核中去。保存写好的CEC文件,在.Platform Buildm中添加CEC特征到系统选项中去。生成系统时,添加自己的CEC特性,可以包含刚编写的can驱动程序。

关键字:WinCE  CAN总线控制器  S3c2410 引用地址:嵌入式WinCE中CAN总线控制器的驱动设计与实现

上一篇:基于VxWorks的油井数据采集远程终端的设计
下一篇:zImage内核镜像解压过程详解

推荐阅读最新更新时间:2024-03-16 13:20

S3C2410和MBF200在指纹采集系统中的应用
  1 引言   指纹识别即指通过比较不同指纹的细节特征点来进行鉴别。由于每个人的指纹不同,就是同一人的十指之间,指纹也有明显区别,因此指纹可用于身份鉴定。随着计算机和信息技术的发展,FBI和法国巴黎警察局于六十年代开始研究开发指纹自动识别系统(AFIS)用于刑事案件侦破。目前,世界各地的警察局已经广泛采用了指纹自动识别系统。九十年代,用于个人身份鉴定的自动指纹识别系统得到开发和应用。S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UA
[单片机]
<font color='red'>S3C2410</font>和MBF200在指纹采集系统中的应用
Linux NAND FLASH驱动代码分析
  FLASH驱动在嵌入式系统中有着举足轻重的位置,而目前市场上NAND FLASH的价格又要便宜与NOR FLASH,随着越来越多的平台支持从NAND FLASH中启动,掌握NAND flash的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对NAND FLASH驱动只是简单的修改,对其工作原理并不太清楚,下面我们来分析一下NAND FLASH的代码流程,从中体会块设备的代码之美。   在学习NAND FLASH驱动之前,我们需要对块设备中下面的重要2点有个认识:   1.gendisk: 描述块设备实体(一整个nandflash芯片)的结构体   整个块设备的注册过程都是围绕ge
[单片机]
ARM9 S3C2410控制GPRS模块实现的车辆监控系统
  针对传统基于单片机、GSM 技术、ArcGIS ( MapInfo 或 Google Map ) 的车辆监控系统功能单一、通信费用高、可移植性差、定位精度不高等缺点,提出一种新的车辆监控系统解决方案:以 ARM9 S3C2410 控制 GPRS 模块接入 Internet,实现车载端和监控中心的无线数据传输,同时在监控中心引入 51ditu、Web Service 和数据库,完成车辆定位和用户接入访问,可广泛应用在国内城市公共交通、出租车、旅游车、危险品运输和物流等车辆管理方面。   1 系统需求及应用分析   随着我国城镇化进程加快,地铁、轻轨、快速公交等现代化公共交通快速发展,轨道和公共交通成为城市交通的骨干。目前,我
[单片机]
ARM9 <font color='red'>S3C2410</font>控制GPRS模块实现的车辆监控系统
SD存储及基于S3C2410的应用
1 引言 SD卡( Secure DigitalMemory Card)是一种基于Flash的新一代存储器,它着重数据存储的安全、容量和性能,是许多便携式电子产品如数码相机、手提电话, PDA 等理想的外部存储介质。 2 SD的基本概念 2. 1 SD的通信协议 SD卡系统可以在两种通信协议下工作: SD协议和SP I协议。用户可以在硬件初始化时自由选择SD卡系统的通信协议。对于特定的硬件电路,用户只需使用一种通信协议即可。 本文根据笔者的硬件,仅讨论最常用的SD协议。 2. 2 SD数据传输方式 SD支持两种数据传输方式: 1 - bit方式(标准总线)和4- bit方式(宽总线) 。在1 - bit方式下,数据仅
[单片机]
SD存储及基于<font color='red'>S3C2410</font>的应用
移植嵌入式Linux到ARM处理器S3C2410:BootLoader
BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。   BootLoader 的实现依赖于CPU的体系结构,因此大多数 BootLoader 都分为stage1 和stage2 两大部分。依赖
[单片机]
移植嵌入式Linux到ARM处理器<font color='red'>S3C2410</font>:BootLoader
基于ARM9核的S3C2410芯片和操作系统实现调色板显示系统的设计
对于一个显示设备,数据的更新率正比于画面的像素数和色彩深度的乘积。在嵌入式Linux系统中,受处理器资源配置和运算能力的制约,当使用大分辨率显示时(如在一些屏幕尺寸较大的终端上,往往需要640×480以上),需要降低显示的色彩深度。否则,由于数据处理负担过重会造成画面的抖动和不连贯。这时,调色板技术将发挥重要作用。ARM9内核的S3C2410在国内的嵌入式领域有着广泛的应用,芯片中带有LCD控制器,可支持多种分辨率、多种颜色深度的LCD显示输出。在此,将S3C2410的调色板技术,以及嵌入式Linux系统下调色板显示的实现方法进行分析。 1 S3C2410调色板技术概述 1.1 调色板的概念 在计算机图像技术中,一个像素的颜色
[单片机]
基于ARM9核的<font color='red'>S3C2410</font>芯片和操作系统实现调色板显示系统的设计
基于ARM9与WinCE的车辆GPS定位信息采集系统
GPS可提供连续、高精度、实时的时间基准、三维位置、三维速度、整周模糊度等数据,具有性能好、精度高的特点,因而广泛应用于GPS载波相位测姿、精确制导、SINS/GPS组合导航、嵌入式车辆导航监控等军事与民用领域。而嵌入式系统以其低功耗、小体积、高稳定性和便携等优势,在GPS的应用中占据重要的位置。本文研究基于ARM920T内核的嵌入式微处理器S3C2440和WindowsCE 5.0(简称WindowsCE)的某型军车GPS定位信息的采集与处理。 1 系统硬/软件平台概述 车辆GPS定位信息采集系统的硬件平台结构如图l所示。 该平台可以分为3大模块: 1)微系统核心模块 由基于ARM920T的32位嵌入式微处理器S3C
[单片机]
基于ARM9与<font color='red'>WinCE</font>的车辆GPS定位信息采集系统
基于S3C2410单片机串口应用程序的开发
  0 引言   ARM ADS全称为ARM Developer suite(ARM开发套件)。是ARM公司推出的ARM系列处理器集成开发工具,使用非常广泛,目前最高版本的是1.2,它取代了早期的ADS1.1和 ADS1.0。它除了可以安装在Windows NT4、Windows98和Windows95操作系统下,还支持Windows XP和Windows Me操作系统。ADS由命令行开发工具、ARM实时库、GuI开发环境(CodeWarrior和AXD)、实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。命令行开发工具完成将源代码编译,连接成可执行代码的功能,包手舌:a
[单片机]
基于<font color='red'>S3C2410</font>单片机串口应用程序的开发
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved