U-Boot 用户手册

该文章将介绍玄铁cpu linux系统镜像的烧写方法

u-boot的使用

快速上手

玄铁cpu的启动分为四个阶段

  • bootrom:初始化cpu;读取并运行ppl代码

  • ppl:将cpu频率提升,例如:从24MHz提升至1.8GHz;读取并运行spl代码

  • spl:初始化ddr;读取并运行u-boot代码

  • u-boot:读取并启动操作系统代码

    值得注意的是:

    通常cpu的启动步骤不会有ppl,但玄铁cpu启动时的频率较低,从外设读取代码的速度非常缓慢,所以cpu的提频模块做了一个抽取,形成了一个ppl,这样,bootrom就只需要读取很小的一部分代码(ppl);而当cpu频率提升后,再去读取包含ddr初始化相关的代码(spl),从而加快启动速度

获取镜像

这里的Linux镜像是一个双核镜像

hw.dtb

uImage

rootfs.cpio.gz

烧写镜像

开发板环境配置

将开发板的拨码调至emmc模式,如图

还需要接上串口线和网线

尤其注意串口的插法

启动开发板

通常一块开发板,都是烧好了ppl,spl以及u-boot的,所以从emmc上电启动后,会很快进入u-boot的操作界面

这个时候,如果emmc中已烧好操作系统相关的镜像,就可以顺其自然地让它跑下去,成功启动;

但如果还没有,那就需要按任意键停住u-boot,并开始烧写;

配置网络环境

u-boot的烧写依赖于网络,所以在按上图2的方式连好网线后,就可以配置网络了(这里的ip配置需根据真实场景,以下只是个例子)

setenv ipaddr 169.254.143.244
setenv netmask 255.255.255.0
setenv gatewayip 169.254.143.254
setenv serverip 169.254.143.246
ping 169.254.143.246

最后显示:host xxx is alive,表示网络连接成功

然后将镜像文件放入一个文件夹

打开tftp32(windows版:tftpd32.452.7z mac版:tftpserver),更改server intercaces

点击browse,选中该文件夹

接下来就可以通过u-boot的命令,来烧写ice镜像了

镜像烧写(以ice开发板为例):

tftp ${avail_addr} hw.dtb
mmc write ${avail_addr} ${dtb_start_sector} ${dtb_size_sector}

0x10000000是物理内存地址,第一条命令表示通过网络将hw.dtb下载倒0x10000000这个内存地址上 第二条命令中的0x1000表示emmc的sector number,0x100表示sector size,该条命令表示从物理内存地址为0x10000000的地方写0x100个sector大小的内容,写入emmc的0x1000 sector处,一个sector的大小为512 Bytes,所以这条命令相当于往emmc里写了128KB(0x100 * 0x200 = 0x20000 = 128KB)的数据

uImage
tftp ${avail_addr} uImage
mmc write ${avail_addr} ${linux_start_sector} ${linux_size_sector}    #不能超过20M
rootfs.cpio.gz
tftp ${avail_addr} rootfs.cpio.gz
mmc write ${avail_addr} ${ramdisk_start_sector} ${ramdisk_size_sector}   #不能超过32M

最后,复位开发板,系统就能启动了

results matching ""

    No results matching ""