嵌入式uclinux下的can总线设备驱动程序设计

嵌入式uclinux下的can总线设备驱动程序设计

ID:34450422

大小:324.17 KB

页数:4页

时间:2019-03-06

嵌入式uclinux下的can总线设备驱动程序设计_第1页
嵌入式uclinux下的can总线设备驱动程序设计_第2页
嵌入式uclinux下的can总线设备驱动程序设计_第3页
嵌入式uclinux下的can总线设备驱动程序设计_第4页
资源描述:

《嵌入式uclinux下的can总线设备驱动程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、万方数据嵌入式软件应用中文核心期刊‘微计算机信息:}(嵌入式与$0C)2008年第24卷第3-2期III文章编号:1008-0570(2008)03-2-0084-02嵌入式uClinux下的CAN总线设备驱动程序设计DriverDesignofCANBusDeviceBasedonErnbededuClinux‘(1.黄冈师范学院;2.武汉理工大学)肖飞1朱泽民1尹叶丹2。XlAOFEIZHUZEMINYINYEDAN‘摘要:介绍了uClinux操作系统和嵌入式Linux系统的开发流程及其驱动程序的开发,通过对CA

2、N总线设备SJAl000的驱动程序的设计与实现.详细说明了uClinux系统下CAN设备驱动程序的编写。关键:uClinux;嵌入式操作系统;CAN总线;设备驱动程序中图分类号:TP316文献标识码:AAbstract:ThisarticleintroduceduClinuxoperatingsystemandtheexploitationofthedevicedriverabouttheembeddedLinuxsys-tem,ThroughdesignedandimplementedthedriverofCANb

3、usdeviceSJAl000,expoundedhowtowrittendevicedriverontheU·Clinuxsystem.Keywords:uClimtx。embeddedoperatingsystem,CANbus,devicedriver1uClinux操作系统概述uClinux是Linux2.0的一个分支。它被设计用于没有MMU的微控制器领域,即被广泛应用于嵌入式Linux领域。uClinux的最大特征就是没有MMU(内存管理单元模块)。它很适合那些没有MMU的处理器。如ARM7TDMI,m68

4、ez328等。uClinux具有完全的TCP/IP协议栈。同时对其他许多的网络协议都提供支持。这些网络协议都在uClinux上得到了很好的实现。uClinux可以称作是一个针对嵌入式系统的优秀网络操作系统。2Linux驱动程序设计概述Linux系统内核通过设备驱动程序与外围设备交互.设备驱动程序是Linux内核的一部分。它是一组数据结构和函数。这些数据结构和函数通过定义的接口控制一个或多个设备。和UNIX一样,Linux中所有的设备均作为文件来对待,这些文件一般称为特殊文件,这样做的一个好处是使用户或应用程序可按操纵

5、普通文件的方式进行访问控制硬件设备。Linux内核有三种类型的设备驱动程序:字符设备驱动程序、块设备驱动程序和网络设备驱动程序。Linux的设备由一个主设备号(major)和一个次设备号(minor)标识。主设备号唯一标识了设备类型,它是块设备表或字符设备表中设备表的索引。次设备号仅由设备驱动程序解释,用于识别同类设备中。I/0请求所涉及到的那个设备。设备驱动程序可以分为3个主要组成部分:一圆自动配置和初始化子程序,负责检测所要驱动的硬件设备是否能正常工作。一(2)服务于I/0请求的子程序,又称为驱动程序的上半部分。

6、(3)中断服务子程序,又称为驱动程序的下半部分。肖飞:硕士研究生讲师基金项目:湖北省教育厅资助I

7、(2005Q141)3uClinux-FCAN设备的驱动程序编写根据上文对HNUX下设备驱动程序的描述。以及参考相关的实例分析,下面对CAN总线设备SJAt000的驱动程序进行编写。CAN设备驱动程序实际上是linux内核直接对sjal000器件的初始化与读写操作。经分析,sjal000CAN驱动程序构成包括如下几个部分:1)定义sjal000芯片内所有寄存器的访问地址,用于完成对其内部寄存器以及缓冲区的读写访问。例如:

8、#defineIO_PMOD(*(volatileunsigned乖)Ox3任5000)#defineIO_PDATA(+(volatileunsigned宰)Ox3任5008、#defineIO_PCON(奉(volatileunsigned+)Ox3ffs004)#defineSJA_MOD(o,2700000)#definesJA—CMR(0x2700004)#defineSJkSANBXB7(Ox2700060#defineSJK—£ANRXB8(0x2700070)一因为在我们的系统中.对sjal000的读

9、写是采用的部分模拟时序的方式,所以用到了$3C4510的10端口。下面对sjal000地址的定义进行分析。因为uClinux运行的时候,采用的是32位方式。即两个相邻地址间相隔4个字节,而在sjal000内部的地址间的间隔只有1个字节。虽然可以对$3CA510的内部寄存器定义为在访问sjal000的时候,将位宽度定义为8位,但这样会与linux

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。