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镜像是一个双核镜像
烧写镜像
开发板环境配置
将开发板的拨码调至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
最后,复位开发板,系统就能启动了