ARM9开发—Linux内核的移植方法
admin 于 2018年12月15日 发表在 嵌入式linux开发

上一篇《ARM9开发—基于TQ2440的Linux镜像编译方法》,介绍了嵌入式Linux移植的三个部分,接下来将介绍三部分的具体操作。

由于uboot移植过程中,相关的ARM硬件知识要求比较多,因此,此部分先不进行介绍,后期有专题讲解。本文将详细介绍如何将原始linux-2.6.30.4源码移植到TQ2440开发板中。

1. 目录创建

在/opt目录下新建文件夹Learn2440,用于区分官方目录EmbedSky,后期的各类原始源码将在此目录下进行修改和编译。

2. 源码下载

(1)官网下载源码

在打开的界面可以看到不同版本的Linux内核源码,本文以linux-2.6.30.4.tar.bz2为例进行下载。

(2)解压到源码

tar xvfj linux-2.6.30.4.tar.bz2 -C /opt/Learn2440

解压完成后目录文件,如下图:

3. 参数配置

需要修改linux源码相关内容以来适配TQ2440开发板。

(1)Makefile

打开主目录下的Makefile文件,第193行、194行内容:

ARCH       ?= $(SUBARCH)
CROSS_COMPILE ?=

修改为:

ARCH       = arm
CROSS_COMPILE = arm-linux-

如下:

(2)mach-smdk2440.c

打开内核源码/opt/Learn2440/linux-2.6.30.4/arch/arm/mach-s3c2440/mach-smdk2440.c文件,第163行内容:

    s3c24xx_init_clocks(16934400);

修改为:

    s3c24xx_init_clocks(12000000);

如下:

(3)生成配置单

由于配置单的配置选项很多,不推荐从零开始配置,建议参考源码自带的s3c2410_defconfig文件进行修改,将s3c2410_defconfig另存为默认配置文件:

cp /opt/Learn2440/linux-2.6.30.4/arch/arm/configs/s3c2410_defconfig /opt/Learn2440/linux-2.6.30.4/.config

4. 修改配置单

根据以上操作,尽管生成的.config配置文件已包含大部分内核配置选项,但针对S3C2440芯片,依然需要对其它选项进行修改,如下:

make menuconfig

(1)General setup

除以下配置项外,其它都取消选中。

(2)System Type

(3)Kernel Features

5. 修改机器码

打开 /opt/Learn2440/linux-2.6.30.4/arch/arm/tools/mach-types 文件,第379行内容:

s3c2440           ARCH_S3C2440      S3C2440           362

修改为:

s3c2440           ARCH_S3C2440      S3C2440           168

如下:

注意:

《ARM9开发—基于TQ2440的Linux镜像编译方法》中提到的源码错误,也需修改。打开 kernel/timeconst.pl文件,第373行内容:

if (!defined(@val)) {

修改为:

if (!@val) {

6. 编译Linux镜像

make zImage
cp arch/arm/boot/zImage ./zImage.bin

此时在主目录下,可看到生成的zImage.bin镜像,利用DNW烧写工具进行下载即可。

7. 启动信息

将移植后的Linux启动信息和官方启动信息进行比对,如图所示:

根据log信息可知,linux内核源码的移植方法正确,系统已正常启动。

8. 其它

在Linux系统启动结尾,可看到如下错误提示:

这是因为Linux中未添加文件系统的缘故,下节将对详细介绍文件系统的移植。

下一篇:《ARM9开发—Linux文件系统制作和移植(1)》

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:S3C2440,linux内核