分类: LINUX
2011-01-19 18:14:07
在linux内核驱动树中添加自己的驱动
例如在linux-2.6.x.x/drivers/char中添加驱动目录lzp_iic
1、在linux-2.6.x.x/drivers/char目录下添加lzp_iic目录,并在lzp_iic目录添加Kconfig和Makefile
/*******************Kconfig 内容******************************************/
#
# AT24C02A device configuration
#
#用menuconfig建一个菜单项LZP_IIC,显示的字符是tristate后面跟的字符串
menuconfig LZP_IIC
tristate "lzp AT24C02A IIC EEPROM Support"
#depends on HAS_IOMEM
#depends on EXPERIMENTAL
#判断LZP_IIC菜单项是否被选中,选中则显示具体的驱动项
if LZP_IIC
#具体的驱动项LZP_AT24C02A,依赖于ARCH_S3C2440
config LZP_AT24C02A
tristate "lzp AT24C02A driver"
depends on ARCH_S3C2440
---help---
liuzhiping first linux driver for AT24C02A use iic interface.
endif # LZP_IIC
/*******************Kconfig end******************************************/
/*******************Makefile 内容******************************************/
#
# Makefile for the kernel AT24C02A iic drivers.
#
obj-$(CONFIG_LZP_AT24C02A) += lzp_iic.o
/*******************Makefile end******************************************/
2、定位到linux-2.6.x.x/drivers/char,编辑Kconfig和Makefile
/*******************Kconfig 内容******************************************/
menu "Character devices"
...
...
#添加如下命令
source "drivers/char/lzp_iic/Kconfig"
...
...
endmenu
/*******************Kconfig end******************************************/
/*******************Makefile 内容******************************************/
...
...
#在添加.o文件的部分添加如下命令
obj-$(CONFIG_LZP_IIC) += lzp_iic/
...
...
/*******************Makefile end******************************************/
3、配置编译驱动
#选中lzp_iic驱动为模块
make menuconfig
#编译lzp_iic驱动,得到lzp_iic.ko
make SUBDIR=drivers/char/lzp_iic modules
小提示:
用SlickEdit编辑代码时,要保存为如下格式
UNIX format
UTF-8 no signature
格式,否则编译会出错
4、登录开发板,测试驱动,
#加载NFS文件系统
mount -t nfs -o nolock 192.168.0.5:/ /mnt/debian
#拷贝NFS服务器上的驱动模块到开发板的/lib目录
cp /mnt/debian/home/transistor/Desktop/lzp_iic.ko /lib/
#加载驱动
insmod /lib/lzp_iic.ko
#卸载驱动
rmmod /lib/lzp_iic.ko
至此一个驱动模块就添加完成了。
系统:debian 5.0.7