参考了 《linux驱动开发详解》3.4章节,实现建立自己驱动目录
参考 TQ移植手册 实现 hello world 驱动实现
目标内核:2.6.33
一. 建立自己的驱动目录 在 drivers 下,建立自己的驱动目录 ywx-driver
1. 在 driver下,建立自己目录 ywx-driver- root@yuweixian:/opt/me_linux/linux-2.6.33/drivers#mkdir ywx-driver
2.复制 driver/char 目录下 Kconfig Makefile 到 driver/ywx-dirver/
3.修改 driver/ywx-driver/ Kconfig Makefile
修改 ywx-driver/Kconfig ,我们添加了 hello world 驱动程序
- #
-
# ywx device configuration
-
#
-
-
menu "ywx-driver "
-
comment "ywx-driver "
-
-
config HELLO
-
tristate "hello world programming "
-
help
-
this is hello test programming
-
-
endmenu
修改 ywx-driver/Makefile,添加 helloworld 驱动程序
- #
-
# Makefile for the kernel character device drivers.
-
#
-
-
#
-
# This file contains the font map for the default (hardware) font
-
#
-
FONTMAPFILE = cp437.uni
-
-
obj-$(CONFIG_HELLO) += hello.o
4. 修改 drivers/Kconfig Makefile
修改 drivers/Kconfig
- source "drivers/char/Kconfig"
-
-
source "drivers/ywx-driver/Kconfig" ###添加 自己的目录
-
-
source "drivers/i2c/Kconfig"
修改 drivers/Makefile- obj-y += char/
-
-
obj-y += ywx-driver/ ###添加自己的目录
5.make menuconfig 显示 如下
二、hello world 驱动程序 实现 1. 在 drivers/ywx-driver/ 建立- gedit drivers/ywx-driver/hello.c
- #include <linux/module.h>
-
#include <linux/kernel.h>
-
-
MODULE_LICENSE("GPL");
-
-
static int __init hello_init(void)
-
{
-
-
printk("<1>\n Hello,linux!\n");
-
printk(KERN_INFO,"Hello,arm!\n");
-
printk("<1>\nThis is first driver program.\n\n");
-
-
return 0;
-
}
-
-
static void __exit hello_exit(void)
-
{
-
printk("<1>\n Exit!\n");
-
printk("<1>\nGoodbye Linux!\n\n");
-
}
-
-
module_init(hello_init);
-
module_exit(hello_exit);
-
-
MODULE_LICENSE("GPL");
2. 在 drivers/ywx-driver/Kconfig Makefile 添加 helloworld
在 实现驱动目录时,我们已经添加了helloworld 支持了
3. 在 2.6.33 目录下 - make zImage #产生 内核镜像文件
-
-
make SUBDIR=drivers/ywx-driver/ modules 生成 hello.ko 驱动文件
4. 在开发板上进行操作了- #cd /lib/
-
#mkdir modules
-
#uname -a
- #2.6.33-yuweixian 显示
- 所以,建立
- #mkdir 2.6.33-yuweixian
5.我们复制 hello.ko 文件到 /lib/modules/2.6.33-yuweixian/
可以参考:http://blog.chinaunix.net/space.php?uid=22666248&do=blog&id=263346 6. insmod ./hello.ko - [root@yuweixian 2.6.33-yuweixian]# insmod ./hello.ko
-
-
Hello,
-
-
This is first driver program.
-
-
[root@yuweixian 2.6.33-yuweixian]#
7.删除 .ko- [root@yuweixian 2.6.33-yuweixian]# lsmod
-
hello 645 0 - Live 0xbf000000
-
[root@yuweixian 2.6.33-yuweixian]# rmmod hello
-
Exit!
Goodbye Linux!
-
[root@yuweixian 2.6.33-yuweixian]#
阅读(1544) | 评论(0) | 转发(0) |