深度探索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)