Android深度探索(卷1)HAL与驱动开发 第七章读书心得

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android深度探索(卷1)HAL与驱动开发 第七章读书心得相关的知识,希望对你有一定的参考价值。

Linux驱动是与I/O内存进行交互,所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。Linux内核提供了多个与I/O内存交互的函数,Linux内核的内存管理模块负责同步I/O内存与硬件中的数据。

一:首先创建led驱动的设备文件

 

1.使用cdev_init函数初始化cdev

 

2.指定设备号

 

3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中

 

4.使用class_create宏创建struct_class

 

5.使用device_create函数创建设备文件

 

二:卸载LED驱动的设备文件

 

三:设置寄存器与初始化LED驱动

 

四:控制LED(及所谓的代码编写——linuxC语言)

 

详细流程如下:

 

1.编写ioctl接口函数

 

2.填充file_operations结构,主要是将ioctl函数注册进去

 

3.填充miscdevice结构,主要是次设备号、fops和设备名称。

 

4.编写要提供给module_init宏使用的初始化代码,设置LED端口为输出,注册到内核

 

5.编写要提供给module_exit宏使用的注销代码,主要是注销掉初始化中注册到内核的miscdevice设备

 

LED驱动虽然并不复杂,只是控制了4个LED,但LED驱动已经包括了Linux驱动所必要的部分。一个完整的Linux驱动主要是由内部处理和与硬件交互两部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互通过iowrite()、ioread()等函数与硬件中的寄存器进行数据交互。

 

我的博客园地址是:http://www.cnblogs.com/zzp036/p/5449784.html

以上是关于Android深度探索(卷1)HAL与驱动开发 第七章读书心得的主要内容,如果未能解决你的问题,请参考以下文章

ANDROID深度探索(卷1)HAL与驱动开发 第六章

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数

《Android深度探索》(卷1)HAL与驱动开发读后感

Android深度探索(卷1)HAL与驱动开发学习笔记

Android深度探索(卷1)HAL与驱动开发第六章读书笔记

Android深度探索(卷1)HAL与驱动开发第十章总结