摘要 | 第3-4页 |
Abstract | 第4页 |
第一章 绪论 | 第8-12页 |
1.1 课题背景 | 第8-9页 |
1.1.1 国内外研究现状 | 第8-9页 |
1.1.2 课题来源与本人主要工作 | 第9页 |
1.2 论文主要内容及章节安排 | 第9-10页 |
1.3 小结 | 第10-12页 |
第二章 Linux设备驱动模型 | 第12-28页 |
2.1 sysfs文件系统 | 第12-15页 |
2.1.1 sysfs文件系统介绍 | 第12-13页 |
2.1.2 kobject和kset | 第13-15页 |
2.2 I2C驱动体系结构 | 第15-18页 |
2.2.1 I2C驱动体系结构介绍 | 第15-16页 |
2.2.2 I2C设备注册 | 第16-17页 |
2.2.3 I2C驱动注册 | 第17-18页 |
2.3 输入子系统结构 | 第18-26页 |
2.3.1 Linux输入子系统介绍 | 第18-19页 |
2.3.2 输入设备的注册 | 第19-20页 |
2.3.3 输入设备的打开过程 | 第20-23页 |
2.3.4 输入设备的消息上报过程 | 第23-25页 |
2.3.5 用户层获取事件的过程 | 第25-26页 |
2.4 小结 | 第26-28页 |
第三章 Android传感器模块架构 | 第28-40页 |
3.1 Binder进程间通信机制 | 第28-34页 |
3.1.1 Binder驱动 | 第28-32页 |
3.1.2 注册Binder上下文管理者 | 第32-33页 |
3.1.3 Service Manager代理对象的获取 | 第33-34页 |
3.2 传感器服务 | 第34-36页 |
3.2.1 传感器服务进程启动 | 第34-35页 |
3.2.2 SensorService的初始化 | 第35-36页 |
3.3 传感器数据获取流程 | 第36-38页 |
3.3.1 SensorBase类与Linux内核的交互 | 第36-37页 |
3.3.2 传感器服务端获取数据过程 | 第37页 |
3.3.3 客户端数据读取 | 第37-38页 |
3.4 小结 | 第38-40页 |
第四章 Linux内核驱动实现 | 第40-62页 |
4.1 L3GD20介绍 | 第40-42页 |
4.1.1 L3GD20寄存器介绍 | 第40-41页 |
4.1.2 L3GD20 I2C总线操作 | 第41-42页 |
4.2 L3GD20驱动设计 | 第42-51页 |
4.2.1 驱动与设备匹配 | 第42-44页 |
4.2.2 注册输入设备 | 第44-45页 |
4.2.3 创建属性文件 | 第45-47页 |
4.2.4 I2C读写函数设计 | 第47-48页 |
4.2.5 轮询模式设计 | 第48-51页 |
4.3 编译内核 | 第51-54页 |
4.3.1 安装交叉编译环境 | 第51-53页 |
4.3.2 编译u-boot | 第53页 |
4.3.4 编译Linux内核和生成文件系统映像 | 第53-54页 |
4.4 烧写和运行映像文件 | 第54-56页 |
4.4.1 硬件连接 | 第54页 |
4.4.2 烧写和运行映像文件 | 第54-56页 |
4.5 Linux下驱动测试 | 第56-60页 |
4.5.1 驱动生成的设备属性文件 | 第56-57页 |
4.5.2 编写测试程序 | 第57-58页 |
4.5.3 运行测试程序 | 第58-60页 |
4.6 小结 | 第60-62页 |
第五章 Android层实现 | 第62-76页 |
5.1 HAL层代码分析 | 第62-66页 |
5.1.1 HAL定义数据实现 | 第62-64页 |
5.1.2 SensorBase类研究 | 第64-65页 |
5.1.3 InputEventCircularReader类研究 | 第65-66页 |
5.2 GyroSensor类设计 | 第66-68页 |
5.3 编译和运行 | 第68-71页 |
5.3.1 编译uboot image | 第68页 |
5.3.2 编译Android系统 | 第68-69页 |
5.3.3 下载系统映像 | 第69页 |
5.3.4 运行Android系统 | 第69-71页 |
5.4 Android下驱动测试 | 第71-73页 |
5.4.1 设备属性文件及路径验证 | 第71-73页 |
5.5 小结 | 第73-76页 |
第六章 结束语 | 第76-78页 |
6.1 总结 | 第76-77页 |
6.2 展望 | 第77-78页 |
致谢 | 第78-80页 |
参考文献 | 第80-84页 |
附录 | 第84-85页 |