在嵌入式Linux开发中,启动镜像的制作与烧写是硬件部署的核心环节。本文详细解析华为昇腾Ascend310B启动镜像的完整流程,从环境搭建到烧写验证,为开发者提供一站式解决方案。
华为昇腾310B(Ascend310B)是一款高性能、低功耗的AI处理器,专为边缘计算和推理应用场景而设计。它基于华为自研的达芬奇架构,具备强大的计算能力和高效的运算效率,能够支持多种深度学习框架和算法,为智能安防、智能交通、工业互联网等领域提供卓越的AI推理解决方案。
作者使用的是Atlas 200I AI加速模块,模块可通过SD卡、M.2和eMMC方式制作启动镜像包。
需要用到的软件包:
sdtool.tar.gz 位于Ascend-hdk-310b-sdk-soc_25.2.0.zip包
Ascend-hdk-310b-npu-driver-soc_25.2.0_linux-aarch64.run
Ascend-hdk-310b-npu-firmware-soc_7.7.0.6.236.run
Sample-root-filesystem-soc_ubuntu-22.04-aarch64.img 位于Ascend-hdk-310b-npu-sample-root-filesystem-soc_23.0.rc1_linux-aarch64.zip包
ubuntu-22.04-live-server-arm64.iso
Ascend-hdk-310b-npu-soc_25.2.0_linux-aarch64.tar.gz 位于Ascend-hdk-310b-npu-soc_25.2.0_linux-aarch64.zip包
所用到的软件包可参考《Atlas 200I A2 加速模块 25.2.0 驱动开发指南》给出的地址进行下载。
制作镜像
1.执行命令创建mksd目录。
mkdirmksd
2.解压sdtool.tar.gz,并将其中的所有文件copy到mksd目录下。
tar -xzvf sdtool.tar.gzcp-arf sdtool/* ./mksdcd./mksd
mksd文件如下:
总用量 75092drwxrwxr-x 5 ubuntu ubuntu 4096 Sep 815:11 ./drwxrwxr-x 6 ubuntu ubuntu 4096 Sep 815:11 ../-rw-rw-r-- 1 ubuntu ubuntu 4096 Jul 1700:00 boot_image_info-rwxrwxr-x 1 ubuntu ubuntu 59352 Jul 1700:00 emmc-head*-rw-rw-r-- 1 ubuntu ubuntu 76642642 Jul 1700:00 initrd_usb-rwxrwxr-x 1 ubuntu ubuntu 2464 Jul 1700:00 install_hook_demo.sh*-rwxrwxr-x 1 ubuntu ubuntu 48760 Jul 1700:00 make_os_recover.sh*-rwxrwxr-x 1 ubuntu ubuntu 76123 Jul 1700:00 make_os_sd.sh*-rwxrwxr-x 1 ubuntu ubuntu 14481 Jul 1700:00 make_sd_card.py*-rw-rw-r-- 1 ubuntu ubuntu 129 Jul 1700:00 mksd.conf-rw-rw-r-- 1 ubuntu ubuntu 1024 Jul 1700:00 parttion_head_info-rwxrwxr-x 1 ubuntu ubuntu 6521 Jul 1700:00 preconfig.sh*drwxrwxr-x 2 ubuntu ubuntu 4096 Jul 1700:00 recovertool/drwxrwxr-x 2 ubuntu ubuntu 4096 Jul 1700:00 synctool/drwxrwxr-x 2 ubuntu ubuntu 4096 Jul 1700:00 tools/
3.执行如下命令,检查emmc-head工具是否可用。
ubuntu@ubuntu:~/project/Ascend310B-tools/mksd$./emmc-head --helpUsages: emmc-head firmware_path boot_a_devname boot_b_devname [force_recover]Thefollowing files must be containedinfirmware_path:Image, itrustee.img, dt.img, initrd.boot_a_devname:APartitionboot device name,forexample,eMMC:mmcblk0p2,SD:mmcblk1p2boot_b_devname:BPartitionboot device name,forexample,eMMC:mmcblk0p3,SD:mmcblk1p3force_recover:force recover flag. Example:/var/davinci/driver/emmc-head ./firmware /dev/mmcblk0p2 /dev/mmcblk0p3
emmc-head执行提示错误一:-bash: ./emmc-head: No such file or directory。
·原因分析
emmc-head工具需要使用“ /lib64/”目录下的ld-linux-aarch64.so.1文件,当前环境的“ /lib64/”目录下缺少此文件。
·解决方案
执行如下命令,复制或创建ld-linux-aarch64.so.1的符号链接到“ /lib64/”目录下。
cp/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib64/或ln-sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib64/ld-linux-aarch64.so.1
emmc-head执行提示错误二:./emmc-head: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory。
·原因分析
若为emmc-head工具需要使用“ /lib”目录下的libc.so.6文件,当前环境的“ /lib/”目录下缺少此文件。
·解决方案
执行如下命令,复制到或创建libc.so.6的符号链接“ /lib/”目录下。
cp/usr/aarch64-linux-gnu/lib/libc.so.6 /lib/或ln-sf /usr/aarch64-linux-gnu/lib/libc.so.6 /lib/libc.so.6
emmc-head执行提示错误三:./emmc-head --help -bash: ./emmc-head: cannot execute binary file: Exec format error
·原因分析
不兼容的操作系统上运行二进制文件,例如在32位系统上运行64位的二进制文件。emmc-head为64位二进制文件,需要在64位系统上运行。
·解决方案
修改虚拟机的系统架构。
将当前32位操作系统架构修改为64位。
4.复制软件包到对应目录:
cp-rf Ascend-hdk-310b-npu-driver-soc_25.2.0_linux-aarch64.run ./mksd/cp-rf Ascend-hdk-310b-npu-firmware-soc_7.7.0.6.236.run ./mksd/cp-rf Sample-root-filesystem-soc_ubuntu-22.04-aarch64.img ./mksd/cp-rf ubuntu-22.04-live-server-arm64.iso ./mksd/cp-rf Ascend-hdk-310b-npu-soc_25.2.0_linux-aarch64.tar.gz ./mksd/recovertool
5.执行对应命令创建启动镜像。(必须要root权限)
镜像操作之前先将系统语言切换成英文,执行LANG=en_US。
LANG=en_US #切换语言为英文。
#制作本地镜像包,会生成对应的recoverfs--xxx.img镜像sudopython3 make_sd_card.py mkrecoverimg eMMCsudopython3 make_sd_card.py mkrecoverimg SD
#制作启动镜像,并烧写到对应的介质中。主要需要插入U盘或SD卡sudopython3 make_sd_card.pylocal/dev/sdb #制作SD卡启动盘,需要插入SD卡。sudopython3 make_sd_card.pylocal/dev/sdb USB #制作U盘卡启动盘,需要插入U盘。
命令执行过程根据打印提示信息输入"Y"。
Please make sure you have installed dependency packages: apt-getinstall -y qemu-user-staticbinfmt-support gcc-aarch64-linux-gnu g++-aarch64-linux-gnu dosfstools parted kpartxPlease input Y:continue, other to install them:y
显示如下类似信息,表示制卡成功。
MakeCard successfully!
注:eMMC需要通过U盘进行烧写,无法通过SD卡进行烧写。SD卡制作的recoverfs--SD.img通过dd写入到SD卡后,设备从SD卡启动后,会烧写SD的系统到SD卡中,而不是eMMC中。
6.重构驱动run包
重构驱动run包需要用到SDK包,所以需要先解压Ascend310B-source.tar.gz,对源码进行编译后在output目录中生成dt.img、Image、userBaseConfig.bin等。Ascend310B-source.tar.gz存放在Ascend-hdk-310b-sdk-soc_25.2.0.zip中。
tar -xzvf Ascend310B-source.tar.gzcdAscend310B-source./build.sh dtb #编译dts,生成dt.img./build.sh kernel #编译kernel,生成Image及内核module。./build.sh usrBaseConfig #编译usrBaseConfig,通过user_base_config.xml的配置生成userBaseConfig.bin
在 Ascend310B-source下创建构建run包需要的目录。
mkdir-p ./repack/firmware #存放dt.img、Imagemkdir-p ./repack/drivers #存放模块komkdir-p ./repack/scripts #11-atlas.conf、filelist.csv、minirc_sys_init_ext.sh、minirc_sys_init.sh
复制对应文件到上面创建的目录中。
cpoutput/dt.img repack/firmware/cpoutput/Image repack/firmware/cpoutput/Image repack/firmware/cpoutput/kernel_modules/* repack/drivers
在run包中提取"repack/scripts"需要的文件。注意下面操作只为提取run包中的文件,最好在其它目录下运行,最后可以删除掉。
chmodu+x Ascend-hdk-310b-npu-driver-soc__linux-aarch64.runbashAscend-hdk-310b-npu-driver-soc__linux-aarch64.run -- noexec --extract=./repack
运行上面命令后会在当前目录下生成一个repack的文件。复制"repack/scripts"中的下面几个文件到Ascend310B-source的"repack/scripts"中。
11-atlas.conf、filelist.csv、minirc_sys_init_ext.sh、minirc_sys_init.sh
对文件做如下修改:
minirc_sys_init.sh


minirc_sys_init_ext.sh

另外还需要复制Ascend-hdk-310b-npu-driver-soc__linux-aarch64.run到Ascend310B-source下,因为构建的run包是在之前的run包上进行修改。
执行下面命令进行构建:
sudobash build.sh repack ./Ascend-hdk-310b-npu-driver-soc__linux_aarch64.run
命令正常执行后会在Ascend310B-source下生成Ascend-hdk-310b-npu-driver-soc__linux-aarch64_repack.run。用这个包去替换制作进行工具mksd下的run包,另外"mksd/recovertool/Ascend-hdk-310b-npu-soc_25.2.0_linux-aarch64.tar.gz"中也藏着一个同样的run包,如果遇到烧写失败的情况,可以尝试对tar包进行解压后替换run包重新压缩,再制作启动镜像。
产品介绍
IGB-310和EPC-1310分别是瑞迅科技基于Ascend310B的高性能工业级嵌入式主控板和AI边缘计算工作站,采用高性能4核64位处理器,提供极佳的运算性能。RS485、RS232、CAN、AI、DI、DO等丰富接口,可满足多样化的连接需求。凭借高达20TOPS的算力,广泛适用于智能边缘设备、机器人、智能工控等边端侧AI应用场景。

EPC-1310
高性能4核64位处理器,主频1.6GHZ,1个AI core,主频1.224GHz
算力高达20TOPS
板载 LPDDR4X,12GB(可选配8G/4G)
板载 eMMC,64GB(可选配128/256G)
RS485、RS232、CAN、AI、DI、DO
工作温度:-40℃-70℃
-
嵌入式
+关注
关注
5186文章
20143浏览量
328644 -
华为
+关注
关注
217文章
35782浏览量
260656 -
Linux
+关注
关注
88文章
11627浏览量
217890 -
昇腾
+关注
关注
1文章
175浏览量
7295
发布评论请先 登录

开发者指南 | 华为昇腾Ascend310B启动镜像制作与烧写全攻略
评论