深度探索android第七章

LED 驱动是本书第一个真正和硬件打交道的Linux 驱动。虽然LED 驱动并不复杂,只是控制

了4 个LED,"但LED 驱动已经包括了Linux 驱动所有必要的部分 一个完整的Linux 驱动主要由

内部处理和与硬件交互降部分组成。其中内部处理主要是指Linux 驱动的装载、卸载、与设备文件

相关的动作处理(读写设备文件、向设备文件发送νo 命令等动作〉以及业务逻辑等。与硬件交互

主要是指通过i owrite32 、. ioread32 等函数与硬件中的寄存器进行数据交互。-Linux 驱动在不同平台

的移植也是处理这两部分。如果在不同Lin肌肉核版本之间的移植,主要是移植第1 部分( Linux

驱动的内部处理, γ般Linux 内核版本相差较大时, Linu叉’ 内核的APl 会有很大差别〉,如果在不

同硬件平台(如7.4 节介绍的在不同开发板之间的移植〉的移植,主要是移植第2部分。当然, 在

一些情况不, Linux 驱动的移植基本上相当于重新编写一遍Linux 驱动,在这种情况下,就要更好

地了解Linux 驱动的高级技术.

创建LED驱动的设备文件的步骤:

1、使用cdev_init函数初始化cdev

2、指定设备号

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

4、使用class_create宏创建struct class

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

卸载LED驱动的设备文件:

       void device_destory(sruct class *class,dev_t devt)

       void clss_dsetroy(struct class *class)

       void unregister_chrdex_region(dev_t from,unsigned count)

原文地址:https://www.cnblogs.com/maoyuan/p/5561347.html