- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uClinux下CAN通信卡驱动程序的实现
电子发烧友 电子技术论坛
uClinux 下 CAN 通信卡驱动程序的实现
容海亮 邓志杰
(兰州交通大学光电技术与智能控制教育部重点实验室 兰州 730070 )
摘要:uClinux 是针对微控制领域设计的嵌入式操作系统。本文介绍了基于 uClinux 嵌入式
操作系统的 CAN 通信卡设备驱动程序的实现。描述了 CAN 通信卡驱动程序的框架以及如
何将驱动程序加载到 uClinux 系统内核中。对其他设备在 uClinux 下的驱动程序编写有一定
的参考价值。
关键词:uClinux 驱动程序 中断 CAN 通信
中图分类号:TP336 文献标识码:A
1 引言
Linux 是遵循 POSIX 标准的免费操作系统,与其他操作系统相比,Linux 有其自身显著
的优点:强大的兼容性,先进的网络特性,真正的多用户多任务能力,稳定性高,移植灵活
等特点。由于它完全公开源代码,而且具有很强的稳定性,越来越多的人员开始采用 Linux
来开发自己的产品。uClinux 是专门应用于微型控制领域的嵌入式 Linux 操作系统。它继承
了桌面Linux 的优点,并精简内核以适应控制领域的要求,同时具有很高的可靠性。已经在
很多场合得到了成功的应用。
目前,工业现场大量使用控制器局域网(CANController Area Network )现场总线网络。
CAN 通信卡作为 MPU 的外部设备将 MPU 接入 CAN 网络。市场上可直接应用到 uClinux
系统的CAN 通信卡并不多,因而就需要我们自己编写 CAN 通信卡在uClinux 下的驱动程序。
2 uClinux 设备驱动程序的结构
计算机中每一种设备都有与其相对应的硬件控制器,管理这些硬件控制器的代码不是放
在应用程序里面,而是放在操作系统的内核里面。这些管理硬件控制器的软件就是设备驱动
程序。uClinux 系统内核通过驱动程序与外围设备进行交互。对用户程序而言,设备驱动程
序隐藏了设备的具体细节,对不同设备提供统一的接口,将设备影射成一个特殊的设备文件。
用户程序对设备文件的操作就如同对普通文件进行操作一样方便。
uClinux 将每个设备看作一个文件。uClinux 支持的设备文件分两类,一类是字符设备,
操作系统只能对该设备进行顺序读取,不需要缓冲区;二是块设备,该类设备可随机存取,
需要缓冲区。CAN 通信卡即属于字符型设备。
操作系统对设备的访问是通过设备驱动程序实现的,uClinux 的设备驱动程序一般是以模
块的形式加载到内核中的。uClinux 系统与驱动程序的层次关系如图一所示:
图一 驱动程序在系统中的位置
2.1 CAN 通信卡设备简介
控制器局域网 CAN 为串行通信协议,能有效地支持具有很高安全等级的分布式实时控
制,CAN 最初是由德国 BOSCH 公司为汽车监测和控制而设计的,目前 CAN 已逐步应用到
其它工业控制中。CAN 被细分为数据链路层和物理层,CAN 通信卡就是实现这两层的功能。
电子发烧友 电子技术论坛
CAN 采用的是短帧结构,每一帧的有效字节数为 8 个,具有 CRC 校验和其它检测措施,
数据出错几率小。工作时通过报文标识符确定总线访问优先权,数据传输速率可编程。在发
送过程中,被破坏的报文可自动重发。当 CAN 接收到一个报文时,将数据自动保存到 CAN
的接收缓冲器中,并产生接受中断。当成功发送一个报文后,产生一个发送中断信号。CAN
将数据串行发送到总线上。CAN 通信卡驱动程序要实现的任务主要有以下几点:
(1) 使CAN 通信卡具有发送和接收任意长度数据的能力
(2 ) 以阻塞或非阻塞方式读写CAN 设备
(3 ) 使应用程序具有设置CAN 控制器运行参数的能力
(4 ) 使CAN 卡具有多路收发的能力
2.2 uClinux 下 CAN 通信卡驱动程序的分析
在 Linux 系统下,应用程序通过系统调要向驱动程序传送任意长度的数据帧。驱动程
序将数据分段打包,放入发送队列,并向 CAN 控制器发出发送请求,中断处理程序中的发
送模块负责将数据包发送出去。当 CAN 通信卡识别到有数据到达时,由 CAN 控制器产生
接收中断,启
您可能关注的文档
最近下载
- 2022年北京市十二中初三(上)期中数学试卷及答案.pdf VIP
- 鲁教版初中九年级化学各章节知识点归纳复习提纲.doc
- 海鲜市场项目可行性研究幻灯片.pptx VIP
- 微电网能量管理:技术、策略与发展路径探究.docx VIP
- 某污水处理工艺设备安装施工方案.docx VIP
- 理智与情感:爱情的心理文化之旅 智慧树网课章节测试答案.docx VIP
- 03.1 20CS03-1 一体化预制泵站选用与安装(一).docx VIP
- 2025年公司组织架构图及各部门职能要求模板参考(架构图可编辑).pdf VIP
- 级配碎石施工技术课件.ppt VIP
- 神话传说故事与中国文化 智慧树 知到答案.docx VIP
文档评论(0)