Hi3093 镜像构建与说明

本章主要介绍openEuler Embedded中Hi3093系列板卡的镜像构建,使用和特性介绍。

当前版本支持官方mpu_solution BSP源码的构建集成(mpu镜像),并生成可用于Hi3093 EMMC烧录的镜像部署件。

也可构建生成hi3093的无BSP驱动镜像,用于mpu_solution进行二次集成打包。

Hi3093硬件介绍

参考: HI3093 介绍

镜像构建与使用

  1. 构建机器和oebuild工具准备:

(1)准备一个ubuntu x86构建主机环境(建议22.04,依赖Python>=3.8,配置建议预留200G存储)

(2)安装oebuild(具体oebuild用法可参见 安装步骤 ),注意以普通用户安装oebuild,例:

sudo apt install python3 python3-pip
# 如果python3和pip模块已安装,请忽略此python3的安装命令
pip install oebuild
# 这里安装oebuild的版本为最新版,可选版本0.0.27,命令如pip install oebuild==0.0.27

(3)准备oebuild的工具依赖(docker):

sudo apt install docker docker.io -y
sudo groupadd docker
sudo usermod -a -G docker $(whoami)
sudo systemctl-reload && systemctl restart docker
sudo chmod o+rw /var/run/docker.sock
  1. oebuild构建代码准备:

(1)初始化构建分支代码(请不要以root及sudo权限执行):

oebuild init buildwork
# 说明:
#   * buildwork为存放目录,
#   * 未使用-b指定分支,默认使用master分支,等同于oebuild init buildwork -b master
# 假设执行路径位于/home/user/,执行后根据提示进入对应目录

cd /home/user/buildwork
oebuild update
#执行完成后,将在 /home/user/buildwork/src/ 目录下载好主构建源码,并初始化构建虚拟环境。

(2)准备mpu_solution源码(若不需要集成BSP驱动的镜像,可跳过此步骤):

获取Hi3093的mpu_solution源码授权,解压并将对应mpu_solution文件夹拷贝到src目录,如

/home/user/buildwork/src/mpu_solution

(3)初始化Hi3093构建源码及配置:

cd /home/user/buildwork
oebuild generate -p hi3093 -d build_hi3093
# 以上命令可追加-f参数,通过oebuild generate -l查看支持的配置,比如-f openeuler-rt开启软实时
  1. 镜像构建和部署

镜像(openeuler-image)支持直接集成mpu_solution中的BSP驱动,也支持构建不包含mpu_solution BSP驱动的的镜像,按如下a、b场景进行操作。

a、 构建基础不包含BSP驱动的镜像(无需事先准备mpu_solution源码,跳过2.2)

cd /home/user/buildwork/build_hi3093
oebuild bitbake
# oebuild bitbake执行后将进入构建虚拟环境
# 注意您此时应该处于进入oebuild bitbkae环境的工作根目录(如/home/openeuler/build_hi3093)
bitbake openeuler-image

构建完成后,输出件见/home/user/buildwork/build_hi3093/output/[时间戳],备用组件内容如下

├── Image-5.10.0-openeuler
├── openeuler-image-hi3093-[时间戳].rootfs.cpio.gz
└── zImage

Note

openeuler-image-hi3093-xxx.rootfs.cpio.gz为cpio.gz格式的可解压文件系统,作为调试备用。

Image为未加工的原始内核基础格式文件。

zImage为未加工的原始内核压缩文件。

文件系统及zImage可作为mpu_solution的输入,进行二次打包集成

若需要交叉编译工具链,可通过如下命令生成,将在output目录下有新时间戳子目录得到输出件。

# 注意您此时应该处于进入oebuild bitbkae环境的工作根目录(如/home/openeuler/build_hi3093)
bitbake openeuler-image -c populate_sdk

b、 构建直接集成mpu_solution BSP驱动的镜像:

cd /home/user/buildwork/build_hi3093
oebuild bitbake
# oebuild bitbake执行后将进入构建虚拟环境
sudo dnf install vim
# 注意需要安装vim工具,当前3093打包依赖xxd命令,由vim软件包提供此命令
# 在构建配置文件中的DISTRO_FEATURES变量追加mpu_solution描述,可在conf/local.conf文件的末尾追加,命令如下
echo 'DISTRO_FEATURES:append = " mpu_solution "' >> conf/local.conf
# 注意您此时应该处于进入oebuild bitbkae环境的工作根目录(如/home/openeuler/build_hi3093)
bitbake openeuler-image

构建完成后,输出件见/home/user/buildwork/build_hi3093/output/[时间戳],内容如下

├── Hi3093_ext4fs.img
├── Hi3093_ext4fs_cms.bin
├── u-boot_rsa_4096.bin
├── openeuler-image-hi3093-[时间戳].rootfs.cpio.gz
└── zImage

Note

目录中的Hi3093_ext4fs.img、Hi3093_ext4fs_cms.bin、u-boot_rsa_4096.bin是emmc烧录使用的部署件

烧录时请配合官方提供的l0fw_rsa_4096.bin和l1fw_rsa_4096.bin共同使用(烧录5件套)。

openeuler-image-hi3093-xxx.rootfs.cpio.gz为cpio.gz格式的可解压文件系统,作为调试备用。

zImage为未加工的原始内核压缩文件。

若需要交叉编译工具链,可通过如下命令生成,将在output目录下有新时间戳子目录得到输出件。

# 注意您此时应该处于进入oebuild bitbkae环境的工作根目录(如/home/openeuler/build_hi3093)
bitbake openeuler-image -c populate_sdk

关于emmc镜像烧录:

按照Hi3093 mpu_solution烧录指导,将如下烧录5件套放置于单板/tmp目录

# 烧录5件套:
Hi3093_ext4fs.img
Hi3093_ext4fs_cms.bin
u-boot_rsa_4096.bin
l0fw_rsa_4096.bin
l1fw_rsa_4096.bin

Note

如果使用本镜像烧录过,可通过网络进行传输

本镜像生成Hi3093 bsp对应驱动位于/lib/modules/hi3093目录,请先插入对应网卡驱动模块并配置网络,如

insmod /lib/modules/hi3093/gmac_drv.ko
ifconfig eth0 192.168.0.11

执行如下命令进行烧录并重启

cd /tmp
sh /hi3093_upgrade.sh 4096
reboot

Note

注意选择emmc模式烧录,如使用标准Hi3093的mpu_solution,可参见Hi3093 mpu_solution文档拨码开关配置(1000)