最近疫情有点猛,宅在家里,没事找点事干,撸撸板子吧。
拿出来趁着双 11 优惠,花了 520 RMB / 块,买的两块爱芯派(套餐),来个开箱贴,顺便测试一下开发板的串口、网口、音频、摄像头、屏幕,以及 NPU。
作为一款能耗有很大优势的 AI 边缘计算平台,当然也要测试一下不同工作状态下的功耗情况。
厂家 SIPEED 已经把外壳、屏幕、摄像头和开发板组装好了,套餐还带有读卡器、USB 线和支架等。
详细资料及具体使用方法,参看传送门。
为了看清楚一点,把外壳和插卡拆下来,看看主要部件:
核心板参数:
项目 | 参数 |
---|---|
CPU | Quad-A7 @ 1.0 Ghz(四核A7) |
NPU | 14.4Tops@int4,3.6Tops@int8 |
ISP | 4K@30fps |
编解码格式 | H.264, H.265 |
视频编码 | 4K@30fps |
视频解码 | 1080P@60fps |
Ethernet | 支持双路RGMII / RMII 接口模式的以太网 |
显示输出 | MIPI DSI 4 Lane,最高支持4K@30FPS |
DRAM | 2GB LPDDR4X 3733Mhz |
存储 | 可选16GB EMMC(默认是 TF 卡启动) |
IO 引出 | DDR4 SODIMM 260P 金手指全 IO 引出 |
底板参数:
项目 | 参数 |
---|---|
摄像头输入 | (默认单摄)最高支持 3 摄:1个MIPI4-LANE+2个MIPI2-LANE |
屏幕输出 | 支持最高 4-LANE MIPI DSI 屏幕 |
SD 插槽 | 默认从 SD 卡启动 |
录音输入 | 板载两个 MEMS MIC 支持双麦降噪 |
音频输出 | 3.5MM耳机接口 支持立体声输出和 MIC 输入 |
网络接口 | 支持 千兆以太网(ETH) 和 2.4GHZ WI-FI 板载天线 |
USB 接口 | 1xUSB2.0HS 支持 OTG 或 HOST 功能,1xUSB-UART 系统串口 |
其他资源 | 1x用户按键,3x系统按键,1xRTC时钟,2xLED |
对外接口 | 引出CJTAG,可自行连接相应调试器,引出2x12排针,4个M2.5螺丝定位孔 |
爱芯派默认板卡没有存储介质,因此需要准备一张 SD 卡来启动设备。
目前爱芯派提供的是 Debian11 Bullseye 镜像,镜像文件比较大,厂家仅提供百度云下载链接。
前往百度云 点我 ,提取码 sdls
,下载文件,镜像包与校验文件都已经放在里面了。当前最新的版本是:sipeed_ax620a_debian11_20221116.img.xz(大约 1.19GB,解压后大约 5.75GB)。
在Windows 10下,选用大于 8GB 的 SD 卡,使用Etcher,烧录系统。
系统烧录好后,插入板卡 SD 卡槽,接一个耳机或者外接音箱,通过 USB 线连接到电脑(USB3.0接口可以提供 1A 电流),板卡会自动启动,启动完成后能听到一段很酷的声音,屏幕显示如下:
接下来,就可以使用 Putty,通过 USB 串口(外边 USB 口,标 Power UART)连接到爱芯派了。
登陆到爱芯派后,就可以通过 ifconfig 命令查询到板子的网络地址,使用网络接口连接。
也可以通过 USB 的线,连接中间 USB 口(标 USB-OTG),通过 USB 网口连接电脑。
如果电脑不能识别 RNDIS 设备,可以在设备管理器里,手动从计算机的设备驱动程序列表中选择,在硬件设备列表中往下拉,找到网络适配器,在网络适配器窗口的制造商列表中选择微软公司,右侧列表中选择远程 NDIS
兼容设备,来手动更新驱动。
登录后显示:
login as: root
[email protected]'s password: root
Linux AXERA 4.19.125 #56 SMP PREEMPT Mon Nov 14 12:10:17 HKT 2022 armv7l
The programs included with the Debian GNU/Linux system are free software;
安装 neofetch,看看系统信息。系统已经设置好安装包的腾讯云镜像了。
(腾讯云 https://mirrors.tencent.com/debian bullseye/main armhf)
root@AXERA:~# apt install neofetch
root@AXERA:~# neofetch
使用 htop 查看加载的程序及 CPU 使用情况。
root@AXERA:~# htop
我的爱芯派套餐摄像头是低配 gc4653 400w 基础体验版本,成像效果一般,显示是 5 寸的 MIPI DSI 4 Lane 屏,分辨率是 480 x 854。
系统自带一个例子:sample_vin_vo 来测试摄像头输入和屏幕显示。
对于我们不熟悉的命令,直接敲入程序名,不带参数,会显示该程序的帮助信息。
root@AXERA:~# sample_vin_vo
[main]-550: ISP Sample. Build at Sep 21 2022 19:22:49
[PrintHelp]-134: command:
[PrintHelp]-135: -c: ISP Test Case:
[PrintHelp]-136: 0: Single OS04A10
[PrintHelp]-137: 1: Single IMX334
[PrintHelp]-138: 2: Single GC4653
[PrintHelp]-139: 3: DUAL OS04A10
[PrintHelp]-141: -e: SDR/HDR Mode:
[PrintHelp]-142: 1: SDR
[PrintHelp]-143: 2: HDR 2DOL
[PrintHelp]-145: -v Interface@Resolution@VRefresh:
[PrintHelp]-146: dpi@
[PrintHelp]-147: dsi0@
[PrintHelp]-148: dsi1@
[PrintHelp]-149: 2dsi@
[PrintHelp]-150: bt656@
[PrintHelp]-151: bt1120@
[PrintHelp]-152: -s: camera chn
[PrintHelp]-154: Example:
[PrintHelp]-155: ./sample_vin_vo -c 2 -e 1 -s 0 -v dsi0@1280x800@45
[PrintHelp]-156: ./sample_vin_vo -c 0 -e 1 -s 0 -v dsi0@480x360@60
root@AXERA:~# sample_vin_vo -c 2 -e 1 -s 0 -v dsi0@480x854@60
[main]-550: ISP Sample. Build at Sep 21 2022 19:22:49
[ParseVoPubAttr]-249: dsi0 output
[ParseVoPubAttr]-280: reso: 480x854-60
[AX_SYS_LOG] AX_SYS_Log2ConsoleThread_Start
AX_POOL_SetConfig success!
[COMMON_SYS_Init]-85: AX_POOL_Init success!
[COMMON_ISP_GetI2cDevNode]-448: get board_id = 2
[RegisterSns]-556: set sensor bus idx 0
gc4653_sensor_set_mode
[sample_isp][COMMON_CAM_Open][167] pFile
[COMMON_CAM_Open]-170: AX_ISP_LoadBinParams will user sensor.h
Cannot open /sys/class/gpio/gpio496/direction.
Cannot open /sys/class/gpio/gpio496/direction.
i2c_init: i2c device is /dev/i2c-0
line_period 22.000000us
ISP IFE INIT done.
ISP ITP INIT done.
[main]-691: camera 0 is open
g_vo_log_target = 0, g_vo_log_level = 0, g_perf_trace_enable = 0
[VoInit]-429: u32LayerNr = 1
[VoInit]-449: layer0 u32Width = 2560, u32Height = 1440
[SAMPLE_VO_CREATE_POOL]-307: u32BlkCnt = 3, u64BlkSize = 0x546000, pPoolID = 7
[VoInit]-459: layer pool id = 0x7
[SAMPLE_COMM_VO_StartChn-161] layer0 u32Width:2560, u32Height:1440, u32Square:1
[SAMPLE_COMM_VO_StartVO-364] done, s32Ret = 0x0
[VoInit]-488: done
[IspRun]-95: cam 0 is running...
^C
[__sigint]-161: Catch signal 2
ISP IFE DEINIT done.
ISP ITP DEINIT done.
[COMMON_CAM_Close]-269: COMMON_CAM_Close: pipe 0: exit.
[AX_SYS_LOG] Waiting thread(2978484784) to exit
[AX_SYS_LOG] AX_Log2ConsoleRoutine terminated!!!
exit[AX_SYS_LOG] join thread(2978484784) ret:0
实际运行,整个板卡的电流是 710mA,功耗大约是 3.6W,显示效果如图:
CPU 资源占用如图:
爱芯派采用顺芯的 ES8388 音频编解码芯片(24bit,8~96kHz ADC/DAC,95dB 信噪比,40mW 耳机放大),板载两个 MENS 麦克风(歌尔 S15OT421),和一个带麦克风输入的耳机插座。
使用 alsamixer 来调整合适的录音和播放的音量,使用 arecord 录音,使用 aplay 播放,这几个程序已经集成在系统里,不需要额外安装;如果想播放 mp3,需要安装 mplayer。
root@AXERA:~# alsamixer
串口终端和网络终端显示的信息不完全一样,网络终端的信息更完整。
让喇叭播放固定频率声音,CTRL+C 结束。
root@AXERA:~# speaker-test -t sine -f 440 -c1
录音并回放:
使用开发板自带的两个麦克风,直接采用缺省的 8kHz 录音,数据类型默认是 U8,效果比较差,有很大的刺啦声,估计是数据类型和音量太大导致的溢出,有时间可以分析一下。
root@AXERA:~# arecord test.wav
Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
^C Aborted by signal Interrupt...
arecord: pcm_read:2152: read error: Interrupted system call
root@AXERA:~# aplay test.wav
Playing WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
采用 S16 格式和 48kHz 录音,信号很好,声音很干净。
root@AXERA:~# arecord -f dat test48.wav
Recording WAVE 'test48.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^C Aborted by signal Interrupt...
root@AXERA:~# aplay test48.wav
Playing WAVE 'test48.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
安装 mplayer,播放 MP3 音乐。
root@AXERA:~# apt install mplayer
root@AXERA:~# mplayer gsls.mp3
其中一个 CPU 核心的负载是 67.6%,其他三个核心闲置,播放 mp3 时板卡的电流是 540mA。
运行系统自带的例子,yolov5s,循环 1000 次:
root@AXERA:~# /home/ax-samples/build/install/bin/ax_yolov5s -m /home/models/yolov5s.joint -i /home/images/cat.jpg -r 1000
--------------------------------------
model file : /home/models/yolov5s.joint
image file : /home/images/cat.jpg
img_h, img_w : 640 640
[AX_SYS_LOG] AX_SYS_Log2ConsoleThread_Start
Run-Joint Runtime version: 0.5.10
--------------------------------------
[INFO]: Virtual npu mode is 1_1
Tools version: d696ee2f
run over: output len 3
--------------------------------------
Create handle took 491.12 ms (neu 23.34 ms, axe 0.00 ms, overhead 467.78 ms)
--------------------------------------
Repeat 1000 times, avg time 22.47 ms, max_time 22.98 ms, min_time 22.43 ms
--------------------------------------
detection num: 1
15: 89%, [ 167, 28, 356, 353], cat
[AX_SYS_LOG] Waiting thread(2868897024) to exit
[AX_SYS_LOG] AX_Log2ConsoleRoutine terminated!!!
exit[AX_SYS_LOG] join thread(2868897024) ret:0
推理时 CPU 负载率:
可以看到,除了在模型加载的时候,CPU 的占用比较大,用 NPU 做推理的时候,CPU 的负载很小,而推理时整个板卡的电流只有 640mA,功耗是 3.2W。
看看推理结果图像:
root@AXERA:~# fbon
root@AXERA:~# fbv yolov5s_out.jpg
爱芯派采用的 AX620a 芯片功耗确实很优秀,都不需要散热片。用一个 5V 输出电流不小于 1A 的充电宝就可以供电。
AX620A 14.4Tops@int4,3.6Tops@int8 的 AI 能力也很不错,以 3.2W 的低功耗,运行 yolov5s 模型做推理,单张 640 x 640 图片,只需要 23ms 。
老徐,2022/11/22