Android深度探索第六章
编写Linux驱动程序的步骤
第 1 步:建立 Linu x 驱动骨架 (装载和卸载 Linu x 驱动)
第 2 步:注册和注销设备文件
第 3 步: 指定与驱动相关的信息
第 4 步:指定回调函数
第 5 步: 编写业务逻辑
第 6 步:编写 Makefile文件
第 7 步: 编译 Linux 驱动程序
第 8 步:安装和卸载 Linux 驱动
编写 Linux 驱动程序前的准备工作
本例的 Linux 驱动源代码并未与 linux 内核源代码放在一起,而是单独放在一个目录。首先使 用下面的命令建立存放 Linux 驱动程序的目录。 # mkdir -p /root/drivers/ch06/word count # cd /root/drivers/ch06/word count 然后,使用下面的命令建立驱动源代码文件(word count.c) II ech。 " > word count . c 最后编写一个 Makefile 文件, 实际上这是 6.2 节介绍的编写 Linux 驱动程序的第 6 步。 当熟悉 编写 Linux 驱动程序的步骤后可以不按 6.2 节介绍的顺序,来编写 Linux 驱动。 # echo ‘’obj-m := word_count.o’ > Makefile 其中 obj-m表示将 Linux 驱动作为模块(.ko 文件〉编译。如果使用 obj-y,则将 Linux 驱动编译 进 Linux 内核。 obj-m 或 obj-y 需要使用“:=”赋值。如果 obj-m 或 obj-y 的值为 word_count.o,表示 make 命令会把 Linux 驱动源代码目录中的 word count.c 或 word counts 文件编译成 word count.o 文 件。如果使用 obj-m, word_count.o 会被连接进 word_count.ko 文件,然后使用 insmod 或 modprobe 命令装载 word_count.ko。如柴使用 obj-y, word_count.o 会被连接进 built-in .o 文件,最终会被连接进 内核。其中 built-in.o 文件是连接向一类程序的.o 文件生成的中间目标文件。例如, 所有的字符设备 驱动程序会母终生成一个 built-in .o 文件。读者可以在<Linux 内核游代码目录〉/由ivers/char 目录找到 一个 b山lt-in.o 文件。该目标文件包含了所有可连接进 Linux 内核的字符驱动(通过 make menuconfig 命令可以配置每一个驱动及其他内核程序是否允许编译进内核,关于配置 Linux 内核的技术详见 4. 2.4 节介绍〉。 如果 Linux 驱动依赖其他程序,如 process.c、 data.Co 需要按如下方式编写 Makefile 文件。 。bj-m :• word_c。unt . 。
word_count-y : = process.o data.o
其中依赖文件要使用 module-y 或 module”objs 指定。 module 表示模块名,如 word_count .