1. 嵌入式linux设备驱动开发详解 电子书
我有书,要么?太大了,邮箱发布过去。QQ联系我,我发给你。 379165820
2. 嵌入式驱动开发需要了解的知识大概有哪些呢
嵌入式驱动以及嵌入式Linux内核开发主要用的都是C语言,JAVA是基于上层开发的语言,而C是基于底层驱动开发的。所以如果想要做好嵌入式驱动开发主要是要把C语言基础打好,这样对以后的发展会有很大帮助的。再则需要了解一点硬件方面的知识,例如单击片或者开发板和开发软件工具使用。下面就由福州卓跃教育具体介绍如何学习嵌入式驱动。
如何开始学习嵌入式驱动开发? 是每个想学习嵌入式驱动开发初学者的第一个问号.由于嵌入式开发较上层类软件开发的特殊性,如果没有相应的仪器设备及一个很好的环境,对初学者来说简直就是梦魇,如果没有相应的指导,可能就要多摔几个跟头和多消耗一些脑细胞,因为驱动开发不像上层类的开发那么直观,写个程序就可以在PC机上直接查看了,驱动开发只有烧到板子上才能验证。
嵌入式驱动开发需要了解的知识大概有以下几类:
1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具体位置与构建驱动程序的主要事项
2 总线知识,比如PCI、USB总线。
3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理
4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识
5 C++基本用不上,主要是C和汇编。
6 做驱动最好要懂内核调试(比如说linux)
另外嵌入式开发涉及的知识面还是非常多的,包括选型的CPU类型和他的体系结构,CPU上提供的外围接口,以及为某个特殊功能而加入的外围设备.这些是一个合格嵌入式开发人员需要掌握的最基本的知识。
对我们作为嵌入式开发提出了更高的要求,重要的一点是嵌入式开发多是看不到摸不着的东西,相对来说非常的抽象,所以这时候就要借助一些测量设备来协助我们,比如基础的万用表,示波器,电流计,频率计,Trace32等甚至一些为方便开发自己做的一些小工具,当然不限于硬件和软件的.
3. 《嵌入式设计及Linux驱动开发指南:基于ARM9处理器》电子书,随书光盘[光盘镜像]
嵌入式设计及linux驱动开发指南——基于ARM9处理器http://download.csdn.net/detail/luomeigang/3585628
4. 嵌入式Linux设备驱动开发详解的目录
第1章嵌入式系统与驱动程序1
本章目标1
1.1嵌入式系统概述1
1.1.1嵌入式系统的概念1
1.1.2嵌入式系统的特点2
1.1.3嵌入式系统的体系结构2
1.2嵌入式处理器介绍4
1.2.1嵌入式处理器分类4
1.2.2ARM概述5
1.2.3ARM系列芯片简介5
1.3嵌入式操作系统介绍7
1.3.1主流嵌入式操作系统7
1.3.2嵌入式系统的发展状况8
1.3.3嵌入式Linux介绍8
1.3.4嵌入式系统开发环境的建立9
1.3.5嵌入式软件开发10
1.4嵌入式Linux驱动程序12
1.4.1嵌入式Linux的内核空间和用户空间12
1.4.2嵌入式Linux的文件系统12
1.4.3嵌入式Linux的设备管理14
1.4.4嵌入式Linux的驱动程序16
1.5知识索引20
1.6思考与练习21
第2章简单的字符设备驱动程序23
本章目标23
2.1嵌入式Linux字符设备的驱动程序结构23
2.1.1嵌入式Linux驱动程序常用的头文件24
2.1.2File_operations结构体24
2.1.3字符设备驱动程序的入口25
2.1.4驱动程序的设备注册26
2.2设备驱动程序中的具体问题27
2.2.1I/O端口28
2.2.2内存操作29
2.2.3中断处理29
2.3LED的驱动程序实例及测试30
2.3.1LED I/O端口设置30
2.3.2LED硬件电路设计32
2.3.3LED驱动程序设计33
2.3.4LED测试程序设计36
2.4嵌入式Linux中断处理驱动程序及测试37
2.4.1中断处理过程37
2.4.2中断向量表39
2.4.3中断的处理模式39
2.4.4中断的优先级40
2.4.5中断的嵌套40
2.4.6中断源的扩展40
2.4.7中断控制寄存器的设置41
2.5按键中断的驱动程序实例45
2.5.1按键中断的电路设计45
2.5.2按键中断的驱动程序设计45
2.6知识索引48
2.7思考与练习49
第3章数字显示驱动程序50
本章目标50
3.1数字显示器50
3.1.1数码管简介50
3.1.2数码管的分类51
3.1.3数码管显示原理51
3.2数码管显示电路的硬件设计52
3.2.1译码器的使用52
3.2.2数码管的驱动方式53
3.2.3串/并变换的译码设计55
3.3数码管驱动程序实例56
3.3.1驱动程序的初始化和卸载模块56
3.3.2文件操作结构模块57
3.3.3数码管的打开模块57
3.3.4数码管的读写模块58
3.3.5数码管的I/O控制模块58
3.3.6数码管的退出模块58
3.3.7驱动程序的模块加载和卸载59
3.4数码管显示电路测试程序设计60
3.4.1数码管测试设计60
3.4.2数码管测试程序60
3.4.3数码管测试效果61
3.5知识索引61
3.6思考与练习62
第4章键盘驱动程序63
本章目标63
4.1键盘接口概述63
4.1.1键盘的分类63
4.1.2键盘的防抖65
4.1.3键盘的扫描65
4.1.4键盘的缓冲算法67
4.2键盘的驱动设计实例67
4.2.1锁存器和缓冲器扩展键盘67
4.2.2锁存器和缓冲器的接口68
4.2.3锁存器和缓冲器扩展键盘驱动程序设计69
4.2.4锁存器和缓冲器扩展键盘测试程序设计71
4.3智能控制芯片HD7279扩展键盘72
4.3.1HD7279的电路设计72
4.3.2HD7279的指令介绍73
4.3.3HD7279的串行接口74
4.3.4HD7279的驱动程序设计75
4.3.5HD7279的测试程序设计84
4.4知识索引85
4.5思考与练习85
第5章A/D驱动程序86
本章目标86
5.1A/D转换的过程86
5.1.1采样和保持86
5.1.2量化和编码88
5.1.3ADC的分类89
5.2A/D转换器的基本原理89
5.2.1逐次逼近型A/D转换器89
5.2.2双积分型A/D转换器90
5.2.3V/F和F/V型转换器93
5.2.4其他A/D转换器95
5.3A/D转换器接口技术97
5.3.1ADC的主要参数及意义97
5.3.2ADC的电路选择方法98
5.3.3ADC实际应用中的问题99
5.4S3C2410 A/D转换驱动设计实例99
5.4.1S3C2410的A/D转换电路99
5.4.2S3C2410X的A/D转换控制寄存器100
5.4.3S3C2410X的A/D转换数据寄存器101
5.4.4S3C2410X中A/D转换驱动程序的设计102
5.4.5S3C2410X中A/D转换测试程序的设计105
5.5知识索引106
5.6思考与练习107
第6章D/A驱动程序108
本章目标108
6.1D/A的原理介绍108
6.1.1D/A转换的概念及基本原理108
6.1.2电子模拟开关109
6.1.3D/A转换器的基本结构110
6.1.4D/A转换的静态参数114
6.1.5D/A转换的动态参数115
6.2D/A转换的硬件电路设计116
6.2.1D/A转换的接口技术116
6.2.2D/A转换芯片介绍117
6.2.3D/A转换的电路设计118
6.3D/A转换器的驱动程序实例118
6.3.1D/A驱动程序中的宏定义118
6.3.2D/A的模块加载118
6.3.3D/A转换器的文件操作模块119
6.3.4D/A转换器的读写控制模块120
6.3.5D/A转换器的打开、退出模块120
6.4测试程序的设计120
6.4.1D/A测试程序中的宏定义121
6.4.2D/A测试程序的主函数121
6.4.3D/A测试程序中的功能函数122
6.4.4D/A测试程序中的功能打印函数123
6.4.5D/A测试程序中的波形生成函数123
6.4.6D/A测试程序的效果124
6.5知识索引125
6.6思考与练习125
第7章LCD驱动程序126
本章目标126
7.1LCD显示器概述126
7.1.1液晶126
7.1.2LCD显示屏的背光127
7.1.3LCD显示器的分类127
7.1.4LCD的显示原理127
7.1.5LCD的驱动方式130
7.1.6LCD的常用指标131
7.2LCD的显示接口131
7.2.1灰度STN的时序132
7.2.2彩色STN的时序133
7.2.3TFT的时序134
7.3嵌入式处理器的LCD控制器136
7.3.1LCD控制器136
7.3.2LCD控制器的设置137
7.3.3LCD的字符显示缓存139
7.4LCD的驱动程序设计140
7.4.1LCD驱动程序相关的宏定义140
7.4.2LCD驱动程序的底层操作函数142
7.4.3LCD驱动程序提供的API145
7.4.4LCD驱动程序的模块化加载151
7.4.5LCD的测试程序152
7.5基于Framebuffer的LCD驱动程序实例155
7.5.1Framebuffer概述155
7.5.2LCD的电路连接155
7.5.3Framebuffer设备驱动程序的结构156
7.5.4Framebuffer设备驱动程序的设计159
7.5.5Framebuffer设备测试程序的设计164
7.5.6嵌入式Linux常用的GUI166
7.6知识索引166
7.7思考与练习167
第8章触摸屏驱动程序168
本章目标168
8.1触摸屏概述168
8.2触摸屏的分类168
8.2.1电阻技术触摸屏168
8.2.2表面声波技术触摸屏169
8.2.3电容电感技术触摸屏170
8.2.4红外线技术触摸屏170
8.3触摸屏的特性171
8.3.1透明度和色彩失真171
8.3.2反光性171
8.3.3清晰度171
8.3.4漂移172
8.3.5检测和定位172
8.4触摸屏的硬件电路设计172
8.4.1电阻式触摸屏的电路原理172
8.4.2电阻式触摸屏原点的定位173
8.4.3电阻式触摸屏的电路连接174
8.5触摸屏的驱动程序实例176
8.5.1触摸屏接口的模式176
8.5.2A/D转换和触摸屏寄存器的设置177
8.5.3触摸屏的坐标179
8.5.4触摸屏的电路连接180
8.5.5触摸屏的驱动程序接口181
8.6测试程序的设计182
8.6.1触摸屏的数据定义183
8.6.2触摸屏的数据处理183
8.6.3触摸屏的运行测试185
8.7知识索引186
8.8思考与练习187
第9章CAN总线驱动程序188
本章目标188
9.1CAN总线接口设计188
9.1.1CAN总线概述188
9.1.2CAN的工作特点及主要优点189
9.1.3CAN总线的电气特征和MAC帧结构189
9.2嵌入式处理器上CAN总线接口的扩展190
9.2.1SJA1000简介190
9.2.2SJA1000扩展191
9.3SJA1000扩展CAN总线接口的设计192
9.3.1CAN 控制器SJA1000的操作模式192
9.3.2CAN控制器SJA1000的特征功能193
9.3.3CAN 控制器SJA1000的Basic CAN模式设置194
9.4SJA1000扩展CAN总线接口的通信196
9.4.1通过CAN总线建立通信的步骤196
9.4.2SJA1000的初始化196
9.4.3驱动程序的结构设计198
9.4.4驱动程序init、exit、open、close函数的实现200
9.4.5驱动程序read、write函数的实现201
9.4.6驱动程序interrupt、ioctl函数实现202
9.4.7测试程序的编写202
9.5驱动程序的加载204
9.6知识索引204
9.7思考与练习205
第10章IIC总线驱动程序206
本章目标206
10.1IIC总线概述206
10.1.1IIC总线介绍206
10.1.2IIC总线引入的原因206
10.1.3IIC总线的特点206
10.1.4IIC总线的基本结构207
10.1.5IIC总线的术语207
10.1.6IIC总线的工作208
10.1.7IIC总线的竞争仲裁209
10.1.8IIC总线的工作流程210
10.2嵌入式处理器的IIC接口211
10.2.1IIC总线控制寄存器212
10.2.2IIC总线控制/状态寄存器213
10.2.3IIC总线地址寄存器214
10.2.4IIC总线移位数据寄存器214
10.2.5S3C2410中与IIC对应的I/O端口215
10.3基于IIC的键盘芯片应用216
10.3.1ZLG7290的功能217
10.3.2ZLG7290的控制方式218
10.3.3ZLG7290的寄存器218
10.3.4ZLG7290的通信接口219
10.3.5ZLG7290的指令介绍219
10.4IIC总线驱动程序实例221
10.4.1ZLG7290的电路连接221
10.4.2ZLG7290的通信流程223
10.4.3ZLG7290驱动中变量的定义225
10.4.4ZLG7290驱动中实时时钟的改变226
10.4.5ZLG7290和IIC寄存器的初始化227
10.4.6ZLG7290驱动程序的模块化228
10.4.7ZLG7290的文件操作结构228
10.5IIC总线的测试程序230
10.6知识索引231
10.7思考与练习231
第11章音频总线驱动程序232
本章目标232
11.1音频总线接口概述232
11.1.1音频的采样精度233
11.1.2音频编码233
11.2IIS音频总线接口233
11.2.1IIS总线的物理连接233
11.2.2IIS的总线协议234
11.2.3IIS总线的硬件设计235
11.2.4IIS总线的寄存器236
11.3AC97音频总线接口239
11.4IIS总线的驱动程序设计240
11.4.1音频设备基础知识240
11.4.2音频设备文件241
11.4.3WAV声音文件243
11.4.4音频设备和驱动程序的通信243
11.4.5设备的初始化和加载244
11.4.6DMA的操作和宏定义246
11.4.7audio设备文件的操作248
11.4.8mixer设备文件的操作260
11.5音频驱动程序的测试262
11.6知识索引262
11.7思考与练习263
第12章IDE接口驱动程序264
本章目标264
12.1IDE接口概述264
12.1.1硬盘知识介绍264
12.1.2IDE接口标准267
12.1.3IDE接口的传输模式269
12.1.4IDE接口寄存器269
12.2IDE接口驱动程序的移植271
12.2.1嵌入式Linux下IDE驱动程序接口271
12.2.2嵌入式Linux下IDE驱动程序272
12.2.3IDE硬盘的读/写操作274
12.3IDE驱动程序测试282
12.3.1磁盘文件系统简介283
12.3.2IDE分区测试283
12.4知识索引285
12.5思考与练习285
第13章闪存芯片的驱动程序286
本章目标286
13.1闪存芯片概述286
13.1.1闪存芯片的物理特性286
13.1.2嵌入式文件系统概述289
13.1.3MTD体系介绍289
13.1.4Flash专有名词291
13.2NAND Flash291
13.2.1NAND Flash的结构291
13.2.2NAND Flash的操作292
13.2.3NAND Flash控制器294
13.2.4NAND Flash的时序296
13.2.5NAND Flash的驱动程序实例297
13.3NOR Flash301
13.3.1NOR Flash的结构301
13.3.2NOR Flash的操作302
13.3.3NOR Flash的驱动程序实例303
13.4基于闪存的文件系统307
13.5知识索引309
13.6思考与练习310
第14章USB 设备驱动程序311
本章目标311
14.1USB接口概述311
14.1.1USB系统311
14.1.2USB的电气特性312
14.1.3USB总线的拓扑结构313
14.1.4USB的通信协议313
14.2嵌入式系统中USB的使用315
14.2.1OHCI概述315
14.2.2Host接口硬件设计316
14.3嵌入式系统中USB设备的驱动程序设计316
14.3.1
5. 关于嵌入式驱动开发的问题
目前没有这个“嵌入式驱动“专业方向。
“驱动“,实际上就是写代码,与“应用“没有本质区别。
驱动也分很多类型,比如偏向于硬件的BSP,偏向于os的中间层设计,偏向于跨平台系统的适配层设计,偏向于应用的接口实现部分。此外还有微电子专业,比如将协议栈实现在一个芯片上,或者定制某种功能的处理器,这算是芯片设计范畴了,但也是一种驱动嘛。总的来说,驱动还是跟硬件打交道多些,但是最终都离不开软件的设计和使用,也就是说最后都是要写代码的。
所以你如果对硬件比较感兴趣,比如电路设计,电磁兼容设计,PCB设计,射频设计甚至芯片设计等等,可以攻读一个偏向电子类的方向。如果对代码或者软件架构之类比较感兴趣,可以攻读一个偏向计算机软件设计的方向。他们都跟“嵌入式驱动“沾边。
此外诸如自动化/通信/应用数学等等,都符合你所感兴趣的专业方向,甚至只要跟写代码有关的,都可以算在其中。这里说到的应用数学,虽然是个“数学“专业,但是在人工智能,自动化控制算法设计等等领域,都有非常对口的应用领域。而这些算法的设计与实现,必须写代码!
所以个人看法是,专业方向,大类选好就可以了,当然专业对口是最好的。实在选不好,考一个计算机软件设计或者计算机操作系统肯定没问题了。其实更重要的还是选个好导师,考个好学校!
未来的工作,看重的是你的实践经验,实际处理问题的能力。在同样都是应届毕业生的条件下,项目多,论文多的好导师,以及一个年头老,牌子硬的好学校,无疑会给你带来相当分量的加分。
6. 嵌入式驱动开发要具备哪些方面的知识
嵌入式驱动开发需要了解的知识大概有以下几类:
1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具体位置与构建驱动程序的主要事项
2 总线知识,比如PCI、USB总线。
3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理
4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识
5 C++基本用不上,主要是C和汇编。
6 做驱动最好要懂内核调试(比如说linux)
7. 嵌入式驱动开发的基本流程
驱动一般过程是这样的:
首先了解你需要做的驱动的设备的规格,详细看看手册
了解设备的使用方法,通常厂家会提供一个测试的驱动程序源代码,
在你所移植的系统上编译驱动程序源代码,按照手册进行测试
然后再根据自己的需要修改相关代码
8. 学习嵌入式驱动前需要掌握哪些知识
嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,冬雪终将化去,春风定会吹来。
具体步骤如下:
1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译 机械工业出版社
你能区分开指针数组和数组指针吗?你知道函数指针吗?
你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?
2、《数据结构》C语言版 黄国愉、叶乃青编 清华大学出版社
你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?
3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline着
此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。
4、学习单片机,最好能找个前辈带一带。
你能用51单片机做出一样实际的东西吗?即使它再简单!
要注意加深对中断的理解。
5、学习ARM单片机。
(1)、细读《ARM微控制器基础与实战》周立工编写(注:即使你不用书中的开发板)
(2)、细读相关芯片的原版英文文档。如:arm920TE.pdf S3C2410_1.2.pdf
6、学习uCOS!!操作系统。
(1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译
你能把uCOS!!移植到自己的平台上吗?
(2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序
7、熟悉Linux环境,学习Linux环境编程,学习交叉编程
(1)、细读《linux命令大全.pdf》
(2)、细读《GNU Make 使用手册(中译版).pdf》
(3)、学习创建交叉编程环境.
8、学习Linux操作系统。
(1)、《UNIX环境高级编程》
(2)、细读“joyfire 笔记”,可在“www.qianrushi.com”网站的好书下载栏目获取
(3)、细读《linux内核完全注释》
(4)、细读《understanding the linux kernel 2》
(5)、利用源代码阅读利器工具”Source Insight”进行真正的linux内核原码刨析
(6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序
9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》
9. 嵌入式驱动开发要会哪三样嵌入式基础
本质来讲,ios开发和android开发的根基还是嵌入式开发,而在嵌入式开发中驱动开发占有不可磨灭的地位,那么嵌入式驱动开发究竟应该具备什么样的基础知识呢?
硬件知识
其实说白了就是写程序时调用硬件的功能是按照我们的逻辑来完成我们的要求,既然是与硬件打交道,那就应该熟练掌握硬件知识,如果你是电子专业的学生,那么这点要求对你来讲 就很微不足道了吧,因为你已将掌握了写驱动的必要条件之一,驱动是软硬相结合的,那么在调试驱动的时候就需要我们通过调试硬件来完成驱动的功能。
c语言
c语言也被称为是上帝的语言,那么在嵌入式驱动当中是使用最广泛的语言开发,此外也有用汇编来开发驱动程序,但其效率可能稍微差点,从当前实际工作环境中看,我们现在开发驱动程序用的醉倒的就是c语言,那么对于计算机专业的人来讲,大部分人的第一种编程语言就是c语言,所以这门学科对于我们来讲并不是什么难事。
操作系统知识
驱动分为两种,一种是没有操作系统的驱动程序,也就是直接用c语言来对硬件进行编程,那么另外一种就是有操作系统的驱动程序,需要集合操作系统的接口来编写驱动程序才可正常使用,当然在两种模式中,使用最多且就业需求最多的就是第二种有操作系统的驱动程序,所以想要写驱动程序首先需要掌握操作系统的相关知识,而嵌入式的驱动程序大多是用linux系统,所以应该熟练掌握linux操作系统是成为开发嵌入式驱动的必要条件,但切记不是唯一的条件,因为还有wince等其他操作系统。
更多的基础知识可以查看华清远见嵌入式学院》
原文章http://www.embe.org/xuexi/guides/2960.html
10. 嵌入式Linux设备驱动开发详解的编辑推荐
本书特色:本书系统地介绍了嵌入式Linux设备驱动开发的相关知识和实例,主要包括:
数码管驱动程序;键盘驱动程序;A/D、D/A驱动程序;LCD驱动程序;触摸屏驱动程序;CAN总线驱动程序;I2C总线驱动程序;音频总线驱动程序;IDE驱动程序;NAND Flash和NOR Flash驱动程序;USB设备驱动程序;串口驱动程序;网络设备驱动程序。
实例丰富、讲解细致、代码分析详尽,嵌入式Linux设备驱动开发的理想参考用书。