基于uclinux的CAN总线嵌入式驱动编程

发布者:SereneDreams最新更新时间:2010-08-04 来源: 机电设备关键字:计算机软件  uclinux  CAN总线  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  早期应用于八位单片机软件设计的嵌入式系统主要为前后台系统(或超循环系统),程序大约在几千行以内,由两部分组成,即其应用程序是一个无限的循环,循环中调用函数完成相应的操作,属于后台行为;其中断服务程序处理异步事件,属于前台行为.随着嵌入式系统功能越来越庞杂,如友好的人机界面、网络化、远程监控等.各种任务的优先级不同,传统的设计方法无法完成,程序长达数万行,程序员必须同繁琐的底层硬件打交道,这样效率低下.现代电子技术的发展为嵌入式微处理器提供了更多的外设,通用的如串口、并口、以太网口、现场总线、USB口等.基于免费自由软件Linux发展而来的嵌入式系统uclinux,是一种免费的嵌入式操作系统.uclinux系统具有内核小、效率高、源码开放、性能稳定、大量的开发工具、良好的开发环境等特点,并且各种应用程序丰富,是进行嵌入式系统开发的最优秀工具之一.

  2 uclinux操作系统简介

  uclinux 系统主要由用户进程、系统调用接口、uclinux 内核、硬件控制器等四部分组成.用户进程是用户根据自己的设计和功能要求开发的应用程序,通过调用系统的功能函数来实现系统功能;系统调用接口通过系统调用实现用户与系统内核的接口,这些调用和服务也可以看成是系统内核的一部分;uclinux 内核是操作系统的灵魂,它抽象了许多硬件细节,将所有的硬件抽象成统一的虚拟接口,使程序可以以一种统一的方式进行数据处理,它主要包括基于优先级的进程调度、内存管理、文件系统、网络接口、进程间通讯等五部分;硬件控制器则包含了系统需要的所有可能的物理设备.以上四个部分之间的每个子系统都只能跟邻近的系统进行通信。

  uclinux 的设备管理系统是嵌入式操作系统的重要组成部分,它可以分为:下层、与设备相关的,即所谓的设备驱动程序,直接与相应的设备打交道,并向上提供一组访问接口;以及上层、与设备无关,根据输入输出请求,通过特定设备驱动提供的接口,与设备进行通信.如通用的串口、网卡等驱动程序在uclinux 中都可以找到。

  3 uclinux驱动编 程原理

  uclinux嵌入式系统不能象Linux一样动态加载驱动程序模块,而只能同内核一起编译,与应用程序、其他驱动程序一起固化到可擦写的Flash上,驱动程序长驻内存,是静态驱动程序.uclinux系统根据设备性质的不同,将设备分为四种类型:字符设备(char)、块设备(block)、网络接口( net )和其他设备驱动程序模块.在下载的uclinux源代码包中,可以在uclinux/linux/drivers目录下面看到通用设备如char,block, net, cdrom, scsi, sound等.系统对于每个设备都对应一个主设备号和一个次设备号,不同的设备可以对应相同的主设备号,应用程序访问设备通过不同的次设备号来识别和区别设备.在Linux系统/dev目录下通过输入ls -l命令可以查到系统已注册的设备,因此编写新的驱动程序时必须向系统注册该设备.在uclinux系统中,通过register_chrdev函数实现注册。

  uclinux系统将所有硬件抽象成虚拟的文件系统,所有的字符设备、块设备都支持文件操作接口,因此可以对这种虚拟的设备文件系统进行文件操作.通常对设备文件进行的操作有open、read、write、release等,即打开、读、写、释放文件.每一个设备驱动程序实质上是用来完成特定任务的一组函数集. 驱动程序拥有一个称为fileoperation 的数据结构,其中包含指向驱动程序内部大多数函数的指针.引导系统时,内核调用每一个驱动程序的初始化函数,将驱动程序的主设备号以及程序内部的函数地址结构的指针传输给内核.这样,内核就能通过设备驱动程序的主设备号索引访问驱动程序内部的子程序,完成打开、读、写等操作.程序员经常面临的一项工作就是为系统的新设备编写驱动程序.

  在现代控制系统中,为了便于数据通讯,在底层常采用现场总线,目前CAN总线广泛应用于过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域,下面介绍CAN总线应用于嵌入式系统的驱动编程.

  4 CAN 总线的性能特点

  CAN(Controller Area Network)即控制器局域网络.CAN 总线目前已形成国际标准 version2.0.该技术规范包括A 和B 两部分.2.0A 给出了CAN 报文标准格式,而2.0B 给了出厂标准和扩展两种格式.CAN 总线是应用最广泛的现场总线之一,CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无需站地址等节点信息;CAN 网络上的节点信息分成不同的优先级,可满足不同的实时要求;CAN 采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据;CAN 只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”,CAN 的直接通信距离最远可达10km(速率5kbps 以下);通信速率最高可达1Mbps(此时通信距离最长为40m).CAN 上的节点数主要取决于总线驱动电路,目前可达110个;采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果;CAN 的通信介质可为双绞线、同轴电缆或光纤等.CAN 总线的数据通信具有突出的可靠性、实时性和灵活性.

关键字:计算机软件  uclinux  CAN总线  驱动程序 引用地址:基于uclinux的CAN总线嵌入式驱动编程

上一篇:基于μC/OS-II接入网接口的研究与设计
下一篇:基于NiosⅡ软核处理器下SD卡驱动设计

推荐阅读最新更新时间:2024-05-02 21:06

怎样用STM32CAN总线接口发送和接收数据
CAN协议基础知识 I2C.SPI总线多用于短距离传输,协议简单,数据量少,主要用于IC之间的通讯,而 CAN 总线则不同,CAN(Controller Area Network) 总线定义了更为优秀的物理层、数据链路层,并且拥有种类丰富、简繁不一的上层协议。与I2C、SPI有时钟信号的同步通讯方式不同,CAN通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。 CAN物理层的形式主要分为闭环总线及开环总线网络两种,一个适合于高速通讯,一个适合于远距离通讯。CAN闭环通讯网络是一种遵循ISO11898标准的高速、短距离网络,
[单片机]
怎样用STM32<font color='red'>CAN总线</font>接口发送和接收数据
CAN总线混合动力骄车电控系统的设计与实现
混合动力汽车是一种由内燃机和电动机混合驱动的汽车,其主要特点是节能、环保。这种汽车在起步时用电动机驱动,消除了内燃机起步时由于燃烧不充分而排黑烟的现象。在汽车减速或刹车时,利用发电机把动能转化成电能,贮存到蓄电池中,实现能量回收达到节能的目的。由于这种汽车是内燃机和电动机两种动力并存,仅用传统的针对内燃机的电控系统无法实现两种动力的最佳配合,因此开发混合动力车的全新电控系统是十分必要的.本文以一种电机并联式混合动力汽车成功实现为背景,从系统角度介绍了混合动力汽车电控系统结构、功能及效果。 并联式混合动力驱动结构简介 并联式混合动力汽车的驱动系统结构见图1。发动机通过机械传动装置与驱动桥连接,电动机通过动力复合装置也与驱
[工业控制]
<font color='red'>CAN总线</font>混合动力骄车电控系统的设计与实现
CAN总线在嵌入式数控系统中的应用
  CAN是一种多主方式的串行通讯总线,与一般的通信总线相比,CAN总线的数据通信具有可靠性、实时性和灵活性。因此,CAN已经在汽车、航空、工业控制、安全防护等领域得到了广泛应用。   目前,在数控机床通讯方面,采用较多的是PROFIBUS,完全采用CAN总线通讯方式的目前还没有。本系统采用32位ARM处理器,对CAN总线通信系统进行了尝试。 1 系统构成   图1所示为基于ARM 9多处理器六轴嵌入式数控系统,它具有以下特点:   1)六个伺服电动机各由一个下位机控制。上位机和下位机均以ARM9微控制器为核心,对其API接口进行扩展,通过CAN总线电路进行通讯,组成全数字式的数控系统;   2)上位机还
[嵌入式]
宝莱车的CAN总线特点分析
    CAN总线是一种串行数据通信协议,由于在数据通讯上具有突出的可靠性、实时性和灵活性,并可以非常有效地构成分布式控制/实时检测系统而得到了广泛应用。     随着人们对汽车动力性、操纵稳定性、安全性和舒适性的不断追求,现代汽车上安装了很多电子控制设备、电子部件、专用传感器和功能各异的执行装置。为了解决汽车电子系统控制中,许多动态信息资源共享、信息处理的实时性等问题,大多数中、高档汽车上都采用了CAN总线技术作为控制器联网手段。宝莱车的CAN总线具有高可靠性全面提高了宝莱车的动力性、经济性和安全性。     一、宝莱车CAN总线的组成与结构     宝莱车采用两条CAN总线,即驱动系统CAN总线和车身系统CAN总线
[嵌入式]
CAN总线成为车电系统的总线标准
1 . CAN总线 在电子产品的各种通讯方式中,CAN(Controller Area Network)总线以其高可靠性、实时性、传输距离远的特点得到广泛的应用,已经成为许多高档汽车(如奔驰、宝马等)车电系统的总线标准。于是出现了许多内部集成CAN控制器的单片机,如Atmel公司的T89C51CC0X系列单片机就是其中性价比较高的一款,它具有丰富的内部资源,支持CAN方式的在线编程。我们在使用此系列产品的过程中,针对其应用普遍但编程器较少的特点,开发了一款基于T89C51CC01CA芯片的CAN程序下载和CAN节点调试器,它既能对同类单片机进行编程,又能通过CAN总线对具有CAN通讯功能的设备进行调试。 2. 系统结构框图 2
[单片机]
<font color='red'>CAN总线</font>成为车电系统的总线标准
CAN总线轿车车窗智能控制系统实现的原理
现在各中高档轿车都安装有电动车窗,按钮控制车窗玻璃的升降。如果车窗无智能,司机在没有注意到乘客的手或物体伸出窗口的情况下按下按钮,乘客容易被车窗夹伤。为了安全,很多乘车都采用电动防夹车窗。在充分研究有关CAN总线在汽车电子系统中的应用和电动车窗防夹方案的基础上,提出一种基于CAN总线的轿车车窗智能控制系统的设计方案,实现车窗在正常工作模式下防夹控制功能和紧急情况下(异常工作模式)快速升降车窗控制功能。 目前.以微控制器为代表的汽车电子在整车电子系统中应用广泛,汽车控制正由机电控制系统转向以分布式网络为基础的智能化系统。CAN总线是一种支持分布式和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域广泛应用。作为目前
[汽车电子]
CAN总线抗干扰的6条“军规”
 随着CAN总线在电动汽车、充电桩、电力电子、轨道交通等电磁环境比较恶劣的场合应用越来越多,信号干扰的问题已经严重影响到使用者对CAN总线的信任。究竟如何才能抗干扰?本文展示了致远电子CAN总线抗干扰的6条“军规”。下面就随网络通信小编一起来了解一下相关内容吧。 在汽油车时代,CAN总线遇到的干扰少之又少,即使有一些继电器和电磁阀的脉冲,也不会有很大影响,稍微进行双绞处理,完全可以实现零错误帧。 可是到了电动汽车年代,逆变器、电动机、充电机等大功率设备对CAN的影响足以中断通讯,或者损坏CAN节点,如图1图2所示,就是被逆变器干扰的CAN波形。 图1 干扰前 图2 干扰后 面对干扰,各个汽车厂、零部件厂,测试诊断设备的厂商
[网络通信]
通过CAN总线控制VESC驱动直流无刷电机
最近在驱动一个直流无刷电机,驱动这一块不是我的研究重点,只是拿来用。但系统上用到CAN总线,找来找去找到了VESC这种神级物品,自然是拿一块来玩玩。 拿到我手上的VESC是国内某工作室的改版VESC V6.4(应部分网友需求,放出链接)。硬件方案是STM32F405+DRV8301+NVMFS5C628,带有CAN口、PPM口、USB口。 一个完全不知道参数的星型直流无刷电机,就这么1分钟就能转动。不得不说,本杰明大神的VESC Tool真是个神器,傻瓜式的一键调参。但是,本人的需求并不是通过VESC Tool让电机转速来,而是通过CAN口来向VESC下发指令,间接地控制直流无刷电机按需转动。 一开始把VESC源代码
[单片机]
通过<font color='red'>CAN总线</font>控制VESC驱动直流无刷电机
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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