在嵌入式Linux開發(fā)中,啟動鏡像的制作與燒寫是硬件部署的核心環(huán)節(jié)。本文詳細(xì)解析華為昇騰Ascend310B啟動鏡像的完整流程,從環(huán)境搭建到燒寫驗(yàn)證,為開發(fā)者提供一站式解決方案。
華為昇騰310B(Ascend310B)是一款高性能、低功耗的AI處理器,專為邊緣計(jì)算和推理應(yīng)用場景而設(shè)計(jì)。它基于華為自研的達(dá)芬奇架構(gòu),具備強(qiáng)大的計(jì)算能力和高效的運(yùn)算效率,能夠支持多種深度學(xué)習(xí)框架和算法,為智能安防、智能交通、工業(yè)互聯(lián)網(wǎng)等領(lǐng)域提供卓越的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 驅(qū)動開發(fā)指南》給出的地址進(jìn)行下載。
制作鏡像
1.執(zhí)行命令創(chuàng)建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.執(zhí)行如下命令,檢查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執(zhí)行提示錯(cuò)誤一:-bash: ./emmc-head: No such file or directory。
·原因分析
emmc-head工具需要使用“ /lib64/”目錄下的ld-linux-aarch64.so.1文件,當(dāng)前環(huán)境的“ /lib64/”目錄下缺少此文件。
·解決方案
執(zhí)行如下命令,復(fù)制或創(chuàng)建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執(zhí)行提示錯(cuò)誤二:./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文件,當(dāng)前環(huán)境的“ /lib/”目錄下缺少此文件。
·解決方案
執(zhí)行如下命令,復(fù)制到或創(chuàng)建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執(zhí)行提示錯(cuò)誤三:./emmc-head --help -bash: ./emmc-head: cannot execute binary file: Exec format error
·原因分析
不兼容的操作系統(tǒng)上運(yùn)行二進(jìn)制文件,例如在32位系統(tǒng)上運(yùn)行64位的二進(jìn)制文件。emmc-head為64位二進(jìn)制文件,需要在64位系統(tǒng)上運(yùn)行。
·解決方案
修改虛擬機(jī)的系統(tǒng)架構(gòu)。
將當(dāng)前32位操作系統(tǒng)架構(gòu)修改為64位。
4.復(fù)制軟件包到對應(yīng)目錄:
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.執(zhí)行對應(yīng)命令創(chuàng)建啟動鏡像。(必須要root權(quán)限)
鏡像操作之前先將系統(tǒng)語言切換成英文,執(zhí)行LANG=en_US。
LANG=en_US #切換語言為英文。
#制作本地鏡像包,會生成對應(yīng)的recoverfs--xxx.img鏡像sudopython3 make_sd_card.py mkrecoverimg eMMCsudopython3 make_sd_card.py mkrecoverimg SD
#制作啟動鏡像,并燒寫到對應(yīng)的介質(zhì)中。主要需要插入U(xiǎn)盤或SD卡sudopython3 make_sd_card.pylocal/dev/sdb #制作SD卡啟動盤,需要插入SD卡。sudopython3 make_sd_card.pylocal/dev/sdb USB #制作U盤卡啟動盤,需要插入U(xiǎn)盤。
命令執(zhí)行過程根據(jù)打印提示信息輸入"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盤進(jìn)行燒寫,無法通過SD卡進(jìn)行燒寫。SD卡制作的recoverfs--SD.img通過dd寫入到SD卡后,設(shè)備從SD卡啟動后,會燒寫SD的系統(tǒng)到SD卡中,而不是eMMC中。
6.重構(gòu)驅(qū)動run包
重構(gòu)驅(qū)動run包需要用到SDK包,所以需要先解壓Ascend310B-source.tar.gz,對源碼進(jìn)行編譯后在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及內(nèi)核module。./build.sh usrBaseConfig #編譯usrBaseConfig,通過user_base_config.xml的配置生成userBaseConfig.bin
在 Ascend310B-source下創(chuàng)建構(gòu)建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
復(fù)制對應(yīng)文件到上面創(chuàng)建的目錄中。
cpoutput/dt.img repack/firmware/cpoutput/Image repack/firmware/cpoutput/Image repack/firmware/cpoutput/kernel_modules/* repack/drivers
在run包中提取"repack/scripts"需要的文件。注意下面操作只為提取run包中的文件,最好在其它目錄下運(yùn)行,最后可以刪除掉。
chmodu+x Ascend-hdk-310b-npu-driver-soc__linux-aarch64.runbashAscend-hdk-310b-npu-driver-soc__linux-aarch64.run -- noexec --extract=./repack
運(yùn)行上面命令后會在當(dāng)前目錄下生成一個(gè)repack的文件。復(fù)制"repack/scripts"中的下面幾個(gè)文件到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

另外還需要復(fù)制Ascend-hdk-310b-npu-driver-soc__linux-aarch64.run到Ascend310B-source下,因?yàn)闃?gòu)建的run包是在之前的run包上進(jìn)行修改。
執(zhí)行下面命令進(jìn)行構(gòu)建:
sudobash build.sh repack ./Ascend-hdk-310b-npu-driver-soc__linux_aarch64.run
命令正常執(zhí)行后會在Ascend310B-source下生成Ascend-hdk-310b-npu-driver-soc__linux-aarch64_repack.run。用這個(gè)包去替換制作進(jìn)行工具mksd下的run包,另外"mksd/recovertool/Ascend-hdk-310b-npu-soc_25.2.0_linux-aarch64.tar.gz"中也藏著一個(gè)同樣的run包,如果遇到燒寫失敗的情況,可以嘗試對tar包進(jìn)行解壓后替換run包重新壓縮,再制作啟動鏡像。
產(chǎn)品介紹
IGB-310和EPC-1310分別是瑞迅科技基于Ascend310B的高性能工業(yè)級嵌入式主控板和AI邊緣計(jì)算工作站,采用高性能4核64位處理器,提供極佳的運(yùn)算性能。RS485、RS232、CAN、AI、DI、DO等豐富接口,可滿足多樣化的連接需求。憑借高達(dá)20TOPS的算力,廣泛適用于智能邊緣設(shè)備、機(jī)器人、智能工控等邊端側(cè)AI應(yīng)用場景。

EPC-1310
高性能4核64位處理器,主頻1.6GHZ,1個(gè)AI core,主頻1.224GHz
算力高達(dá)20TOPS
板載 LPDDR4X,12GB(可選配8G/4G)
板載 eMMC,64GB(可選配128/256G)
RS485、RS232、CAN、AI、DI、DO
工作溫度:-40℃-70℃
-
嵌入式
+關(guān)注
關(guān)注
5192文章
20271瀏覽量
331645 -
華為
+關(guān)注
關(guān)注
218文章
35907瀏覽量
261488 -
Linux
+關(guān)注
關(guān)注
88文章
11680瀏覽量
218568 -
昇騰
+關(guān)注
關(guān)注
1文章
179瀏覽量
7327
發(fā)布評論請先 登錄
開發(fā)者指南 | 華為昇騰Ascend310B啟動鏡像制作與燒寫全攻略
評論