[Mini2440 - 011] 配置编译 linux-2.6 内核

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Mini2440 - 011] 配置编译 linux-2.6 内核相关的知识,希望对你有一定的参考价值。

一、相关资料获取

  我个人在学习 mini2440 开发板时是跟着韦东山老师的第一期视频学习的,视频和资料可以访问百问网论坛获取。

  百问网论坛链接: http://www.100ask.net/bbs/forum.php

  下载好资料后在 "JZ2440资料光盘" 文件中 systems 目录下可以获取到 linux-2.6.22.6.tar.bz2(内核源码包)和 linux-2.6.22.6_jz2440.patch(韦东山老师移植 linux-2.6 到 JZ2440 开发板的 patch 包)。在第一期视频目录下可以获取到 "韦东山Linux视频第1第2期所有源码文档图片芯片手册.rar" 压缩包。

 

二、配置编译 linux-2.6

  1. 将下载好的内核源码包和对应的 Patch 包复制到 Ubuntu 虚拟机 /home/user/workspace/s3c2440/package 目录下。

  2. 解压 linux-2.6 内核源码到上级目录,也就是 /home/user/workspace/s3c2440/ 目录下。

[email protected]:~/workspace/s3c2440/package$ tar jxf linux-2.6.22.6.tar.bz2 -C ../

  3. 切换到 linux-2.6 目录下,给 linux-2.6 打补丁。

[email protected]:~/workspace/s3c2440/package$ cd ../linux-2.6.22.6/
[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ patch -p1 < ../package/linux-2.6.22.6_jz2440.patch 

  4. 移植 mini2440 的 lcd 和网卡驱动到此 linux-2.6 内核中。

  在 /home/user/workspace/s3c2440/ 目录下建立 mini2440/drivers/ 子目录。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ mkdir -p ../mini2440/drivers

  将 "韦东山Linux视频第1第2期所有源码文档图片芯片手册.rar" 压缩包中 mini2440 对应的 lcd 和网卡驱动复制到虚拟机中 /home/user/workspace/s3c2440/mini2440/drivers/ 下。

  然后使用 mini2440 的 lcd 和网卡驱动替换 linux-2.6 内核中 lcd 和网卡驱动。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ cp -a ../mini2440/drivers/lcd.c drivers/video/s3c2410fb.c
[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ cp -a ../mini2440/drivers/dm9dev9000c.c drivers/net/dm9dev9000c.c 

  5. 配置编译 linux-2.6 内核。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ cp config_ok .config
[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ make uImage

  6. 编译报错了。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ make uImage
Makefile:1449: *** mixed implicit and normal rules: deprecated syntax /home/user/workspace/s3c2440/package/linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax /home/user/workspace/s3c2440/package/linux-2.6.22.6/Makefile:1449: *** mixed implicit and normal rules: deprecated syntax make[1]: *** No rule to make target silentoldconfig。 停止。 CHK include/linux/version.h UPD include/linux/version.h make: *** No rule to make target include/config/auto.conf, needed by include/asm-arm/.arch。 停止。

  是由于我的 Ubuntu 系统的 make 工具太新,make 的旧版规则已经无法兼容新版。按照如下方式修改 Makefile 可以解决。

diff --git a/Makefile b/Makefile
index 9b456d0..0d6d38a 100644
--- a/Makefile
+++ b/Makefile
@@ -413,7 +413,8 @@ ifeq ($(config-targets),1)
 include $(srctree)/arch/$(ARCH)/Makefile
 export KBUILD_DEFCONFIG
 
-config %config: scripts_basic outputmakefile FORCE
+# config %config: scripts_basic outputmakefile FORCE
+%config: scripts_basic outputmakefile FORCE
        $(Q)mkdir -p include/linux include/config
        $(Q)$(MAKE) $(build)=scripts/kconfig [email protected]
 
@@ -1446,7 +1447,8 @@ endif
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir [email protected])
 
 # Modules
-/ %/: prepare scripts FORCE
+# / %/: prepare scripts FORCE
+%/: prepare scripts FORCE
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)         $(build)=$(build-dir)
 %.ko: prepare scripts FORCE

  7. 再次执行编译命令,发现还会报错。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ make uImage
... ... Kernel: arch
/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage "mkimage" command not found - U-Boot images will not be built Image arch/arm/boot/uImage is ready

  提示说 mkimage 命令没有找到。这里需要安装 u-boot-tools 工具,执行下面这条命令开始安装。

sudo apt-get install u-boot-tools

  8. 安装 u-boot-tools 后,重新编译,终于编译成功了。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ make uImage
... ... Kernel: arch
/arm/boot/Image is ready Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage Image Name: Linux-2.6.22.6-ga4f2d4e4-dirty Created: Thu Oct 12 23:20:24 2017 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1848740 Bytes = 1805.41 kB = 1.76 MB Load Address: 30008000 Entry Point: 30008000 Image arch/arm/boot/uImage is ready

  9. 编译成功后,将会在 arch/arm/boot/ 目录下生成 uImage 内核镜像文件。

[email protected]:~/workspace/s3c2440/linux-2.6.22.6$ ll arch/arm/boot/uImage 
-rw-rw-r-- 1 user user 1848804 10月 12 23:20 arch/arm/boot/uImage

 

参考博文:http://blog.csdn.net/sinat_24088685/article/details/51009472

 















以上是关于[Mini2440 - 011] 配置编译 linux-2.6 内核的主要内容,如果未能解决你的问题,请参考以下文章

[Mini2440] 编译 linux-2.6.32.2 内核

mini2440裸机试炼之—RTC闹钟中断,节拍中断

mini2440 U-boot 编译

mini2440 使用uClibc编译静态程序

mini2440 编译工具链(gcc)安装

mini2440 官方linux-2.6内核文件zImage编译