第一章 前言

修订记录

版本号修订日期作者修订内容
1.024.06.13崔恺聪 徐逸舟初次制作
1.124.06.14徐逸舟增加网络配置
1.224.07.01徐逸舟增加多媒体能力测试
1.324.08.06崔恺聪修改串口线材线序说明
1.424.09.24徐逸舟增加算力测试
1.524.12.18崔恺聪修改描述性错误

概述

本文阐述SM9套件的电气特性、接口电路、结构尺寸以及应用环境等方面的信息。在本文档和其他相关文档的帮助下,应用开发者可快速理解SM9套件的硬件功能并进行相关验证工作。

适用对象

本文档主要适用于以下工程师:

● 单板硬件工程师

● 嵌入式软件开发工程师

● 单板测试工程师

● 测试工程师

约定的符号、标志、专用语解释

在本文中可能出现如下符号、标志,它们所代表的含义如下:

危险表示有高度危险,如果不能避免,可能导致人员伤亡或严重伤害
警告表示有中度或低度潜在危险,如果不能避免,可能导致人员轻微或中等伤害
注意表示有潜在风险,如果忽视这部分文本,可能导致设备损坏、数据丢失、设备性能降低或不可预知的结果
防静电防静电标识,表示静电敏感的设备或操作
当心触电电击防护标识,标识高压危险,需做好防护
  窍门表示能帮助您解决某个问题或节省您的时间
  说明表示是正文的附加信息,是对正文的强调和补充

缩略语

eMMCEmbedded Multimedia Card嵌入式多媒体控制器
JPUJPEG Process UnitJPEG处理单元
I2CInter-integrated Circuit内部整合电路
LPDDRLow-power Double Data Rate低功耗双倍速
PCIePeripheral Component Interconnect Express快捷外围部件互连标准
RGMIIReduced Gigabit Media Independent Interface精简的千兆比媒介独立接口
VPPVideo Post Process视频后处理
VPUVideo Process Unit视频处理单元

声明

Copyright ©️2024 北京算能科技有限公司

我们对本产品手册及其中的内容具有全部的知识产权。除非特别授权,禁止复制或向第三方分发。凡侵犯本公司版权等知识产权权益的行为,本公司保留依法追究其法律责任的权利。

本产品系列将有不断地更新迭代,我们将定期检查本产品手册中的内容,在后续的版本中将出现不可避免的修正、删减、补充。

我们保留在不事先通知的情况下进行技术改进、文档变更、产品改进升级、增加或减少产品型号和功能的权利。

第二章 规格

2.1 套件内容

本套件具体共包括:

智算模组SM9(核心板) * 1

配套开发底板 * 1

配套散热风扇 * 1

micro USB接口串口线 * 1

配套底板电源 * 1

2.2 功能/参数指标

2.2.1 核心板算力指标

表2-1 SM9核心板算力指标

操作系统Ubuntu20.04或Linux系统V4.19以上
处理器处理器

BM1688:8核ARM A53,1.6GHz主频

CV186AH:6核ARM A53,1.6GHz主频
数据处理能力支持FP32/FP16/INT8,可同时进行16路高清视频解码与智能分析
内存BM1688:8GB,CV186AH:4GB

LPDDR4,位宽64bits

数据速率 4266Mbps
存储eMMC 32GB
视频解码和编码解码:H.264 & H.265: 16路1080P @30fps,最大分辨率8192 * 8192

编码:H.264 & H.265: 12路 1080P @30fps,最大分辨率8K
图片编解码JPEG:1080P@480fps,最大分辨率32768*32768

2.2.2 底板接口概览

表2-2 SM9套件底板接口表

电源DC 12V
千兆网口千兆以太网口*2
WIFI&BTWFI6+BT5.0(选配)
HDMI 2.0接口HDMI 2.0 out*1
USB 3.0接口USB3.0*4(含OTG口)
SIM卡接口Micro SIM卡座*1
TF存储卡接口TF卡座*1
Minipcie接口支持Minipcie接口的4G,5G,Lora,Zigbee模块
M.2接口支持NVMe协议的SSD固态硬盘
Mipi CSIMIPI摄像头接口*2
音频接口Line in*1,Line out*1
风扇接口4PIN风扇接口,GND/12V/NC/PWM
Debug接口Micro USB Debug调试串口*1
按键Reset按键*1,Recovery按键*1
RTCCR1220纽扣电池
状态灯LED灯*4,PWR,ALM,REG,SYS
预留天线预留4G,WIFI,BT天线
扩展接口MIPI CSI显示接口*2, SPI*1,SATA接口*2, MIC接口*1, Uart*4, GPIO(复用)*10, Speaker*1, I2C*2, I2S*1, PCIE(SATA复用)*1, CAN*1, VCC3.3V*1
产品尺寸120*79mm

2.2.3 工作环境指标

表2-3 SM9套件运行环境

环境指标规格
工作温度-20℃ ~ +80℃
存储温度-20℃ ~+85℃
工作湿度5% ~ 90%,无凝露
存储湿度5% ~ 90%,无凝露

2.3 外形/接口

2.3.1 核心板

图2-1 SM9模组正面

图2-2 SM9模组背面

2.3.2 套件

图2-3 SM9套件正面

图2-4 SM9套件背面

图2-5 SM9套件正面接口一览

图2-6 SM9套件背面接口一览

2.4 散热规格

套件使用时需接上配套风扇一起使用。

2.5 底板电源适配器规格

推荐值:

输入电压最小值正常值最大值
VDD10.4V12V14.4V

第三章 使用方法

3.1 系统升级

3.1.1 操作说明

本套件支持文件替换、tftp刷机、MicroSD卡刷机等方式。

使用MicroSD卡刷机烧写整个固件的方式最为干净可靠。理论上只要您的套件硬件上没有损坏,就可以使用MicroSD卡进行刷机。

注意:使用MicroSD卡刷机会重写整个eMMC,您储存在eMMC的数据会全部丢失,请务必做好数据备份。

3.1.2 操作步骤

  • 步骤1 佩戴防静电手环或腕带
  • 步骤2 准备一张16GB以上的MicroSD卡和读卡器,将卡格式化为FAT32格式

A. 对于Linux系统,可以参考下面的命令格式化

a) df -h # 找到SD卡的序列号,例如 /dev/sdb1

b) sudo umount /dev/sdb1 # 解除SD卡挂载

c) sudo mkfs.vfat -F 32 /dev/sdb1 # 格式化SD卡为fat32格式

B. 对于Windows系统,可以使用DiskGenius等工具格式化

  • 下载压缩包,找到固件升级包(例如sophon-img/sdcard.tgz)将解压后的所有文件拷贝到MicroSD卡的根目录下
  • 设备下电,将MicroSD卡插入设备上的卡槽,设备上电
  • 等待设备升级完成,移除MicroSD卡,重启设备
  • 结束

图3-1 SD卡格式化流程

3.2 网络配置

SM9开发者套件通过netplan配置网络。

Netplan是一个抽象网络配置生成器。用户只需用一个yaml文件即可配置各个网络接口。其配置文件位于/etc/netplan目录下,默认内容为:

图3-2 netplan默认配置

可以看到,这里eth0网卡使能了dhcp,可以动态获取IP地址;eth1网卡指定了静态地址。

Netplan常用的配置项包括:

表3-1 netplan常用配置项

配置项说明
dhcp4是否自动分配地址
addressIP地址/子网掩码位。
gateway4网关
nameserversDNS

修改完成后,需要使用sudo netplan apply命令,保证修改生效。

需要注意:若修改涉及IP变动,推荐使用串口连接开发板进行修改,避免ssh连接状态下因为配置错误而无法找到IP。

3.3 ssh连接

3.3.1 LAN口连接

SM9套件LAN口配置了默认的IP,地址为:192.168.150.1。将网线一端插入SM9套件的LAN口,一端插入PC机的网口,并且将PC的IP配置到192.168.150网段下,即可ping通SM9设备。此时可以通过ssh linaro@192.168.150.1命令访问设备。

linaro用户的默认密码为linaro,root用户无密码,可以从linaro用户使用sudo -i命令进入。

3.3.2 WAN口连接

SM9套件WAN口可以自动从交换机获取IP。将网线一端插入SM9套件的WAN口,一端插入交换机,即可通过如下方式获取IP。

  • 将HDMI一端插入SM9套件的HDMI口,一端接入显示器,可以在显示器上看到IP信息
  • 使用串口连接SM9设备,用ip a、ifconfig等命令查看IP

获得IP后,可以通过ssh linaro@<Your IP>命令访问设备。

linaro用户的默认密码为linaro,root用户无密码,可以从linaro用户使用sudo -i命令进入。

3.4 串口连接

SM9开发者套件串口类型为TTL UART调试串口。通过调试串口,可以看到板子实时的内核日志,并且可以登录板卡。

需要注意:调试串口不能用于传输文件。

调试串口的波特率是115200bps,8位数据位,1位停止位,无校验,不带流控。

SM9开发者套件的调试串口物理上是一个MicroUSB接口,对应针脚是3.3V TTL电平的UART信号。使用时,可搭配套件中提供的线材,黑色线为地线,绿色线接串口板TX,白色线接串口板RX。

linaro用户的默认密码为linaro,root用户无密码,可以从linaro用户使用sudo -i命令进入。

3.5 内存空间分配及修改方法

内存默认采用LPDDR4,总容量为8GB和4GB 2个版本(可选配16GB)。

图3-4 SM9内存布局

对于其他需要根据实际调整硬件单元所用设备内存大小的情况,可以通过内存修改工具对TPU、VPU、VPSS的内存布局进行修改。

工具使用方法:

  • 使用浏览器打开https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/09/11/13/DeviceMemoryModificationKit.tgz,下载最新的远程内存修改工具,选择“qt_mem_edit_V<x.y.z>.”文件。其中.exe文件适用于Windows系统,.AppImage适用于带有桌面环境的Linux系统
  • Windows系统双击对应的程序即可执行,LInux系统需要使用chmod +x <filename>命令为其添加运行权限后才可运行。该程序正常运行时如下图:

图3-5 远程内存修改工具界面

  • 在该程序中配置SM9套件ssh远程连接需要的IP、端口、用户名和密码
  • 点击“修改目录”可以配置当前主机上存放修改内存的所有过程文件
  • 点击“获取信息”,获取当前SM9套件NPU/VPU/VPP配置的内存大小信息和最大可配置的内存大小信息
  • 根据实际需求来调整三个数字框,它们代表配置完成后各部分的内存大小。单位MB,十进制。需要注意,在SM9设备上,VPU部分的内存大小请设置为0
  • 点击“进行配置”按钮,配置完成后,程序输出如下图:

图3-6 远程内存修改工具log

  • 查看“远程执行信息”中是否有Error输出,如果没有错误输出,则可以登录SM9设备,保存设备上当前工作,重启设备使修改生效。

第四章 常用命令参考

4.1 说明

  • 以下常用命令,部分需要root权限下键入执行,需要通过SSH访问设备登录。
  • 以SSH方式登录设备,默认用户名为linaro,默认密码为linaro。

4.2 常用命令

表4-1 常用命令参考

命令说明
bm_get_basic_info用于获取设备基本信息,包括IP地址、MAC地址、系统开机时间、板卡温度、芯片结温,NPU使用率等。
bm_version用于查看设备版本信息。
bm_get_temperature用于获取设备温度信息,包括板卡温度、芯片结温等。
bm_set_ip用于设置静态IP。
bm_set_ip_auto用于设置动态IP。
cat /factory/OEMconfig.ini用于获取产品信息,如SN等
cat /sys/kernel/debug/ion/cvi_vpp_heap_dump/summary查看VPU/JPU/VPSS预留内存的情况
cat /sys/kernel/debug/ion/cvi_npu_heap_dump/summary查看TPU预留内存的情况
bm-smi查看TPU使用率

第五章 应用开发

5.1 概述

SOPHON SDK是算能科技基于自主研发的深度学习处理器定制的深度学习SDK,涵盖了神经网络推理阶段所需的模型优化、高效支持能力,为深度学习应用开发和部署提供易用、高效的全栈式解决方案。

SOPHON SDK包含tpu-mlir、libsophon、sophon-meida等基础工具包和sophon-demo、sophon-sail、sophon-stream等高级工具包。在SM9开发者套件中,已经预装了libsophon和sophon-media的运行环境。其中,libsophon提供了tpu驱动、bmlib(设备管理)、运行时环境(库文件、工具等);sophon-media主要基于FFMPEG、OPENCV等开源框架,适配底层硬件进行加速。

表6-1 SDK目录结构

文件夹名说明
sophon-imgSoC模式安装包等
sophon-media支持sophon设备硬件加速的多媒体库
tpu-mlirTPU编译器工具链
tpu-perf模型性能和精度验证工具包
sophon-stream基于pipeline的高性能推理框架
sophon-demo针对单模型或单场景的综合例程
sophon-sail对底层接口进行C++/Python API封装的接口库
isp-toolsISP各个模块的参数调节
doc各个模块的文档资料

5.2 C++应用

基于C++开发应用时,可以参考我们的sophon-demo和sophon-stream两个仓库。除了从SDK压缩包中获取之外,这两个仓库还开源到了github上。

sophon-demo:https://github.com/sophgo/sophon-demo/tree/release

sophon-stream:https://github.com/sophgo/sophon-stream

其中,sophon-demo仓库是针对单个模型或单个场景的,从搭建环境、编译模型到获取推理结果进行全面引导的仓库。其中大部分模型都包含了基于C++和Python语言的例程。用户可以参考其中的C++代码,梳理解码、预处理、推理、后处理的流程,同时起到熟悉bmlib、bmcv接口的作用。

sophon-stream是一个基于C++开发的低代码高性能推理框架。该框架包含了编解码、http协议上报、绘图、常见的检测/分类/姿态识别/OCR模型、图像拼接、深度估计等模块,用户可以通过配置Json文件搭建起pipeline,针对图片、视频、码流、相机等输入并行地进行推理,并基于框架提供的功能实现结果上报。

5.3 Python应用

基于Python开发应用时,可以参考我们的sophon-demo和sophon-sail两个仓库。sophon-demo仓库如上文所述,已经开源到github。sophon-sail目前只能通过SDK压缩包获取。

sophon-sail是基于Python开发应用的核心模块,它对bmlib、bmcv、ffmpeg等代码库进行了封装,并基于pybind对外提供Python接口。sophon-sail包含解码、常见图像处理、Tensor操作、推理等功能,可以搭建起完整的Python应用。

需要注意,SM9套件上默认没有安装sophon-sail的Python环境,需要从SDK目录下的sophon-sail/python_wheels/soc_BM1688/目录获取相应版本的Python whl,并在开发板上使用 pip3 install xxx.whl 命令安装。

安装完成后,可以使用 import sophon.sail as sail 命令来验证是否安装成功。

基于Python开发应用,可以参考sophon-demo仓库中各模型目录下的python例程,也可以参考sophon-sail源码目录中的sample/python目录。此目录中提供了视频编解码、yolov5/resnet等常见模型推理的参考代码。

第六章 性能测试

6.1 多媒体能力测试

6.1.1 数据准备

执行以下命令,下载数据:

pip3 install dfss --force-reinstall python3 -m dfss --url=open@sophgo.com:test/video_decode_encode_test/data.tgz python3 -m dfss --url=open@sophgo.com:test/video_decode_encode_test/scripts.tgz

下载的内容包括:

.data ├── 1080p-3Mbps-h264.mkv # 1080p 3Mbps码率 h264视频 ├── 1080p-3Mbps-hevc.mkv # 1080p 3Mbps码率 h265视频 ├── 4k-4Mbps-h264.mkv # 4k 4Mbps码率 h264视频 ├── 4k-4Mbps-hevc.mkv # 4k 4Mbps码率 h265视频 ├── 720p-2Mbps-h264.mkv # 720p 2Mbps码率 h264视频 ├── 720p-2Mbps-hevc.mkv # 720p 2Mbps码率 h265视频 ├── 8k-8Mbps-h264.mkv # 8k 8Mbps码率 h264视频 ├── 8k-8Mbps-hevc.mkv # 8k 8Mbps码率 h265视频 └──test.264 # 转码测试文件 .scripts ├── 4k-8k-decode.sh # 4k、8k视频解码 ├── 4k-8k-encode.sh # 4k、8k视频编码 ├── decode.sh # 解码测试脚本 ├── encode.sh # 编码测试脚本 ├── transcode-1Mbps.sh # 转码1Mbps测试脚本 └── transcode-32kbps.sh # 转码32kbps测试脚本

6.1.2 解码能力测试

使用1080P视频测试解码能力,需要指定输入的视频、使用的tpu id(SoC形态上,只能输入0)、测试线程数。

以1080P视频、0号TPU、16线程为例:

$ bash decode.sh video:1080p-3Mbps-h264.mkv tpu_id:0 thread_num:16 Start Wait End... nohup: redirecting stderr to stdout ... Start Calc fps... tpu_id: 0 total_frames: 14400 avg_time: 19.3676 speed: 743.51

如上,可以看到总共16个线程,总的解码速度为743.51fps。可以保证16路1080P数据30fps的解码。

6.1.3 编码能力测试

使用1080P视频测试编码能力,需要指定输入的视频、使用的tpu id(SoC形态上,只能输入0)、测试线程数。

以1080P视频、0号TPU、12线程为例:

$ bash encode.sh video:1080p-3Mbps-h264.mkv tpu_id:0 thread_num:12 encode_type(h264_bm / hevc_bm):h264_bm nohup: redirecting stderr to stdout Start Wait End... ... Start Calc fps... tpu_id: 0 total_frames: 10800 avg_time: 29.5306 speed: 365.72

如上,可以看到总共12个线程,总的编码速度为365.72fps。可以保证12路1080P数据30fps的编码。

6.2 算力测试

6.2.1 数据准备

执行如下命令,下载算力测试的数据集和脚本文件

python3 -m dfss --url=open@sophgo.com:test/performance_testing/SE9/SE9.zip

6.2.2 环境配置

使用如下命令配置opencv-python环境

export PYTHONPATH=$PYTHONPATH:/opt/sophon/sophon-opencv-latest/opencv-python

使用如下指令下载测试所需依赖

sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-tqdm sudo pip3 install numpy==1.17.2

参考文档 SAIL编译 编译所需版本的sail whl,并将编译完成的whl拷贝至待测试设备,使用如下命令安装

pip3 install ./sophon*-.whl --force-reinstall

数据准备 环节下载的文件拷贝至待测试设备,使用如下命令解压并赋予脚本可执行权限

unzip SE9.zip sudo chmod +x auto.sh

6.2.3 执行测试

执行如下命令进行测试

./auto.sh

需要注意,默认测试循环次数较多,会运行较长时间。如果希望降低循环次数,可以对脚本中的loops参数进行修改

运行完成后,终端会打印测试结果