u-boot、kernel和rootfs移植

一、uboot移植

1. 下载u-boot

直接从NXP官网下载uboot:NXP-uboot

2. 编译uboot

直接使用正点原子提供的uboot:uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2

  • mx6ull_alientek_nand.sh
tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

编译出u-boot.bin,增加头部生成最终的uboot镜像文件u-boot.imx。

3. uboot烧写与启动

chmod 777 imxdownload
./imxdownload u-boot.bin /dev/sdb

4. uboot命令

  • 信息查询命令 bdinfo & printenv & version
bdinfo # 获取板子信息 board information
printenv # 打印环境变量:波特率baudrate/板子名字board_name/boot命令bootcmd/启动延时时间bootdelay
version # uboot版本号
  • 环境变量操作命令 setenv & saveenv

使用命令setenv修改的是DRAM中的环境变量值,修改以后要使用saveenv命令将修改后的环境变量保存到flash中,否则uboot下一次重启会继续使用以前的环境变量值。

setenv bootdelay 5 # 启动延时时间5s
saveenv

有空格的环境变量要用单引号括起来

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' 
saveenv

不加参数相当于赋空值,就可以删除环境变量。

  • 内存操作命令 md & nm & mm & mw & cp & cmp

查看以0x8000_0000开始的20(0x14)个字节的内存值,显示格式为 .b

md.b 80000000 14
  • 网络操作命令 ping & dhcp & nfs & tftp

nfs 和 tftp命令用来从Ubuntu主机中下载文件。

  • EMMC和SD卡操作命令 mmc
  • FAT格式文件系统操作命令 fatinfo、 fatls、 fstype、 fatload和 fatwrite
  • EXT格式文件系统操作命令 ext2load、 ext2ls、 ext4load、 ext4ls和 ext4write
  • NAND操作命令 nand
  • BOOT操作命令 bootz、bootm和boot

可以从 EMMC或者 NAND等存储设备中将 Linux镜像和设备树文件拷贝到 DRAM,也可以通过 nfs或者 tftp将 Linux镜像文件和设备树文件下载到 DRAM中。
不管用那种方法,只要能将 Linux镜像和设备树文件存到 DRAM中就行,然后使用 bootz命令来启动, bootz命令用于启动 zImage镜像文件.
boot会读取环境变量bootcmd来启动Linux系统。

5. uboot移植

半导体厂商会将uboot移植到自己的原厂开发板上,测试好以后就会将这个uboot发布出去,这就是常说的原厂BSP包。

  • NXP的uboot:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
  • 参考的configs文件:mx6ull_14x14_evk_emmc_defconfig
  • 顶层Makefile中添加ARCH和CROSS_COMPILE
ARCH=arm 
CROSS_COMPILE=arm-linux-gnueabihf-
make mx6ull_14x14_evk_emmc_defconfig 
make V=1 -j16

二、kernel移植

使用 NXP提供的Linux源码,并修改网络驱动。

三、rootfs移植

1. BusyBox是一个集成了大量的Linux命令和工具的软件,可以编译BusyBox构建根文件系统。

2. 根文件系统缺少lib文件,可以将交叉编译器用到的lib库文件添加到根文件系统。

3. 在根文件系统中创建其他文件夹,如 dev、 proc、 mnt、 sys、 tmp和 root等。

4. 完善根文件系统

  • 创建/etc/init.d/rcS文件
  • 创建/etc/fstab文件
  • 创建/etc/inittab文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值