uboot编译以及烧录方法(SD启动,emmc启动)

it2023-03-17  73

(个人笔记,有需要相关资料的可以私聊我哦)

linux系统启动必须需要一个bootloader引导程序,也就是说芯片上电以后先要运行一段bootloader烧录。那么一开始linux系统会先运行bootloader引导程序,bootloader程序又是如何烧录的呢?

0.uboot获取

uboot官网 http://www.denx.de/wiki/U-Boot/;点击左侧Topics中的“source Code”,再点击FTP服务器

1.初次编译

首先在ubuntu中安装ncurses库,否则编译会报错

sudo apt-get install libncurses5-dev

使用如下命令解压

tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2

使用的是512M(DDR)+8G(EMMC)核心板,使用如下命令来编译uboot:

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文件,u-boot.imx文件。uboot是个裸机程序,因此需要在其前面加上头部才能在I。MX6U上执行,u-boot.imx就是添加头部之后的u-boot.bin

2.uboot烧写与启动

 2.1 SD卡方式

uboot 编译好以后就可以烧写到板子上使用了,这里我们跟前面裸机例程一样,将 uboot烧写到 SD 卡中,然后通过 SD 卡来启动来运行 uboot。使用 imxdownload 软件烧写,命令如下:

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

/dev/sdb是我自己u盘对应的设备文件

2.2 emmc方式

如果要在 uboot 中更新 EMMC 对应的 uboot,可以使用如下所示命令:

mmc dev 1 0                                   //切换到 EMMC 分区 0 tftp 80800000 u-boot.imx                //下载 u-boot.imx 到 DRAM mmc write 80800000 2 33E            //烧写 u-boot.imx 到 EMMC 中 mmc partconf 1 1 0 0                      //分区配置, EMMC 需要这一步!

其中33E是uboot.imx文件大小除以512对应的十六进制,我的u-boot.imx大小是424960,424960/512=0x33E

最新回复(0)