U-Boot 移植

Centos7系统

一. 嵌入式linux系统

引导加载程序 环境变量参数 linux内核 根文件系统 用户应用程序
Bootloader Boot paramerers Kernel Root fliesystem App

二. U-Boot 移植

  1. 源码下载
    下载链接u-boot-2016.11

  2. 编译 (以smdk2410为例)

tar -jxvf u-boot-2016.11.tar.bz2
cd ./u-boot-2016.11/
make distclean
make clean
make ARCH=arm CROSS_COMPILE=arm-linux- smdk2410_config
make ARCH=arm CROSS_COMPILE=arm-linux-
  1. 生成
    u-boot-2016.11/u-boot.bin(二进制可执行文件, 用于烧录)
    u-boot-2016.11/tools/mkimage(工具, 用于生成u-boot格式的内核镜像文件uImage)

三. 环境变量分区制作

  1. uboot配置 (以smdk2410为例)
    u-boot-2016.11/include/configs/smdk2410.h
    环境变量位于存储器(norflash、nandflash) : CONFIG_ENV_IS_IN_XXX(CONFIG_ENV_IS_IN_FLASH、CONFIG_ENV_IS_IN_NAND等等);
    没有存储器上存储有环境变量 : CONFIG_ENV_IS_NOWHERE(使用默认的环境变量default_environment)

  2. 工具下载
    下载链接mkbootargs

  3. 分区制作
    自定义修改bootargs_cfg.mak相关参数, 根目录下make编译, 生成bootargs.bin二进制文件(用于烧录)
    bootcmd : uboot启动后, 执行bootcmd命令, 引导kernel
    bootargs : 传给kernel的环境变量

################################ mkbootargs #################################################

CFG_ENV_BOOTBAUDRATE = "115200"
CFG_ENV_BOOTARGS = "\"bootargs=console=ttyS0,115200 root=/dev/mtdblock5 rootfstype=squashfs ro init=/linuxrc LX_MEM=0x3fc6000 mma_heap=mma_heap_name0,miu=0,sz=0x1800000\""
CFG_ENV_BOOTCMD = "sf probe 0;sf read 0x22000000 0x470000 0x200000; bootm 0x22000000"
CFG_ENV_BOOTDELAY = "0"
CFG_ENV_BOOTETHACT = "sstar_emac"
CFG_ENV_BOOTETHADDR = "00:30:1b:ba:02:db"
CFG_ENV_BOOTGATWAYIP = "192.168.1.1"
CFG_ENV_BOOTIPADDR = "192.168.1.111"
CFG_ENV_BOOTSERVERIP = "192.168.1.100"
CFG_ENV_BOOTSTDERR = "serial"
CFG_ENV_BOOTSTDIN = "serial"
CFG_ENV_BOOTSTDOUT = "serial"

你可能感兴趣的:(嵌入式系统移植)