|
本帖最后由 cazureopi 于 2016-12-23 14:33 编辑
- 我使用的编译环境如下
- Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-86-generic x86_64)
- arm-linux-gnueabihf-gcc 4.8版本
复制代码
用git 下载uboot的源码
- git clone https://git.oschina.net/cazure/orangepi-u-boot-2017.01.git
复制代码 编译uboot时还会编译dts,所以要安装 device-tree-compiler
- sudo apt-get install device-tree-compiler
复制代码
然后进入源码目录,配置源码
- make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig
复制代码- make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
复制代码 开始编译啦- make CROSS_COMPILE=arm-linux-gnueabihf-
复制代码
最后会在源码根目录生成下面这些文件
u-boot u-boot.lds
u-boot.bin uboot.log
u-boot.cfg u-boot.map
u-boot.dtb u-boot-nodtb.bin
u-boot-dtb.bin u-boot.srec
u-boot-dtb.img u-boot-sunxi-with-spl.bin
u-boot.img u-boot.sym
然后把生成的 u-boot-sunxi-with-spl.bin写到SD卡去准备用sd卡启动- dd if=/dev/zero of=/dev/sdX bs=1k seek=8 count=1015
复制代码- dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1k seek=8
复制代码
[size=33.6271px]uboot启动后会找分区里的boot.scr,然后解析执行里面的命令,boot.scr里就有加载启动内核的命令
配置uboot的脚本(boot.scr) 设置启动内核的环境
mainline kernel 主线内核的boot.cmd
- setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
- load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}
- load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage
- bootm 0x42000000 - 0x43000000
复制代码
sunxi-3.4 kernel 全志3.4内核的boot.cmd
- setenv bootm_boot_mode sec
- setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
- load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin
- load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage
- bootm 0x42000000
复制代码
用mkimage工具生成boot.scr
- mkimage -C none -A arm -T script -d boot.cmd boot.scr
复制代码
在SD卡上建立一个在1024K以后的fat32分区,再把boot.scr和内核的相关文件放在这个分区
在sd卡的第二分区创建一个ext4文件系统把根文件系统存放在这
然后sd卡启动的任务就完成了,可以轻松用sd卡启动一个linux系统
|
|