1.下载内核原码

2.查看顶层目录的Makefile,配置交叉编译工具

3.清除之前的配置make distclean

4.拷贝配置文件到顶层目录,生成.config文件

5.生成make menuconfig

6.配置开发板启动数据,网卡启动,文件系统等

7.编译,并生成uImage或者zImage

=========================================================================

宏观上可分为四步:

1.搭建交叉开发环境

交叉环境是指我们开发的环境是在PC上,但是目标是运行在嵌入式设备上(板子上),而嵌入式系统的系统和指令集和我们PC上不一样;并且没法直接在没有系统的开发板上开发,在速度更快的PC上开发更好更快。

所谓“环境”指的是硬件上:开发机,目标机,和二者的链接介质:串口,USB线,网线;软件上:如果用串口---需要串口调试助手,用usb---需要usb驱动,用网线---需要tftp(下载)和nfs(网络共享); 还需要交叉编译链(指交叉编译的一系列环境搭建)---即下载并配置crosstools -ng脚本工具

2.Bootloader的选择和移植

Bootloader是在操作系统内核之前运行的一段小程序,创造环境,对软硬件进行初始化,引导操作系统启动内核(即把内核加载到内存SDRAM里面运行)

linux 移植stress工具 linux移植步骤_内核

Bootloader工作方式:

        启动加载---Bootloader将系统从flash加载到SDRAM,整个过程自动

        下载---通过某些通信手段,将内核或者根文件系统的镜像下载到板子的SDRAM里面运行,Bootloader本身提供接口命令,给用户完成自己想要的操作,这种一般用于测试和开发

 

3.Kernel的配置,编译和移植

 

p1---将下载好的文件linux-3.14.tar.bz2拷贝到主目录下解压
    p2---修改顶层目录下的makefile(修改平台和交叉编译器):
     ARCH    ?= $(SUBARCH)
       CROSS_COMPILE  ?=
       CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)
       修改以上代码为:
       ARCH    ?= arm                                                       ---->体系架构是arm架构
      CROSS_COMPILE  ?= arm-cortex_a8-linux-gnueabi-    ---->交叉编译器是arm-cortex_a8平台的
       注意:这两个变量值会直接影响顶层Makefile的编译行为,即选择编译哪些代码,用什么编译器进行编译。   p3---拷贝标准版配置文件,获取我们开发板的配置信息。
$ cp arch/arm/configs/s5pc100_defconfig    .config
  p4---配置内核
$make menuconfig
p5---编译内核
$make zImage
p6---通过tftp测试内核
setenv bootcmd tftp 20008000(内存地址) zImage\;go 20008000
        setenv bootargs nfs nfsroot=192.168.1.199(虚拟机的ip):/source/rootfs ip=192.168.1.200(开发板的ip)  init=/linuxrc(第一个要启动的用户进程) ttySAC0,115200(设置中断为串口1,波特率为:115200)

4.各种设备的移植包括存储设备和通信设备

5.根文件系统的移植