烧片整体流程:L0 Fw、L1 Fw、HiBoot、ipmc.bin(BMC\SP.bin\iBMA.bin)
烧片包出包
一个最小例子的烧片包配置如下:具体含义还不太了解,仅供参考。
0502TEMP: # 烧片包用于参考
build_type: debug
default_options:
manufacture: true
signature_type: rsa4096
ipmc_bin:
files:
- file: /usr/share/bmcgo/hi1711/Hi1711_THGBMHG6C1LBAIL.m4i
- file: /usr/share/bmcgo/acroview/AUTO_BURNING_CONFIG_TEMPLATE.xml
- file: ${hpm_build_dir}/datafs_openUBMC.img
dst: datafs.img
- file: ${work_out}/GPP_rootfs.bin
emmc_layout:
user:
layout: ${product}/BMC/openUBMC/emmc/emmc_layout.yml
gp0:
size: 768M
gp3:
size: 768M
download:
- xml_file: "None"
type: sp
# bin: /tmp/sp.bin
package_name: "TS200 1280 2280 V2/ToGDP/0502TEMP/ABCDEFG01${manufacture_version}.zip"
files:
- file: ${work_out}/AUTO_BURNING_CONFIG.acxml
- file: /usr/share/bmcgo/emmc_1712/BPEC6A2TB1A2C3.m4i
template: true
# 生成ipmc.bin
- file: ${work_out}/ipmc.bin
verify:
- ipmcbin
- 在机型的Manufacture目录下配置类似的配置,即可出一个ipmc.bin的文件。至于里面要包含的签名、证书等内容,与其它HPM出包的配置保持一致。
- emmc_layout.yml:仅供2280V3参考使用。其余布局需要咨询厂商单独配置。
emmc_layout.yml.txt (1.0 KB) - BPEC6A2TB1A2C3.m4i:BMC插卡上的Emmc芯片上有写具体的型号。m4i文件在bingo代码仓有,也可以在开发环境的 /usr/share/bmcgo/emmc_1712/目录下找到。后面烧片ipmc.bin时需要用到。
烧片流程
L0 Fw、L1 Fw、HiBoot
这三个文件的烧写有一个共同的要求:保存文件的PC要与BMC串口直连。这个阶段的文件传输是通过串口直接发送,经过的中转越多,丢包概率越大,越不容易成功传输文件。
- 用IPOP串口连接后进行AC,按Ctrl+b进入L0命令行。如果进入了Uboot,输入命令reg_wr 0x8740148 1 ,重启后再次按ctrl + b 进入L1
- 输入初始化命令
ddr init和mmc init 0xc0000000 256 8 1 50000000 - 烧写L0
update emmc l0 active此时使用IPOP上传文件。注意一定是先执行命令,后上传文件 文件名称:l0fw_rsa_debug.bin
- 烧写L1
update emmc l1 active。传输方式同理。文件名:l1fw_rsa_debug.bin
- 烧写Hiboot
update emmc hiboot active。传输方式同理。文件名:hiboot_rsa_debug.bin
- 全部升级完成后AC重新启动,按Ctrl+b引导进入Uboot。过程中可以观察L0版本来看是否烧写成功。(具体版本以L0fw_rsa_debug.bin的版本为准)
Uboot配置、小系统启动。
- Uboot阶段可以配置网络配置,命令举例如下:
# 配置HiBoot网络
# ethdev参数为0/1/2/3,需要手动验证哪个eth可用。
net_env ethdev 2
# net_env phy_addr 3
net_env ipaddr 70.183.12.118
net_env netmask 255.255.255.0
net_env gatewayip 70.183.12.1
net_env serverip 70.183.12.6
# 查看配置内容
net_list
# 连通性测试
ping 70.183.12.6
- 配置远端TFTP服务器,上传hi1712_asic.dtb、initrd_boot.cpio.gz、uImage
Q:为什么要搭建TFTP服务器?
A:因为Uboot的网络文件传输只支持TFTP。
Q:为什么不能继续串口?
A:因为这三个文件是启动小系统必备的内容。体积有30M,串口传输太慢。
配置TFTP服务器方式自行咨询AI。 - 启动小系统的命令:
# 启动小系统
tftp 0x98480000 uImage
tftp 0x98400000 hi1712_asic.dtb
tftp 0xb2480000 initrd_boot.cpio.gz
bootm 0x98400000 0x98480000 0xb2480000
# 进入小系统
sh /hibmc_init.sh
bootm后自动引导启动,中间会出现一小段时间的终端,要及时输入sh /hibmc_init.sh,否则会重启。
配置小系统网络,开始烧片。
- 配置小系统网络命令
ifconfig eth2 70.183.12.118 netmask 255.255.255.0
ifconfig eth2 hw ether aa:51:43:03:17:12
ifconfig eth2 up
route add default gw 70.183.12.1
ifconfig
chown root /bin/ping
ping 70.183.12.6 -c 3
- 配置NFS服务器
NFS服务器配置方式自行AI。
Q:为什么需要NFS,不继续使用搭建好的TFTP服务器或者其它文件上传方式?
A:ipmc.bin大小1G往上,系统保存不下,需要通过网络映射磁盘的方式进行读写和烧写。 - 配置小系统启动烧片
mkdir -p /home/nfs
mount -t nfs -o nolock 70.183.12.6:/home/shaopian /home/nfs
cp /home/nfs/program_tool /root
chmod a+x /root
echo 0 > /sys/block/mmcblk0boot0/force_ro
echo 0 > /sys/block/mmcblk0boot1/force_ro
/root/program_tool
storage program /mnt/self_generate/ ipmc.bin BPEC6A2TB1A2C3.m4i
这里注意1. 烧片包本身以及所在的路径(/mnt/self_generated/, /home/shaopian, ipmc.bin, xxxx.m4i) 需要可读写; 2. m4i文件要与ipmc.bin是同一个烧片的zip包下的,否则会烧片失败。
- 烧片完成后重启。
busybox reboot。
顺利的话就能成功启动,然后烧片完成。
注:涉及到的二进制文件如下,需要单独联系获取。
基础debug烧片:
l0fw_rsa_debug.bin
l1fw_rsa_debug.bin
hiboot_rsa_debug.bin
小系统二进制:
hi1712_asic.dtb
uImage
initrd_boot.cpio.gz
烧ipmc.bin时要用到的工具:
program_tool
xxxx.m4i












