您的位置:首页 > 运维架构 > Linux

Linux内核源码针对S3C2440的初步框架交叉编译过程分享

2015-07-13 23:06 507 查看

Linux内核源码针对S3C2440的初步框架交叉编译过程分享

Linux内核源码下载地址:https://www.kernel.org/

我是下载了linux-2.6.30.4.tar.gz,所以就以这个版本来做分享吧!

首先是进入工作目录并且创建用于编译Linux内核的子目录

$ cd /work
$ mkdir kernel_build


现在进入kernel_build目录,同时将下载好的内核源码拷贝到这里

$ cd kernel_build
$ cp /home/***/Downloads/linux-2.6.30.4.tar.gz .


解压内核源码包

tar zxvf linux-2.6.30.4.tar.gz


解压后得到 linux-2.6.30.4目录

在顶层目录中打开Makefile,并找到以下内容

ARCH            ?= $(SUBARCH)
CROSS_COMPILE   ?=


将其改为以下内容

ARCH            ?= arm
CROSS_COMPILE   ?= /usr/local/arm/4.1.2/bin/arm-angstrom-linux-gnueabi-


注1:ARCH是architecture的缩写指的是结构,这里S3C2440属于arm架构

注2:CROSS_COMPILE指的是交叉编译工具链的头(即工具链的前半部分名字)

注3:我的交叉编译工具链用的是eabi

注4:?=的意思是如果没有被赋值过就赋予等号后面的值;:= 的意思是覆盖之前的值;+= 的意思是添加等号后面的值。

保存退出

这个就不细说了吧-_-

配置.config文件

在顶层/arch/arm/configs中很容易找到s3c2410_defconfig,因为2440与2410在很多方面都是一样的,所以这里的配置可以直接用2410 的,现在,为了将2410 的配置项写入顶层的.config文件中,需要在顶层目录执行下面的代码

$ make s3c2410_defconfig


配置内核(进入菜单式的配置界面)

注:Makefile是Linux内核编译管理文件(即用来告诉编译器该如何组织编译)

Kconfig文件是配置管理文件,用来管理各配置项,以生成.config文件

.config文件是用来为Makefile提供具体配置项的,从而帮助Makefile来告知编译器该如何组织编译内核源码。

$ make menuconfig


System Type —>//体系确认

ARM system type (Samsung S3C2410, S3C2412, … , S3C2443)

Kernel Features —>//内核特性

[*] Use the ARM EABI to compile the kernel //支持eabi

Boot options —>//启动项参数设置

Default kernel command string —>//内核启动参数(可内核自定义,也可由uboot传递,此时,我们的目的是检验修改后内核的框架是否正确,所以暂时直接由内核自定义即可)

内容为: root=/dev/mtdblock2 rootfstype=jffs2 console=ttySAC0,115200

root=/dev/mtdblock2 //指的是内核启动时文件系统的挂载点,block0用来放bootloader,block1用来放内核,block2用来放文件(系统)

rootfstype=jffs2 //用来指定文件系统类型(文件系统的初始化算法)

console=ttySAC0,115200 //指定与控制台交互的设备为串口,同时指定波特率为115200

File systems —>//文件系统支持

[*] Miscellaneous filesystems —>//选中所有jffs2文件系统选项

Device Drivers —>//设备驱动配置

<*> Memory Technology Device (MTD) support —>

[*] MTD partitioning support //闪存分区支持

<*> NAND Device Support —>

<*> NAND Flash support for S3C2410/S3C2440 SoC

保存退出

编译

$ make -j16


注:-j16的意思是开启8线程编译,用来加快编译速度

得到zImage文件

若编译不出问题,则稍等片刻便可以在顶层目录/arch/arm/boot目录中发现zImage文件。

至此框架搭建已完成,但是针对具体平台的细节还没有做配置,也就是说这并不是一个完整的针对S3C2440的Linux内核镜像,而是一个框架结构是正确的初步的Linux内核镜像,并不能直接拿来用的!后续还有很多具体的工作是必须要做的奥!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: