Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1579098
  • 博文数量: 239
  • 博客积分: 1760
  • 博客等级: 上尉
  • 技术积分: 1595
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-08 23:53
文章分类

全部博文(239)

文章存档

2016年(1)

2015年(28)

2014年(53)

2013年(42)

2012年(50)

2011年(65)

分类: 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

编辑器:SlickEdit
阅读(4984) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~