ARM 端 RT-Thread 模型部署
简介
本文档面向开发人员,介绍如何在 Windows 环境下基于 X78NE 开发板完成 RT-Thread 操作系统与神经网络模型的部署。 目标是在 ARM 端基于 RT-Thread 操作系统,运行 PNNA 推理示例程序,实现模型加载与执行。
环境搭建
准备内容:
X78NE 板卡
RS232转USB连接线
串口软件
网线
tftpd64.exe 软件(自备)
串口连接与网络配置
接上电源适配器
接上网线
将
RS232转USB连接线与板卡UART_DSP接口相连,另一端连接电脑,进入管理-设备管理器-端口中查看端口号,如COM19打开串口软件,选择相应的端口号 ,波特率115200,数据位8bit,校验位无,停止位1bit,控制流无
打开电源,LED灯亮起
在串口软件可以看到uboot打印信息,在uboot阶段
按任意键进入uboot命令行
1U-Boot 2019.01+ (Jun 20 2024 - 15:43:38 +0800)
2
3SOC: X78NE
4 CPU(ARMV7): 1600 MHz
5 DSP(C66x): 1250 MHz
6Model: X78NE EVM
7
8 mcu start work
9
10Mcu Channel 0
11/2 Bank Groups/4 Banks/10 Column/17 Row/X16/1 Ranks/ECC/Standard
12Systemp DRAM Capacity = 8GB, DDR freq = 1332MHZ
13DDR Init Done.
14
15Flash: ## Unknown flash on Bank 1 - Size = 0x00000000 = 0 MB
160 Bytes
17NAND: nand_scan failed, ret -19
180 MiB
19Net: eth0: ethernet@4200000
20Hit any key to stop autoboot: 0
21x78ne =>
输入
tftpboot命令,可以看到TFTP from server 192.168.23.111,需要我们在电脑上添加192.168.23.111这个IP
1x78ne =>tftpboot
2wait SGMII/RGMII link up ...
3Speed: 1000, full duplex
4*** Warning: no boot file name; using 'C0A81764.img'
5Using ethernet@4200000 device
6TFTP from server 192.168.23.111; our IP address is 192.168.23.100
7Filename 'C0A81764.img'.
8Load address: 0x82000000
9Loading: *
10TFTP error: 'File not found' (1)
11Not retrying...
12x78ne =>
在串口输入
ping 192.168.23.111,打印host 192.168.23.111 is alive表示网络通信正常,至此环境准备完毕
1x78ne =>ping 192.168.23.111
2wait SGMII/RGMII link up ...
3Speed: 1000, full duplex
4Using ethernet@4200000 device
5host 192.168.23.111 is alive
6x78ne =>
下载 RT-Thread 源码
RT-Thread 源码版本为 v5.2.0
1git clone --depth 1 --branch v5.2.0 https://github.com/RT-Thread/rt-thread.git
获取 X78NE 工程
1cd ~/rt-thread/bsp/
2git clone -b v20251222 https://gitlink.org.cn/nudt_dsp/x78ne.git
安装构建工具 scons
1pip install scons
交叉编译环境搭建
非中文路径下,下载交叉编译器
1git clone https://gitlink.org.cn/nudt_dsp/arm_none_eabi_10.2.1.git
配置交叉编译器
编辑 x78ne/armhf/rtconfig.py :
EXEC_PATH = r'你的路径\arm_none_eabi_10.2.1\bin'
模型部署
编译工程
在 x78ne/armhf 目录下执行:
1scons -j16
编译过程部分内容如下:
1PS ~bsp\x78ne\armhf> scons -j16
2...
3LINK rtthread-a15.elf
4Memory region Used Size Region Size %age Used
5 MSMC_SRAM: 1999276 B 2016 MB 0.09%
6arm-none-eabi-objcopy -O binary rtthread-a15.elf rtthread-a15.bin
7arm-none-eabi-size rtthread-a15.elf
8 text data bss dec hex filename
9 705580 52430 1212844 1970854 1e12a6 rtthread-a15.elf
10scons: done building targets.
11PS ~bsp\x78ne\armhf>
成功后生成 rtthread-a15.elf 与 rtthread-a15.bin
配置 TFTP 服务
运行tftpd64.exe
在
Current Directory一栏填 x78ne arm 工程路径~/rt-thread/bsp/x78ne/armhf在
Server interfaces一栏选择192.168.23.111
下载程序和模型
在 U-Boot 命令行中输入:
1tftpboot 0x82000000 rtthread-a15.bin
2tftpboot 0xe0000000 ./applications/pnnatest/resource/network_binary.nb
3tftpboot 0xe1000000 ./applications/pnnatest/resource/input_0.dat
4dcache flush
5go 0x82000000
系统启动成功后,进入 RT-Thread 控制台
运行神经网络推理示例
在 RT-Thread 控制台执行:
1ft_pnna_test
推理日志关键内容:
1msh >ft_pnna_test
2...
3init pnna lite, driver version=0x00010f00...
4run network done...
5profile inference time=0.019000ms, cycle=16803543
6boxes number: 8
72 0.493754 0.774262 0.222295 0.305353 0.176144
87 0.798084 0.760757 0.218838 0.305353 0.176144
91 0.686268 0.425346 0.504524 0.660328 0.612339
1016 0.908528 0.288089 0.640713 0.259141 0.637094
11Average clock, cpu: 2 - 0.0 ms, pnna: 1680354 - 16.8 ms
12Destroy resource network items.
13msh >
推理结果如下所示:
12 0.493754 0.774262 0.222295 0.305353 0.176144
27 0.798084 0.760757 0.218838 0.305353 0.176144
31 0.686268 0.425346 0.504524 0.660328 0.612339
416 0.908528 0.288089 0.640713 0.259141 0.637094
其中每一列分别表示:目标类别、置信度、左上角坐标x、左上角坐标y、框的宽、框的高
推理时间为
116.8 ms
作者 @xyy xunyingya@hngwg.com, @lw 919408385@qq.com