linux 应用 32位 54位,Linux内核3.0.54移植

data/attach/1907/c2x0zl10ojyuk72vejeuyqu2yko8tfa1.jpgdata/attach/1907/i18i5lw7q1iykfmui2gy58id9mxrp7nl.jpg

开门见山

Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。内核由U-boot程序来启动,因此,在移植内核之前我们需要准备的东西:

1.完成Bootloade即U-boot的移植;

2.为我们的内核移植准备好编译环境——交叉编译器;

3.在官网www.kernel.org下载我们的源文件——Linux-3.0.54.tar.bz2。

注意不要下载不稳定的版本。

任务开始

1.创建一个有读写权限的文件夹用来存放我们下载的源文件,并将其解压缩

$tar -xjf linux-3.0.54.tar.bz2

3f288ee285423cc6e29fa526842ca321.png

article-74761.html

2.配置我们的内核参数

(1).修改Makefile文件

$vim Makefile

3f288ee285423cc6e29fa526842ca321.png

article-74761.html

这里主要是选择我们的开发平台类型以及将我们的交叉编译器的环境变量设置好。

3f288ee285423cc6e29fa526842ca321.png

这里是将生成的zimage文件拷贝到当前目录,在手动添加mkimage工具来自动把Zimage生成可执行之.bin文件。Zimage是内核的映像压缩文件,大小3M左右。

3f288ee285423cc6e29fa526842ca321.png这里是解释这段代码含义,可忽略。

(2).修改晶振频率

所谓晶振频率,就是我们板子的工作频率,晶振全称晶体振荡器,它结合开发板的内部电路,产生时钟频率,板子的一切指令执行均在此基础之上,晶振提供的时钟频率越高,板子的运行速度越快。我们的FL2440的开发板晶振频率为12MHz。

$vim linux-3.0.54/arch/arm/mach-s3c2440/mach-smdk2440.c

3f288ee285423cc6e29fa526842ca321.png

(3).修改驱动的串口

$vim linux-3.0.54/drivers/tty/serial/Samsung.c

3f288ee285423cc6e29fa526842ca321.png

接下来我们把mini2440的.config文件作为我们的默认.config文件

cp arch/arm/configs/mini2440_defconfig .config

$export TERM=vt100

这里说明TERM环境变量的类型,避免乱码出现

$Make menuconfig

menuconfig是常用的配置工具,我们可以用它选择要编译进内核的模块,然后将信息保存在生成的.config配置文件中,make menuconfig时出来的文本窗口中的信息是通过读取在内核源代码目录下的Kconfig文件来配置的。根据Makefile文件来编译,而Makefile文件中的变量则通过.config来进行赋值操作。仅仅在Kconfig中添加选项。

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png这里添加的是s3c2440,第一个不要选,和图片一样即可。

(4).修改MACHINE ID设备编号

我们做的FL2440内核与三星的SMDK2440一样,我们U-boot使用设备号为1999,板子为s3c2440,所以将mini2440和s3c2440的设备号对换(mini2440即采用三星的s3c2440为处理器)

$vim linux-3.0.54/arch/arm/tools/mach-types

3f288ee285423cc6e29fa526842ca321.png

配置完成后就可以编译了:

$make

过程省略......................................................

编译过程中的错误请自行解决...................................................

成功以后会生成Linux-s3c2440.bin的可执行二进制文件。

(5)对我们的硬盘(nandflash)进行分区

$vim linux-3.0.54/arch/arm/plat-s3c24xx/common-smdk.c

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

这里说明一下,我们板子上的nandflash为256M,我们将它分成5个区,分别是

bootloader——1M,内核15M,根文件系统——40M,app——100M,data——100M,

分区完毕以后make

$make

编译成功以后我们需要为内核添加根文件系统支持,因为内核启动首先挂载的是根文件系统。这里制作的是简单的initramfs文件系统作为根文件系统,其他的文件系统大家可以自己了解制作也可以参考我的后续文章。

export TERM=vt100

$Make menuconfig

1dfa4b984c059d9e2fd70200adc95939.png

b3ee203be01d9eada254e0b859a4942e.png

这里是选择支持initramfs文件系统,还要填写其所处位置,我的是/opt/rootfs/,这个路径在后续制作根文件系统的时候会创建起来。

选择完以后重新make,我们的内核即可在开发板中启动。

article-74761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值