刷机所需文件及位置
根据Solidrun wiki介绍,恢复H15 SOM时,需要将文件分别刷入QSPI Flash和eMMC中。以下是各个文件的作用及存储位置:
| 文件名称 | 作用 | 目标存储位置 |
|---|---|---|
| hailo15_scu_bl.bin | SCU Bootloader | QSPI Flash |
| hailo15_scu_fw.bin | SCU Firmware | QSPI Flash |
| scu_bl_cfg_a.bin, scu_bl_cfg_b.bin | SCU配置文件 | QSPI Flash |
| customer_certificate.bin | 客户密钥证书 | QSPI Flash |
| u-boot.dtb.signed | U-Boot设备树 | QSPI Flash |
| u-boot-initial-env | U-Boot环境变量 | QSPI Flash |
| u-boot-spl.bin | U-Boot SPL | QSPI Flash |
| u-boot-tfa.itb | TF-A 和 U-Boot | eMMC Boot分区 |
| fitImage | Linux内核及设备树 | eMMC Boot分区 |
| core-image-minimal-hailo15-solidrun.ext4 | 根文件系统 | eMMC Root分区 |
| core-image-minimal-hailo15-solidrun.wic | 完整eMMC映像,包含两个分区 | eMMC |
| hailo15_uart_recovery_fw.bin | QSPI恢复固件 | QSPI Flash |
刷写指令
这些文件可以通过以下指令刷入(具体刷flash方式请查看wiki):
uart_boot_fw_loader --serial-device-name /dev/ttyUSB0 --firmware hailo15_uart_recovery_fw.bin
hailo15_spi_flash_program --serial-device-name /dev/ttyUSB0 --uart-load --scu-bootloader ./hailo15_scu_bl.bin --scu-bootloader-config scu_bl_cfg_a.bin --scu-firmware ./hailo15_scu_fw.bin --uboot-device-tree ./u-boot.dtb.signed --bootloader ./u-boot-spl.bin --bootloader-env ./u-boot-initial-env --customer-certificate ./customer_certificate.bin
NFS服务器的配置
- 安装NFS服务器
sudo apt-get install nfs-kernel-server - 创建NFS导出目录
sudo mkdir -p /mnt/hailo15_nfs - 挂载NFS映像
sudo losetup -fP core-image-minimal-hailo15-solidrun.wic sudo mount /dev/loop30p2 /mnt/hailo15_nfs - 配置NFS导出
/mnt/hailo15_nfs *(rw,sync,no_subtree_check) - 重启NFS服务器
sudo exportfs -a sudo systemctl restart nfs-kernel-server
TFTP服务器的配置
- 安装TFTP服务器
sudo apt update sudo apt install tftpd-hpa - 配置TFTP服务器
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure" - 创建TFTP根目录并设置权限
sudo mkdir /var/tftpboot sudo chown tftp:tftp /var/tftpboot sudo chmod -R 775 /var/tftpboot - 重启TFTP服务
sudo systemctl restart tftpd-hpa - 检查TFTP服务状态
sudo systemctl status tftpd-hpa
eMMC分区及系统安装
- 分区eMMC
sudo fdisk /dev/mmcblk1创建两个分区:
Command (m for help): n Partition type: p Partition number: 1 First sector: 默认 Last sector: +64M Command (m for help): t Hex code: b Command (m for help): n Partition number: 2 First sector: 默认 Last sector: 默认 Command (m for help): w - 格式化分区
sudo mkfs.vfat -n boot /dev/mmcblk1p1 sudo mkfs.ext4 -L root /dev/mmcblk1p2 - 挂载并复制文件
sudo mount /dev/mmcblk1p1 /mnt/boot sudo cp u-boot-tfa.itb /mnt/boot sudo cp fitImage /mnt/boot sudo umount /mnt/boot sudo mount /dev/mmcblk1p2 /mnt/root sudo cp -r /mnt/hailo15_nfs/* /mnt/root sudo umount /mnt/root
注意事项:
- 首先需要利用 tftp服务器以及NFS服务器将设备正常启动起来
- 因为uboot环境中获取网络文件的方式是wget, 请保证tftp端口开启:sudo python3 -m http.server 80
- uboot环境变量请及时进行保存好,实际上也大部分来自文件u-boot-initial-env
- eMMC分区的具体方式其实参考这个H15的wic文件,或者如果你有编译这个yocto的话可以参考*.wks文件
发表回复