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

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内核镜像,并不能直接拿来用的!后续还有很多具体的工作是必须要做的奥!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值