The success's road
嵌入式嵌入式LinuxLinux驱动程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
驱动程序设计
www.farsight.com.cn
PDF 文件使用 "pdfFactory Pro" 试用版本创建 Ì Ì www.fineprint.com.cn
远见品质 今天的内容
vLinux驱动程序和应用程序的区别
v嵌入式Linux驱动程序特点
v高效的嵌入式Linux内核和驱动程序
开发
v嵌入式Linux内核开发工具
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 驱动程序对比应用程序
v应用程序是一个进程
Ø编程从主函数main()开始
Ø主函数main()返回即是进程结束
v驱动程序是一系列内核函数
Ø驱动程序向内核添加了一些函数,是内核的
一部分
üOpen()
üRelease()
üRead()
üWrite()
Ø这些函数由内核在适当的时候来调用
Ø这些函数可以用来完成硬件访问等操作
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序介绍
v驱动程序的分类
v设备驱动程序分
Ø字符设备
Ø块设备
Ø网络接口
Ø另外有一些设备驱动比较特殊,比如ip
forwarding accelerator,
cypher coprocessor,
realtime extend hardware
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序介绍(2)
v嵌入式Linux驱动已经支持的设备门
类齐全,已成为linux相对其他嵌入
式操作系统的一大优势
Ø工业控制常用的串口,并口
Ø人机输入设备鼠标、键盘,触摸屏
Ø彩色、黑白液晶显示输出
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序介绍(3)
v嵌入式Linux驱动包含了完善的基础设施,
这是Linux另一大优势
Ø 网络的完善支持包括
üTCP/UDP/IP
üFirewall
üWLAN
ü IP forwarding、IPSEC、VPN
Ø USB主机和设备的全面支持,包括
üUSB Hard Disk、Flash Disk
üUSB Camera
üUSB 网卡
üUSB HID
Ø 支持各种
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
总线和I/O规范
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序介绍(4)
v嵌入式Linux支持非常多的文件系统
ØDOS/Windows兼容的vfat,NTFS
ØLinux自有的ext2,ext3文件系统
Ø强大的企业级文件系统XFS,ReiserFS
Ø针对嵌入式FLASH存储器设计的
JFFS2/YAFFS2文件系统
Ø可堆叠统一化文件系统的UNIONFS
Ø cryptfs gzipfs实现 Compression/Cipher on the
Fly
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序介绍(5)
v嵌入式Linux支持丰富的音频和视频
硬件,以及各种流行的codec,包括
mpeg4,wmv9,realvideo。
v嵌入式Linux支持图形硬件加速,可
以充分利用图形硬件的强大功能
v嵌入式Linux的驱动/图形库有
ØDirectFB
ØOpenGL ES
ØSimple DirectMedia Layer
ØQT-embedded
ØGTK+ 2.0
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 驱动程序的作用
v从传统嵌入式开发角度来看,Linux
驱动程序是直接操控硬件的软件
Ø直接读写硬件寄存器,控制硬件
Ø操作设备缓冲区数据
Ø读写存储介质,比如flash或硬盘
Ø操作输出设备和执行机,例如打印,开关门
襟等等
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 驱动程序的作用(2)
v从应用软件编写人员来看,Linux驱
动程序提供软件访问硬件的机制
Ø应用软件通过驱动程序安全高效的访问硬件
Ø驱动程序文件节点可以方便的提供访问权限
控制
Ø驱动程序作为一个隔离的中间层软件,将底
层细节隐藏起来,提高了软件的可移植性和
可重用性
Ø接口鲜明的Linux驱动程序便于将软件划分开,
并隔离有缺陷的代码,对于项目的管理有积
极贡献
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 访问Linux设备驱动的方法
v设备提供dev文件系统节点和proc文
件系统节点
v应用程序通过dev文件节点访问驱动
程序
Ø字符型驱动一般通过标准的文件I/O访问
Ø块设备在上层加载文件系统,比如以FAT32
的形式访问
Ø网络设备通过SOCKET来访问
v应用程序通过proc文件节点可以查
询设备驱动的信息
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 驱动程序在哪儿
v驱动程序位于内核源代码的drivers
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
下,按照层次结构分门别类放
置
v驱动程序占kernel源代码超过50%。
v开发完毕的驱动程序,放置在
/lib/modules/kernel-version里
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 嵌入式Linux驱动程序特点
v嵌入式Linux驱动程序需求多样
Ø嵌入式设备硬件各异
Ø嵌入式处理器往往资源有限,比如处理速度、
存储器容量、总线带宽、电池容量等
v开发团队面临上市时间的压力
v开发驱动程序需要专业知识,包括
硬件和软件的
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 典型的嵌入式设备框图
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 典型的嵌入式设备框图
vIntel PXA
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 嵌入式Linux驱动程序特点(2)
v嵌入式系统硬件还在不停的更新进
步
v国际上嵌入式芯片提供商如intel,
samsung,freescale,TI,ST每年都
有新品推出
vLinux对于ARM,PPC/PPC64,
MIPS/MIPS64,x86都有很好的支持
v芯片花样繁多的功能总是需要相应
的驱动程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序开发流程
v熟悉设备的特性
v确定设备驱动程序是哪一类
v编写测试用例
v搜集可重用的代码
v编写自己的驱动程序代码
v调试、编码、测试
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序的开发环境
v本机编译调试
Ø开发环境配置简单
Ø无需网络环境
Ø适用于配置较高的x86机器
v主机+目标机
Ø主机可以自由选择Linux或Windows+Cygwin
Ø主机和目标机通过网络共享文件系统
Ø内核崩溃不会影响主机
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序的开发环境
v主机+目标机环境包括
Ø主机运行的工具链∶cross gcc + glibc + gdb,
如果是windows主机还要有cygwin仿真环境
Ø主机运行远程服务,常用的有tftp用来传送内
核映像、initrd,nfs用来共享文件系统
Ø目标机运行ssh或telnet等远程登陆服务,用来
调试驱动程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序加载方式
v驱动程序直接编译入内核
Ø驱动程序在内核启动时就已经在内存中
Ø可以保留专用存储器空间
v驱动程序以模块形式存储在文件系
统里,需要时动态载入内核
Ø驱动程序按需加载,不用时节省内存
Ø驱动程序相对独立于内核,升级灵活
Ø授权方式灵活
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序模块加载
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 高效的嵌入式驱动程序开发
v嵌入式开发一般采用主机/目标机交
叉开发环境
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 交叉编译开发循环
1. 移植/编写驱动程序
2. 编译驱动程序
Ø C语言文法级调整
3. 加载驱动程序
4. 软硬件协同调试
5. 卸载驱动程序
6. 重新修改代码,重复2
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 交叉编译开发流程图
v开发/调试反复消耗大量
开发时间
v驱动程序提供多种灵活方
式来减少反复
Ø 减少反复次数
Ø 减少每次反复消耗的时间
v驱动程序可以采用以下技
巧
Ø 用参数来改变配置
Ø 用proc文件系统
Ø 采用debug ioctl
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 源代码级调试工具
vGdb调试kcore
v可以用来查看内核变量,堆栈,调
用
v使用add-symbol-file命令可以加入驱
动模块的符号
v无法停止执行
v无法断点
v无法修改
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 交叉调试工具kgdb
vKgdb分为两部分
Ø在开发主机上运行gdb
Ø在目标内核上加入kgdb支持
vGdb处理内核与驱动程序源代码,并
且将符号和源代码关联起来
vKgdb stub负责断点处理等调试控制
v除了kgdb自己,内核当中所有的部
分都可以调试(包括模块式的驱动
程序)
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 固件调试
v调试固件redboot可以用来和gdb配合
使用,调试gcc产生的任何程序(包
括内核)
vRedboot类似于kgdb,提供gdb stub
v适用于调试
Ø各种操作系统
Ø驱动
ØBootloader
Ø不包含操作系统的简单应用程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 调试内核oops信息
v内核出现错误大多数情况下都会打
印出oops信息
v包含pc指针信息,寄存器,堆栈指
针等
v通过向回跟踪可以发现产生问题的
调用
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序工程师的作用
v建立嵌入式Linux平台,移植和编写
驱动程序往往是最具挑战的工作
v驱动程序的开发周期一般较长,对
产品的面世时间有着重要影响
v驱动程序质量的好坏,直接关系到
系统工作效能和稳定性,对项目的
成败起着关键作用
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 典型的嵌入式设备存储器映射
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序工程师的职责
v分离硬件相关和硬件无关的代码
v划分驱动程序的抽象层次
v规定驱动程序行为
Ø设备驱动程序之间的交互操作
Ø设备驱动程序给用户提供的接口行为
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序工程师的职责
v移植驱动程序到新的平台
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动程序可利用资源
v互联网上很多驱动程序资源
vwww.kernel.org
vwww.linuxdevice.org
vsourceforge.net
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 GPL对驱动程序开发的影响
v实现非GPL授权的方法——模块形
式动态加载
v驱动程序可以以私有产权形式进行
商业授权
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动开发理论课程内容
v Linux设备驱动和内核概论
v 设备驱动程序工作流程
v 字符设备驱动程序
v 块设备驱动程序
v Proc文件系统
v 文件系统驱动程序
v Framebuffer驱动程序
v Usb设备驱动程序
v 网络设备驱动程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质 Linux驱动开发实验课程内容
v 使用gnu开发编译环境
v 熟悉驱动程序加载到内核中的方式
v 数码管的字符驱动程序
v 键盘驱动程序
v A/D,D/A驱动
v Usb Mass Storage驱动
v Video4Linux驱动
v Framebuffer驱动
v 文件系统驱动
v 以太网卡驱动
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.com.cn
远见品质
让我们一起讨论!
PDF 文件使用 "pdfFactory Pro" 试用版本创建 ā www.fineprint.com.cn
www.farsight.com.cn
谢谢!
成功之路
PDF 文件使用 "pdfFactory Pro" 试用版本创建 Ì ÿ www.fineprint.com.cn