本文档主要介绍基于 iCore-1684XQ 平台的开发方法。
OS 名称 | 内核版本 | 支持情况 | 维护情况 |
---|---|---|---|
Ubuntu 20.04 | 5.4 | √ | 主要维护 |
当前版本 | |
---|---|
文档名称 | iCore-1684XQ 开发手册 |
版本号 | V1.0.0 |
作者 | Firefly Team |
修改日期 | 2023-07-22 |
V1.0.0
更新时间:2023-07-22
更新内容:
初版发布
iCore-1684XQ 核心板采用 SOPHON 算能 AI 处理器 BM1684X,可配置 16GB 大内存以及 64GB eMMC ; 支持 32TOPS( INT8 ) 峰 值 算 力,16TFLOPS (FP16/BF16)算力,2TFLOPS(FP32)高精度算力;支持 32 路 H.265/H.264 1080p@25fps 视频解码; 核心板 BTB 接口,拥有PCIe3.0、GMAC、SDIO3.0、I2C、PWM、UART、GPIO接口,易集成入各类边缘嵌入式产品;支持主流编程框架,工具链完备易用度高,算法迁移代价小;提供底板参考设计资料,用户可自主深度化定制;高效适配市场上所有AI算法,为视觉计算、边缘计算、通用算力服务、人工智能、智慧工地/交通/课堂/超市/监控/安防等行业进行AI赋能。
iCore-1684XQ 核心板正面:
iCore-1684XQ 核心板反面:
AIO-1684XQ 主板由核心板 iCore-1684XQ 底板 SM7-SBASE-EN4 组成,AIO-1684XQ 板载 M.2(5G)、Mini PCIe、SATA3. 0、Gigabit Ethernet、USB3.0、RS485、RELAY、GPIO 等丰富接口。
产品参数:
收到开发板后就检查配件清单是否齐全:
带壳的整机,或核心板 iCore-1684XQ 和底板 SM7-SBASE-EN4 各一块及散热风扇
12V-5A 电源适配器一个
选购的配件有:
Firefly 串口模块
另外,在使用过程中,你可能需要以下配件:
显示设备
带 HDMI 接口的显示器或电视,及 HDMI 连接线
网络
100M/1000M 以太网线缆,有线路由器
WiFi 路由器
升级固件
TF 卡,4GB/Class 10 以上
调试
USB 转串口适配器
网口 0 (位于上层)设置了动态 IP,可通过 DHCP 自动获取 IP。
而网口1 (位于下层)设置了静态 IP 192.168.150.1,子网掩码 255.255.255.0,可以将 PC 设置成 192.168.150.2/24 来做初次访问。
PC 如果能成功 ping 通网口 IP 地址,接着就可以用 ssh 登录了,端口号为 22,用户名密码同样均为 linaro:
连上开发板后,可以对网络配置进行修改,方法跟 Debian/Ubuntu 桌面版类似,在 /etc/netplan/ 目录下进行配置即可。
请看《串口调试》。
关机请尽量不要直接断开电源,要先运行 sudo poweroff,然后才断电,避免损坏文件系统数据。
另外,如果已经成功进入 Linux 系统,也可以长按电源键,系统会检测到并安全地关闭系统和开发板电源。
USB 转串口适配器,是 USB 转串口 TTL 适配器的简称。
如果要进行 U-Boot 或内核开发,需要使用 DEBUG 口进行调试,操作与 RS232 调试是一致的,需要注意的是适配器及其驱动问题。
网店上有许多 USB 转串口的适配器,按芯片来分,有以下几种:
串口 | 最高波特率 | 是否推荐 | 评价 | 购买链接 |
CP2104 | 2Mbps | 推荐 | 支持高波特率通信,稳定性好耐用 | 点击购买 |
CH340 | 2Mbps | 不推荐 | 实际使用中发现,市面上很多 CH340 的实际波特率达不到 1.5 Mbps | |
PL2303 | 1.2Mbps | 不推荐 | 最高波特率达不到 1.5Mbps |
一般来说,采用 CH340 芯片的适配器,性能比较稳定,价格上贵一些。
注意: iCore-1684XQ 默认的波特率是 115200。
USB 转串口适配器,有四个引脚:
3.3V 电源(NC),不需要连接
GND,串口的地线,接开发板串口的 GND 针
TXD,串口的输出线,接开发板串口的 TX 针
RXD,串口的输入线,接开发板串口的 RX 针
注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。
AIO-1684XQ DEBUG 口:
iCore-1684XQ
PC 机
USB 读卡器
TF 卡(建议 Class10 或更高规格, 并根据固件大小选择 8/16/32 GB 容量)
升级固件(请到下载中心下载)
格式化 TF 卡,使用 MBR 分区 和 FAT32 格式。
将升级固件压缩包里的全部文件直接解压到 TF 卡上(TF 卡内无文件夹)。
TF 卡插入开发板的 TF 卡卡槽,然后上电开机。
等待机器升级完成后,取下 TF 卡,断开电源。
重新上电开机,完成升级的全部操作步骤。
升级过程中,LED 灯会短暂闪烁,表示升级正在进行。
如果升级成功,绿色 LED 灯会一直闪烁。
如果升级失败,所有 LED 灯都会灭掉。
注意事项:
TF 卡如果超过 32GB,可能因 Windows 系统的限制而无法格式化成 FAT32 格式,故最好选择 32GB 以下大小的 TF 卡。
升级时间有点长,大概要六分钟左右,请耐心等待。
散热风扇一定要确保正确装上。
注意:
仅 1684X 的机器需要更新 MCU 固件,1684 的机器不需要!
升/降级 MCU 固件后才可升/降级 SOC 固件。
如果 AIO-1684X-JD4 (SE7) 或 ICORE-1684XQ (SM7) 当前的固件版本是 20230501,需要降级为 20230301 或 20221201 的旧固件,就需要降级 MCU 固件,反之则需要升级 MCU 固件。MCU 固件和 SOC 固件请到下载中心获取。
在板子上运行以下命令:
此方法适合普通用户。
升级需下载 Public-1684-Ubuntu2004-Sdk230501-Build20230915.zip,降级需下载 EC-A1684XJD4-Ubuntu2004-20230317.zip,按照使用 TF 卡升级系统固件的说明去制作 TF 升级卡,完成 SOC 固件的升级。
Sophon SDK是算能科技基于其自主研发的 AI 芯片所定制的深度学习 SDK,涵盖了神经网络推理阶段所需的模型优化、高效运行支持等能力,为深度学习应用开发和部署提供易用、高效的全栈式解决方案。
Sophon SDK既兼容第三代BM1684芯片,也支持第四代BM1684X芯片。
Sophon SDK 包括基础工具包与高阶工具包。
包括:
tpu-nntc 负责对第三方深度学习框架下训练得到的神经网络模型进行离线编译和优化,生成最终运行时需要的BModel。目前支持Caffe、Darknet、MXNet、ONNX、PyTorch、PaddlePaddle、TensorFlow等。
libsophon 提供BMCV、BMRuntime、BMLib等库,用来驱动VPP、TPU等硬件,完成图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。
sophon-mw 封装了BM-OpenCV、BM-FFmpeg等库,用来驱动VPU、JPU等硬件,支持RTSP流、GB28181流的解析,视频图像编解码加速等,供用户进行深度学习应用开发。
sophon-sail 提供了支持Python/C 的高级接口,是对BMRuntime、BMCV、BMDecoder、BMLib等底层库接口的封装,供用户进行深度学习应用开发。
包括:
tpu-mlir 为TPU编译器工程提供一套完整的工具链,可以将不同框架下预训练的神经网络,转化为可以在算能TPU上高效运行的二进制文件BModel。目前直接支持的框架包括tflite、onnx和Caffe。
tpu-perf 为模型性能和精度验证提供了一套完整工具包。
tpu-kernel 是芯片底层开发接口,既可以调用专用指令实现深度学习业务逻辑的加速,又可以调用通用指令实现客制的各种算法加速。
../_images/new_SophonSDK.png
Sophon SDK 提供了十一个文件夹模块,具体如下表所示:
文件夹名 | 备注 |
---|---|
libsophon | 支持sophon设备硬件加速的图像处理、张量运算、模型推理等库 |
sophon-mw | 支持sophon设备硬件加速的多媒体库 |
tpu-kernel | 底层开发接口 |
tpu-nntc | TPU编译器工具链 |
tpu-mlir | TPU编译器工具链 |
tpu-perf | 模型性能和精度验证工具包 |
sophon-pipeline | 基于pipeline的高性能推理框架 |
sophon-img | SoC模式安装包 |
sophon-demo | 针对单模型或者场景的综合例程 |
sophon-sail | 对底层接口进行C /Python API封装的接口库 |
sophon-rpc | 在PCIe卡产品上将一些计算任务offload到卡上的ARM CPU 上进行 |
注:sophon-sail 的安装包可从下载中心获取。
解压后的 SDK 文件结构如下:
硬件驱动及运行时库 LIBSOPHON : 包含BMCV、BMRuntime、BMLib等库,用来驱动VPP、TPU等硬件,完成图像处理、张量运算、模型推理等操作。
多媒体库 SOPHON-MW : 支持Sophon设备硬件加速的BM-OpenCV和BM-FFmpeg,支持RTSP流、GB28181流的解析,视频及图片的编解码。
模型编译量化工具链 TPU-NNTC : 支持Caffe、Tensorflow、Pytorch、MXNet、 Darknet、Paddle Paddle、ONNX等框架模型的模型转换;支持模型量化:原始模型 -> FP32 UModel -> INT8 UModel -> INT8 BModel, 同时提供 auto-cali 自动量化工具。
张量运算及图像处理库 BMCV : 色彩空间转换、尺度变换、仿射变换、投射变换、线性变换、画框、JPEG编码、BASE64编码、NMS、排序、特征匹配。
设备管理 BMLib : 基础接口:设备Handle的管理,内存管理、数据搬运、API的发送和同步、A53使能等
算丰AI加速库 SAIL : 支持Python/C 的高级接口,是对BMRuntime、BMCV、BMDecoder等底层库接口的封装。
自定义算子高级编程库 BMLang:基于C 的面向Sophon TPU的高级编程库,与硬件信息解耦,无需了解硬件架构,使用张量数据(bmlang::Tensor)和计算操作(bmlang::Operator)编写代码,最后使用bmlang::compile或bmlang::compile_with_check来生成TPU可以运行的BModel;此外也支持使用BM168X中的arm cpu来实现TPU尚不支持的算子。
算法并行加速编程库 TPUKernel:基于Sophon芯片底层原子操作接口的底层编程接口,需要熟悉硬件架构和指令集。
模型性能和精度验证工具 TPUPerf : 可对模型进行性能分析和精度验证。
BM1684X 芯片包含 3 组 GPIO 控制器,每个控制 32 根 GPIO,与 Linux 的设备节点对应如下:
GPIO控制器 | Linux设备节点 | GPIO 物理编号 | GPIO 逻辑编号 |
---|---|---|---|
#0 | /sys/class/gpio/gpiochip480 | 0到31 | 480到511 |
#1 | /sys/class/gpio/gpiochip448 | 32到63 | 448到479 |
#2 | /sys/class/gpio/gpiochip416 | 64到95 | 416到447 |
比如要操作 GPIO6,则需要:
有以下注意事项:
如果 GPIO 已经被其他驱动申请了的话,是无法导出 (export) 成功的,也就无法进行后续的读写操作。
同时 AIO-1684XQ 通过双层的接线端子预先注册了 4 个 GPIO 可供用户直接操作。
例如操作 GPIO5 :
AIO-1684XQ 开发板上有 2 个 LED 灯:
颜色 | 位置 | 标号 | 描述 |
---|---|---|---|
黄色 | 右 | DIY_LED | 用户控制 |
绿色 | 左(靠近电源口) | WORK_LED | 上电打开 |
控制 LED 灯状态的命令示例(需要 root 权限):
AIO-1684XQ 开发板上有 2 个 RELAY 控制单元:
每个 RELAY 单元的参数为:
AIO-1684XQ 开发板上有 1 个 SATA3.0 接口:
硬件连接好 SATA 硬盘之后,待系统上电后,通过控制以下端口做到 SATA 设备的动态识别以及断开(需要 root 权限):
AIO-1684XQ 开发板上有 DS1307 的 RTC (Real Time Clock) 芯片,可通过该芯片去设置系统时钟。
以下是常见的 RTC 操作:
AIO-1684XQ 支持 3 个 UART 设备:
设备名称 | 接口功能 | 波特率 | 是否全双工 | 电平 |
---|---|---|---|---|
/dev/ttyS0 | 调试串口 | 115200 | 是 | TTL |
/dev/ttyS1 | RS485 | 9600 | 否 | RS485 |
/dev/ttyS2 | RS485 | 9600 | 否 | RS485 |
AIO-1684XQ 开发板的 RS485 接口图如下:
用户可以根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:
(1) 连接硬件
将开发板的 RS485B-A、RS485B-B 以及 GND 引脚分别和主机串口适配器(USB 转 485 转串口模块)的 A、B、GND 引脚相连。
(2) 打开主机的串口终端
在终端打开 kermit,并设置波特率:
然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。
品牌:Firefly
尺寸:25mm*15.5mm
USB 转串口适配器,有四个引脚:
3.3V 电源(NC),不需要连接
GND,串口的地线,接开发板串口的 GND 针
TXD,串口的输出线,接开发板串口的 TX 针
RXD,串口的输入线,接开发板串口的 RX 针
注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。
AIO-1684XQ DEBUG 口:
产品:电源适配器(桌面式)
规格:美规/欧规
输入标准:AC100-240V 50/60Hz
输出标准:12V-5A
注意: iCore-1684XQ 一体机正常工作需要电源 12V/5A,电流低于 5A 可能会因电流过小而异常重启,为了保证开发板的正常工作,请使用电压为 12V,电流为 5A 的电源,推荐使用 Firefly 官网电源配件。
如上图所示,在 4 个 USB3.0 中,位于左上角的 USB3.0 接口是不支持 USB2.0 设备的,而其余 3 个 USB 接口则支持 USB2.0 设备的。
在硬件上:
SATA3.0 接口以及 USB3.0 由同一路 PCIE0 扩展出来
5G 的M.2 座子由 PCIE1 扩展出来
而 PCIE0 以及 PCIE1 皆由硬件内部的 RC_PCIEX 扩展出来,但是两者不能同时使用,不是 HUB 的概念。
所以当你在使用 USB3.0 或者 SATA 硬盘的时候,5G 是无法使用的。
同理但你在使用 5G 的时候, USB3.0 以及 SATA 硬盘也是无法使用的。
网口 0 (位于上层)设置了动态 IP,可通过 DHCP 自动获取 IP。
而网口1 (位于下层)设置了静态 IP 192.168.150.1,子网掩码 255.255.255.0,可以将 PC 设置成 192.168.150.2/24 来做初次访问。
PC 如果能成功 ping 通网口 IP 地址,接着就可以用 ssh 登录了,端口号为 22,用户名密码同样均为 linaro:
连上开发板后,可以对网络配置进行修改,方法跟 Debian/Ubuntu 桌面版类似,在 /etc/netplan/ 目录下进行配置即可。
用户名:linaro
密码:linaro
切换超级用户: sudo -s
有可能是电源电流不够,请使用电压为 12V,电流为 5A 以上的电源。
AIO-1684XQ 提供了丰富的接口,主要包括:
12V 电源接口(5.5*2.5mm)
4 x USB 3.0
2 x 千兆以太网
TF 卡槽
SIM 卡槽 x 3
风扇接口
Power 按键
Reset 按键
调试串口(即图中 Debug 口)
工业级串口 (RS485, TTL)
Mini PCIe 接口(4G LTE)
M.2 接口(5G Module)
SATA 接口(SATA3.0 HD)
具体如下图:
天线规格:胶棒天线 4GLTE-5db;圆头