编译内核

(1)下载干净的内核代码树,比如下载该版本的纯净内核树:linux-2.6.22.6.tar.bz2
(2)修改代码树,生成可以在板子上运行的代码树: linux-2.6.22.6_board,比如,板子可以运行,必须生成kernel文件(比如:uImage文件)
 

1. 查看目录文件
book@book-desktop:/work/system$ ls
busybox-1.7.0.tar.bz2        s3c_mci_patch.tar.bz2      yaffs_source_util_larger_small_page_nand.tar.bz2
 u-boot-1.1.6_jz2440.patch  yaffs_util_mkyaffsimage.patch
linux-2.6.22.6_jz2440.patch  u-boot-1.1.6.tar.bz2
linux-2.6.22.6.tar.bz2       yaffs_source.tar.gz

2. 解压纯净的内核树
#tar xjvf linux-2.6.22.6.tar.bz2 

3. 进入内核目录
#cd linux-2.6.22.6/

4. patch打补丁
#patch -p1 < ../linux-2.6.22.6_jz2440.patch

5. 配置,编译内核uImage
book@book-desktop:/work/system$ cd linux-2.6.22.6/
book@book-desktop:/work/system/linux-2.6.22.6$ cp config_ok .config
book@book-desktop:/work/system/linux-2.6.22.6$ make uImage

生成uImage就可以了。

6. 编写驱动程序: xxx_driver.c
7. 编写Makefile文件

KERN_DIR = /work/system/linux-2.6.22.6_board    (这个就是前面生成的内核代码树,在目标板上可以直接运行)

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

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

obj-m    += xxx_driver.o

 

8. 编译驱动程序,生成xxx_driver.ko文件
9. 利用NFS服务将xxx.driver.ko文件加载进内核运行。

相关的测试命令:
insmod xxx_driver.ko
rmmod xxx_driver
lsmod xxx_driver
cat /proc/devices
ls -l /dev/xxx_device

10. 写测试代码,对驱动进行相关的测试和验证。
 

可能遇到的问题:

     编译器版本问题只能编译make zImage,低版本才能编译为uImage
补充:
更新u-boot, 内核,以及根文件系统文件 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值