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

描述


在嵌入式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目录。

  •  

mkdir mksd


 

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]The following files must be contained in firmware_path:Image, itrustee.img, dt.img, initrd.boot_a_devname: A Partition boot device name, for example, eMMC:mmcblk0p2, SD:mmcblk1p2boot_b_devname: B Partition boot device name, for example, 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镜像sudo python3 make_sd_card.py mkrecoverimg eMMCsudo python3 make_sd_card.py mkrecoverimg SD
#制作启动镜像,并烧写到对应的介质中。主要需要插入U盘或SD卡sudo python3 make_sd_card.py local /dev/sdb  #制作SD卡启动盘,需要插入SD卡。sudo python3 make_sd_card.py local /dev/sdb USB  #制作U盘卡启动盘,需要插入U盘。

命令执行过程根据打印提示信息输入"Y"。

  •  
  •  
  •  

Please make sure you have installed dependency packages:         apt-get install -y qemu-user-static binfmt-support gcc-aarch64-linux-gnu         g++-aarch64-linux-gnu dosfstools parted kpartxPlease input Y: continue, other to install them:y

显示如下类似信息,表示制卡成功。

  •  

Make Card 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.gzcd Ascend310B-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

复制对应文件到上面创建的目录中。

  •  
  •  
  •  
  •  

cp output/dt.img repack/firmware/cp output/Image repack/firmware/cp output/Image repack/firmware/cp output/kernel_modules/* repack/drivers

在run包中提取"repack/scripts"需要的文件。注意下面操作只为提取run包中的文件,最好在其它目录下运行,最后可以删除掉。

  •  
  •  

chmod u+x  Ascend-hdk-310b-npu-driver-soc__linux-aarch64.runbash Ascend-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

LinuxLinux

minirc_sys_init_ext.sh

Linux

另外还需要复制Ascend-hdk-310b-npu-driver-soc__linux-aarch64.run到Ascend310B-source下,因为构建的run包是在之前的run包上进行修改。

执行下面命令进行构建:

  •  

sudo bash 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应用场景。

Linux

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℃

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分