JZ2440驱动编译,安装和测试

1.编译linux内核

需要的文件:
a.内核文件(例如linux-2.6.22.6.tar.bz2)
b.对应的补丁文件(例如linux-2.6.22.6_jz2440.patch)

$ tar xjf linux-2.6.22.6.tar.bz2//解压内核文件
$ cd linux-2.6.22.6
$ patch -p1 < ../linux-2.6.22.6_jz2440.patch//打补丁
$ mv ../4.3寸LCD_mach-smdk2440.c arch/arm/mach-s3c2440/mach-smdk2440.c // 替换4.3寸源码
$ cp config_ok .config
$ make uImage

完成后要记住内核文件的位置
我这里是/home/stu/JZ2440_QQ_WuLian/linux-3.4.2

编译成功后,在内核的arch/arm/boot目录下即生成uImage文件。
注意:要想“make uImage”成功,必须把编译u-boot时得到的mkimage工具复制到/usr/bin
目录下去。而mkimage工具在u-boot源码下tools目录里。

2.编译驱动

需要的文件:
a.驱动源文件(比如first_drv.c)
b.Makefile
首先修改Makefile

KERN_DIR = /work/system/linux-3.4.22

all:
    make -C $(KERN_DIR) M=`pwd` modules 

clean:
    make -C $(KERN_DIR) M=`pwd` modules clean
    rm -rf modules.order

obj-m   += first_drv.o

把第一行路径KERN_DIR = /work/system/linux-3.4.22改为你内核文件所放的位置
然后make
可以发现生成了first_drv.ko

注意一下:
编译驱动模块的前提是:内核已经顺利编译通过。

3.编译测试文件

需要的文件:
a.测试源文件(比如firstdrvtest.c)

编译

arm-linux-gcc firstdrvtest.c -o firstdrvtest

可以发现生成了可执行文件firstdrvtest

4.开发板上测试

A.把前面生成的驱动文件first_drv.ko和测试文件firstdrvtest放到nfs挂载目录下
2440通过nfs挂载linux文件夹参考2440通过nfs挂载linux文件夹

cp first_drv.ko /home/stu/nfs
cp firstdrvtest /home/stu/nfs

B.加载(注册)驱动模块
a.//创建一个空目录
mkdir -p /lib/modules/3.4.2
必须创建/lib/modules/2.6.30.4这样一个空目录,否则不能卸载ko模块
b.移动驱动模块

cp  first_drv.ko   /lib/modules/3.4.2/
#cd /lib/modules/3.4.2/
#insmod  first_drv.ko//加载
#lsmod//查看
first_drv 1329 0 - Live 0xbf010000 (O)
buttons 2693 0 - Live 0xbf008000 (O)

如果要卸载则用rmmod

#rmmod first_drv
#lsmod
buttons 2693 0 - Live 0xbf008000 (O)

C.执行测试

./firstdrvtest on

可以看到灯亮

./firstdrvtest off

可以看到灯灭

你可能感兴趣的:(s3c2440)