嵌入式Linux设备驱动程序的设计与研究.docx
《嵌入式Linux设备驱动程序的设计与研究.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux设备驱动程序的设计与研究.docx(114页珍藏版)》请在冰点文库上搜索。
嵌入式Linux设备驱动程序的设计与研究
式Linux操作系统的研究和应用具有巨大的学术
和商业价值。
在嵌入式Linux系统的开发中,嵌入式设备种类繁多的特点决定了不
同的嵌入式产品在开发时都必须设计和开发自己的设备驱动程序,使得嵌入式
Linux设备驱动程序的开发在整个嵌入式系统开发工作中占有举足轻重的地位。
本文首先详细介绍了嵌入式Linux系统的体系结构以及嵌入式Linux系统设计
的基本步骤,并阐述了在基于S3C2410芯片的FS2410开发板上构建了一个可实用
的嵌入式Linux系统的全过程;然后分析了Linux内核的组成和工作机制、内核与
设备驱动之间的关系,Linux设备驱动的结构,并总结了Linux设备驱动的设计和
实现步骤;再概述了USB总线协议的拓扑结构、通信流模型、数据传输流程等问
题,实现了基于ZC301P芯片的USB摄像头的嵌入式Linux驱动程序。
最后概述
了PCI总线协议的体系结构、总线信号、总线配置等问题,实现了流媒体数据缓
存PCI卡的Linux设备驱动程序。
在硕士课题的研究工作中,作者的主要工作成果是:
1.研究和分析了项目开发中USB摄像头和USB鼠标数据传输带宽冲突所造
成的花屏、死机的问题和原因。
从减小冲突的影响和降低传输带宽需求这两个方
面出发,提出并实现了三种解决USB传输带宽冲突问题的方法。
实验证明,综合
使用这三种方法就能够有效地解决带宽冲突带来的花屏、死机问题。
并且,据此
发表核心文章一篇。
2.总结了Linux设备驱动程序的设计和实现步骤,并实现了基于ZC301P芯
片的USB摄像头和流媒体数据缓存PCI卡的Linux设备驱动程序。
关键词:
嵌入式Linux,设备驱动,USB,PCI,研究
III
fromtheUSBcameraandcausesthesystembreakdown.Givesandimplementsthree
methodsaboutweakeningtheinfluenceofthecollisionandreducingtherequestofthe
transfersbandwidthtodealwiththeproblem.Theresultoftheexperimentationproves
theintegrationofthreemethodscaneffectivelysolvethebandwidthcollision.And
authorpublishesacorepaperbasedonthis.
2.SummarizesthedesignanddevelopmentstepsoftheLinuxdevicedriver,and
implementstheUSBcameradevicedriverbasedonZC301pchipandthestreaming
mediadatacachePCIcarddevicedriver.
Keyword:
EmbeddedLinux,devicedriver,USB,PCI,Research
IV
第一章绪论........................................................1
1.1研究背景.......................................................1
1.1.1嵌入式系统.................................................1
1.1.2Linux操作系统.............................................1
1.1.3Linux作为嵌入式操作系统的优势.............................2
1.2研究现状.......................................................2
1.3课题研究的意义和内容...........................................3
1.4论文的结构.....................................................4
第二章嵌入式LINUX内核以及设备驱动................................5
2.1嵌入式LINUX系统的体系结构......................................5
2.1.1嵌入式处理器...............................................5
2.1.2嵌入式外围硬件设备.........................................6
2.1.3嵌入式操作系统.............................................7
2.1.4设备驱动...................................................7
2.1.5嵌入式应用软件.............................................7
2.2嵌入式LINUX系统的设计与实现....................................8
2.2.1嵌入式Linux系统开发环境的搭建.............................8
2.2.2嵌入式Linux系统内核引导程序的实现.........................9
2.2.3嵌入式Linux系统内核的裁减和移植..........................10
2.2.4嵌入式Linux系统根文件系统的建立..........................12
2.3LINUX操作系统内核.............................................13
2.3.1Linux内核的组成..........................................13
2.3.2Linux内核各部分的工作机制................................14
2.4.LINUX设备驱动程序..........................................19
2.4.1Linux设备驱动概述........................................19
2.4.2Linux设备驱动与内核的关系................................19
2.4.3Linux设备驱动的结构......................................21
2.4.4Linux设备驱动的设计和实现步骤............................22
第三章嵌入式LINUX下USB设备驱动的设计与研究.....................26
3.1USB总线概述..................................................26
3.1.1USB总线拓扑结构..........................................26
3.1.2USB总线的通信流模型......................................27
3.1.3USB数据的传输流程........................................28
3.2LINUX环境下的USB设备驱动程序.................................29
3.2.1Linux中USB设备驱动的核心数据结构........................29
V
3.2.2USB主机驱动结构..........................................31
3.2.3USB设备类驱动接口分析....................................33
3.3USB摄像头的LINUX设备类驱动的设计与实现.......................33
3.3.1USB摄像头驱动的模块化编程子程序..........................34
3.3.2USB摄像头驱动的探测和移除子程序..........................35
3.3.3USB摄像头驱动的服务于I/O请求的子程序....................38
3.4USB传输带宽冲突的研究........................................40
3.4.1USB摄像头与USB鼠标数据传输带宽冲突......................40
3.4.2USB摄像头与USB鼠标冲突的原因分析........................41
3.4.3USB摄像头与USB鼠标数据传输带宽冲突的解决办法............42
第四章嵌入式LINUX下PCI设备驱动的设计与实现.....................46
4.1PCI总线概述..................................................46
4.1.1PCI总线的体系结构........................................46
4.1.2PCI总线信号..............................................47
4.1.3PCI总线配置..............................................49
4.2LINUX环境下的PCI设备驱动程序.................................50
4.2.1Linux中PCI设备驱动的核心数据结构........................50
4.2.2PCI设备类驱动接口分析....................................51
4.3流媒体数据缓存PCI卡的LINUX设备驱动的设计与实现...............52
4.3.1流媒体数据缓存PCI卡驱动的模块化编程子程序................52
4.3.2流媒体数据缓存PCI卡驱动的探测和移除子程序................54
4.3.3流媒体数据缓存PCI卡驱动的服务于I/O请求的子程序..........56
4.3.4流媒体数据缓存PCI卡驱动的中断服务子程序..................58
第五章总结.........................................................60
5.1全文总结......................................................60
5.2进一步工作....................................................60
致谢...............................................................61
参考文献............................................................62
攻硕期间取得的研究成果..............................................65
II
Abstract
InPost-PCerawhenthedigitalinformationtechnologyandnetworktechnologyare
developingatahighspeed,theembeddedsystemhasmanymeritsofsmallbulk,high
solidity,powerfulfunction,etc,soithaspermeatedintoindustry,agriculture,education,
nationaldefence,scientificresearch,anddailylife,etc.Theembeddedsystemisthe
veryimportantpowertoimpulsethetechnologyinnovationofallkindsofindustries,
theevolutionoftheproduct,theaccelerationoftheautomatizationprocess,theadvance
ofproductivity,etc.Atthesametime,embeddedLinuxoperatingsystemhasrapidly
becomethepopularembeddeddevelopmentplatform,becauseithasmanymeritsof
opensource,easydevelopment,powerfulfunction,stabilization,lowcost,etc.The
researchanddevelopmentbasedonembeddedLinuxoperatingsystemhavethemuch
valueofscienceandcommerce.InthedevelopmentoftheembeddedLinuxsystem,we
mustdesignanddevelopourdevicedriverinthedevelopmentofmanyembedded
productbecauseofmanykindsoftheembeddeddevice,sothedevelopmentofthe
embeddedLinuxdevicedriverisveryimportantjobinthedevelopmentofthewhole
embeddedsystem.
Thisthesis,firstly,introducestheembeddedLinuxsystemarchitectureandthe
basicstepsofthedesignofembeddedLinuxsystem,andilluminatestheentireprocess
ofthedevelopmentoftherealembeddedLinuxsystembasedonFS2410development
board;secondly,analyzesthecompositionandworkprincipleofLinuxkernel,the
relationshipbetweenthekernelanddevicedriverandthearchitectureofLinuxdevice
driver,andsummarizesthedesignanddevelopmentstepsoftheLinuxdevicedriver;
thirdly,introducestheUSBbustopologyarchitecture,USBcommunicationsmodel,
USBdatatransmissionflow,etc,implementstheUSBcameradevicedriverbasedon
ZC301pchip,andanalyzesandsolvestheconflictofUSBbandwidth;finally,
introducesPCIbusarchitecture,PCIbussignals,PCIbusconfigurationproblems,and
implementsthestreamingmediadatacachePCIcarddevicedriver.
Intheresearchworkofthemasterthesis,themaincontributionoftheauthorare:
1.InvestigatesandanalyzesthereasonoftheUSBcameraandUSBmouse’sdata
transfersbandwidthcollision.Thecollisiondestroystheimagedatawhichistransferred
1
第一章绪论
1.1研究背景
1.1.1嵌入式系统
嵌入式系统(EmbeddedSystem)可以定义为:
以应用为中心、以计算机技术
为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格
要求的专用计算机系统
[1]
。
从上述定义可以看出嵌入式系统是针对特定应用的软
硬件综合体,其一般具备以下几方面的特征:
嵌入式系统通常是面对用户、面向产品、面向特定应用的;
嵌入式系统是先进的计算机技术、半导体技术以及电子技术与各个行业
的具体应用相结合的产物;
嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、
可靠性、成本、体积等要求;
嵌入式系统开发需要专门的开发工具和环境;
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在储
存器芯片或单片机中;
1.1.2Linux操作系统
Linux操作系统核心最早是由芬兰的LinusTorvalds于1991年8月在芬兰赫
尔辛基大学上学时发布的(Linux0.11版),后来经过众多世界顶尖的软件工程师
的不断修改和完善,Linux得以在全球普及开来,在服务器领域及个人桌面领域
得到越来越多的应用
[2]
。
Linux是在GNU公共许可权限下免费获得的,是一款符合POSIX标准的多
用户、多任务、支持多线程和多CPU的类Unix操作系统。
Linux以其高效性和
灵活性著称。
Linux模块化的设计结构,使得它能够在价格昂贵的工作站上运行,
也能够在廉价的PC机上实现全部的Unix特性。
Linux当前有很多发行版本,较
流行的有:
RedHatLinux、DebianLinux、RedFlagLinux等
[3]
。
4
的大门。
对嵌入式Linux设备驱动的研究,有助于深入理解嵌入式Linux内核代
码。
此外,硬件必须有配套的驱动程序才能正常工作,由于嵌入式设备的种类繁
多特点决定了不同的嵌入式产品在开发时都必须设计自己的设备驱动程序,使得
设备驱动程序的开发在整个嵌入式系统开发工作中占有举足轻重的地位。
因此,
对嵌入式Linux设备驱动的研究是一个很好的课题,具有重要的社会和商业价值。
当前嵌入式Linux设备驱动的研究工作主要集中在对特定设备的驱动程序实
现和提升设备驱动性能方面,对嵌入式Linux设备驱动程序的设计和实现的基本
步骤总结的比较少。
本课题的研究内容和工作主要包括:
1.总结了Linux设备驱动程序的设计和实现步骤,并实现了基于ZC301P芯
片的USB摄像头和流媒体数据缓存PCI卡的Linux设备驱动程序。
2.研究和分析了项目开发中USB摄像头和USB鼠标数据传输带宽冲突所造
成的花屏、死机的问题和原因。
从减小冲突的影响和降低传输带宽需求这两个方
面出发,提出并实现了三种解决USB传输带宽冲突问题的方法。
1.4论文的结构
全文共分五章,具体的内容组织如下:
第一章:
绪论。
概述了课题的背景以及研究状况,提出了课题的研究意义,
介绍了本文的主要研究工作。
第二章:
嵌入式Linux内核及设备驱动。
介绍了嵌入式Linux系统设计的基
本步骤,并基于S3C2410处理器的FS2410开发板上构建了嵌入式Linux系统,
最后介绍了Linux操作系统内核的组成以及Linux设备驱动的结构。
第三章:
嵌入式Linux下USB设备驱动的设计与研究。
介绍了USB总线协
议以及USB设备的Linux驱动框架,实现了基于ZC301P芯片的USB摄像头的
嵌入式Linux驱动程序,最后研究了项目开发中出现的USB摄像头和USB鼠标
数据传输带宽冲突的问题,并提出了相应的解决办法。
第四章:
嵌入式Linux下PCI设备驱动的设计与实现。
介绍了PCI总线协议
以及PCI设备的Linux驱动框架,实现了流媒体数据缓存PCI卡的Linux设备驱
动。
第五章:
结束语。
总结了本文的主要工作以及进一步的工作展望。
本文最后是参考文献和致谢。
5
第二章嵌入式Linux内核以及设备驱动
2.1嵌入式Linux系统的体系结构
嵌入式Linux系统有两层含义,狭义的嵌入式Linux系统指的是嵌入式Linux
操作系统,广义的嵌入式Linux系统指的是基于嵌入式Linux操作系统构建的嵌
入式系统。
如图2-1所示,嵌入式系统主要分为两大部分:
嵌入式硬件和嵌入式
软件。
嵌入式硬件部分主要由嵌入式处理器、储存器、I/O端口和外围设备构成;
嵌入式软件部分主要由嵌入式操作系统、设备驱动和嵌