本笔记,是介绍嵌入式linux的驱动程序模块不同于运行于用户的应用程序,现在介绍的是运行于内核态的驱动程序的编译及运行流程,不介绍如何编写。此程序的运行,基于mini2440开发板
step 1:
编写一个运行于内核的驱动程序
随便写一个最简单的程序,并命名为 amwjie72.c
_______________________________________________________________
|
| #include | #include |
| static int __init module_init(void)
| {
| printk("Hello, module is installed !
");
| return 0;
| }
|
| static void __exit module_cleanup(void)
| {
| printk("Good-bye, module was removed!
");
| }
|
| module_init(module_init);
| module_exit(module_cleanup);
| MODULE_LICENSE("GPL");
|______________________________________________________________
step 2:
把编写的 amwjie72.c 拷贝到内核根目录
/drivers/char下
step 3:
修改 char 目录下的 Kconfig 文件,使其在配置内核的时候
能进行选择。
______________________________________________________________
|
| config AMWJIE72
| tristate "first module"
| help
| for more information,please sent E-mail to
|______________________________________________________________
step 4:
回到linux内核的根目录下,执行
make menuconfig
---> Device Drivers ---> Character devices
--->first module
选为 M 后。再保存退出
【注】 此步,必须在根目录下有一个内核的配置文件.
step 5:
在linux内核根目录下,/drivers/char 打开Makefile
加入如下:
_______________________________________________________________
|
| obj-$(AMWJIE72) +=amwjie72.o
|______________________________________________________________
把内核配置信息与真正的源代码联系起来
step 6:
在内核根目录下
执行
make modules
在内核根目录下/drivers/char 下会生成amwjie72.ko模块文件
此文件,可下载到开发板上运行
【注】:1> 在修改Kconfig 文件时 AMWJIE72 可随意命名,
但要与Makefile文件里的括号内一致,以此建立联系
2> amwjie72.ko 文件下到开发板要想运行起来,还必须
要所用内核包括对该模块文件的支持,即要将内核
编译后,再下载进去。
step 7:
编译内核
在内核根目录下执行
make zImage
在内核根目录下/arch/arm/boot 下会生成zImage文件
step 8:
将 zImage 与 amwjie72.ko 拷贝到 windows 环境下
step 9:
将 开发板 置于 NOR FLASH 启动方式
进入BIOS 界面后,选择 [k] 功能,用 DNW 来传送内核(zImage)
BIOS 会自动烧写内核到Nand Flash 分区中
step 10:
用 rz 命令,并用串口发送 amwjie72.ko文件到开发板
step 11:
用 chmod 命令来改变文件权限
执行
chmod +x amwjie72.ko
step 12:
再将模块文件复制到/lib/modules/2.6.29.4-FriendlyARM目录
step 13
使用如下两个命令来装载和卸载模块
1>: modprobe amwjie72
2>: rmmod amwjie72
【注】 如上两命令,不再需要加“.ko” 尾缀了
【[注]】:
如要再修改驱动程序模块,无须再次编译内核
只要修改了驱动程序后。再重复step 6,10,11,12