[JZ2440] 配置编译 linux-2.6 内核

发布时间:2023-06-07  

一、相关资料获取


  我个人在学习 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/ 目录下。


user@vmware:~/workspace/s3c2440/package$ tar jxf linux-2.6.22.6.tar.bz2 -C ../

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


user@vmware:~/workspace/s3c2440/package$ cd ../linux-2.6.22.6/

user@vmware:~/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/ 子目录。


user@vmware:~/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 和网卡驱动。


user@vmware:~/workspace/s3c2440/linux-2.6.22.6$ cp -a ../mini2440/drivers/lcd.c drivers/video/s3c2410fb.c

user@vmware:~/workspace/s3c2440/linux-2.6.22.6$ cp -a ../mini2440/drivers/dm9dev9000c.c drivers/net/dm9dev9000c.c 

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


user@vmware:~/workspace/s3c2440/linux-2.6.22.6$ cp config_ok .config

user@vmware:~/workspace/s3c2440/linux-2.6.22.6$ make uImage

  6. 编译报错了。


user@vmware:~/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 $@

 

@@ -1446,7 +1447,8 @@ endif

        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)

 

 # 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. 再次执行编译命令,发现还会报错。


user@lenovo:~/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 工具,执行下面这条命令开始安装。


user@vmware:~/workspace/s3c2440/linux-2.6.22.6$ sudo apt-get install u-boot-tools

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


user@vmware:~/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 内核镜像文件。


user@vmware:~/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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>