本文档主要介绍基于 Core-1684JD4 平台的开发方法。
OS 名称 | 内核版本 | 支持情况 | 维护情况 |
---|---|---|---|
Debian 9 | 4.9 | √ | 旧版本(不做主要维护) |
Ubuntu 20.04 | 5.4 | √ | 主要维护 |
当前版本 | |
---|---|
文档名称 | Core-1684JD4 开发手册 |
版本号 | V1.1.0 |
作者 | Firefly Team |
修改日期 | 2023-07-22 |
V1.0.0
更新时间:2022-10-01
更新内容:
初版发布
V1.1.0
更新时间:2023-07-22
更新内容:
添加 Ubuntu 20.0 系统的支持
Core-1684JD4 核心板采用 SOPHON 算能 AI 处理器 BM1684,可配置 12GB 大内存;INT8 算力高达 17.6TOPS,支持主流编程框架,工具链完备易用度高,算法迁移代价小;提供底板参考设计资料,用户可自主深度化定制;适用于视觉计算、边缘计算、通用算力服务、智慧交通、无人超市、无人机等多种 AI 计算场景。
Core-1684JD4 核心板正面:
Core-1684JD4 核心板反面:
AIO-1684JD4 主板由核心板 Core-1684JD4 底板 MB-JD4-BM1684 组成,AIO-1684JD4 板载 HDMI、mSATA、USB3.0、USB2.0、RS485、RS232 等丰富接口,可直接应用到 AI 边缘计算产品中。
产品参数:
收到开发板后就检查配件清单是否齐全:
带壳的整机,或核心板 Core-1684JD4 和底板 MB-JD4-BM1684 各一块及散热风扇
12V-5A 电源适配器一个
选购的配件有:
Firefly 串口模块
另外,在使用过程中,你可能需要以下配件:
显示设备
带 HDMI 接口的显示器或电视,及 HDMI 连接线
网络
100M/1000M 以太网线缆,有线路由器
WiFi 路由器
升级固件
TF 卡,4GB/Class 10 以上
调试
USB 转串口适配器
发货清单参考
如果不是整机,则按以下步骤安装好:
将核心板(主芯片朝上)的金手指对准底板卡槽插入到底,然后按下核心板,确保两侧的卡扣紧紧合上。
将散热风扇的电源接到 FAN 接口(电源接口附近),将散热垫放置在散热片中心位置,然后将风扇扣在主芯片上,确保散热垫整个盖住主芯片。
12V-5A 电源适配器接好电源线,电源线接在 100~220V 交流电源,另一头的电源接口插入开发板的电源接口。
开发板接电即自动开机。
网口 0 (靠近串口)设置了动态 IP,而网口1 (靠近 HDMI 口)设置了静态 IP 192.168.150.1,子网掩码 255.255.255.0,可以将 PC 设置成 192.168.150.2/24 来做初次访问。
PC 如果能成功 ping 通网口 IP 地址,接着就可以用 ssh 登录了,端口号为 22,用户名密码同样均为 linaro:
连上开发板后,可以对网络配置进行修改,方法跟 Debian/Ubuntu 桌面版类似,在 /etc/network/interfaces.d/ 目录下进行配置即可。
请看《串口调试》。
关机请尽量不要直接断开电源,要先运行 sudo poweroff,然后才断电,避免损坏文件系统数据。
另外,如果已经成功进入 Linux 系统,也可以长按电源键,系统会检测到并安全地关闭系统和开发板电源。
USB 转串口适配器,是 USB 转串口 TTL 适配器的简称。
AIO-1684JD4 可以使用 RS232 转 USB 接到 PC 机进行串口调试:
Core-1684JD4 使用以下串口参数:
波特率:115200
数据位:8
停止位:1
奇偶校验:无
流控:无
Windows 上一般用 putty 或 SecureCRT 软件。其中我们推荐使用 MobaXterm 免费版本。这是一款功能强大的终端软件,在这里介绍一下,其他软件的使用方法与之类似。
到这里下载 MobaXterm:
选择 session 为 Serial。
将 Serial port 修改为在设备管理器中找到的 COM 端口。
设置 Speed (bsp) 为 115200。
点击 OK 按钮。
在 Linux 上可以有多种选择:
minicom
picocom
kermit
篇幅关系,以下就介绍 minicom 的使用。
安装 minicom:
注意:Hardware Flow Control 和 Software Flow Control 都要设成 No,否则可能导致无法输入。
设置完成后回到上一菜单,选择 Save setup as dfl 即可保存为默认配置,以后将默认使用该配置。
如果要进行 U-Boot 或内核开发,需要使用 DEBUG 口进行调试,操作与 RS232 调试是一致的,需要注意的是适配器及其驱动问题。
网店上有许多 USB 转串口的适配器,按芯片来分,有以下几种:
串口 | 最高波特率 | 是否推荐 | 评价 | 购买链接 |
---|---|---|---|---|
CP2104 | 2Mbps | 推荐 | 支持高波特率通信,稳定性好耐用 | 点击购买 |
CH340 | 2Mbps | 不推荐 | 实际使用中发现,市面上很多 CH340 的实际波特率达不到 1.5 Mbps | |
PL2303 | 1.2Mbps | 不推荐 | 最高波特率达不到 1.5Mbps |
一般来说,采用 CH340 芯片的适配器,性能比较稳定,价格上贵一些。
注意: Core-1684JD4 默认的波特率是 115200。
USB 转串口适配器,有四个引脚:
3.3V 电源(NC),不需要连接
GND,串口的地线,接开发板串口的 GND 针
TXD,串口的输出线,接开发板串口的 TX 针
RXD,串口的输入线,接开发板串口的 RX 针
注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。
AIO-1684JD4 DEBUG 口:
Core-1684JD4
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 卡。
升级时间有点长,大概要六分钟左右,请耐心等待。
散热风扇一定要确保正确装上。
目前存在两套 Sophon SDK,其中 SophonSDK3 是属于旧版本的 SDK,而 Sophon SDK 属于新版本的 SDK。 两套 SDK 的主要区别在于:
区别 | Sophon SDK | SophonSDK3 |
---|---|---|
适配芯片 | BM1684、BM1684X | BM1684、BM1684X |
发布方式 | 将各个模块解耦,分别提供tar和deb包。 | 提供统一的tar开发包, 包含Compiler和Library。 |
驱动安装 | 安装sophon-driver_x.y.z_amd64.deb包 | 使用install_driver_{target}.sh安装 |
NNToolchain、Quantization-Tools | 提供tpu-nntc_vx.y.z--.tar.gz安装使用 | 包含于SophonSDK3 |
BMCV、BMRuntime、BMLib | 提供sophon-libsophon_x.x.x_amd64.deb包,安装后位于/opt/sophon/libsophon-current | 包含于SophonSDK3 |
多媒体库 | 提供sophon-mw-x.x.x_amd64.deb包,安装后位于/opt/sophon/sophon-ffmpeg-latest、/opt/sophon/sophon-opencv-latest、/opt/sophon/opencv-bmcpu-latest | 包含于SophonSDK3 |
pipeline例程 | 开源至github仓库,sophon-pipeline | https://github.com/sophon-ai-algo/sophon-inference |
算法例程 | 开源至github仓库(暂未发布) | https://github.com/sophon-ai-algo/examples/tree/2.7.0 |
建议优先使用 Ubuntu 20.0的固件以及新版本的 SDK 去做开发。
SophonSDK 是算能科技基于其自主研发的 AI 芯片所定制的深度学习 SDK,涵盖了神经网络推理阶段所需的模型优化、高效运行时支持等能力,为深度学习应用开发和部署提供易用、高效的全栈式解决方案。
注意:SophonSDK 是用于在 PC 上直接开发应用程序的,因此用户不会涉及到底层硬件与操作系统开发!
SophonSDK 由 Compiler 和 Library 组成:
Compiler 负责对第三方深度学习框架下训练得到的神经网络模型进行离线编译和优化,生成最终运行时需要的 BModel。目前支持 Caffe、Darknet、MXNet、ONNX、PyTorch、PaddlePaddle、TensorFlow 等。
Library 提供 BM-OpenCV、BM-FFmpeg、BMCV、TPURuntime、BMLib 等库,用来驱动 VPP、VPU、JPU、TPU 等硬件,完成视频图像编解码、图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。
Examples 提供了 SoC 和 x86 环境下的多个例子,供用户在深度学习应用开发过程中参考。这部分例程代码从 SDK 中移至 github 仓库开源:https://github.com/sophon-ai-algo/examples
SophonSDK 提供了两个文件,具体文件如下表所示:
文件名 | 备注 |
---|---|
sophonsdk_v3.0.0_20220716.zip | sophonsdk x86 平台开发包,支持 cmodel,pcie,soc 和 arm_pcie 模式 |
x86_sophonsdk3_ubuntu18.04_py37_dev_22.06_docker.zip | sophonsdk v3 编译开发用的 docker |
SophonSDK3 开发包:sophonsdk_v.zip,其中 x.y.z 为版本号。SophonSDK 将以目录映射的方式挂载到 Docker 容器内部供用户使用。SDK 分 Windows 版本和 Linux 版本。Windows 版本的 SDK 的使用方式请参见 SDK 包下的用户文档。
基于 x86 的 Ubuntu 开发 Docker:用于提供统一的 Docker 基础开发镜像以规避环境不一致带来的隐性问题,特别是对于初级用户,强烈建议使用 Docker 镜像作为开发环境进行模型转换和算法迁移工作。
注意:
SophonSDK 是一个支持多种平台的开发包。为了适应不同硬件平台和编译器的需求,开发者拿到 SDK 解压缩后,需要运行一个简单的安装脚本,此安装脚本会根据用户当前的主机环境调整安装适配的程序版本,如 ABI(应用程序二进制接口)版本。因此,不建议拷贝解压缩后的文件夹到其他机器使用,确有拷贝需求时,请拷贝 SDK 原始压缩包,然后重新解压缩再安装。
比如 CentOS 和 Ubuntu 下默认的 ABI 格式不一样,无法通用,拷贝后的文件执行时会报找不到符号的错误;
当使用 NTFS 格式的移动存储设备拷贝解压后的文件时,特别是在 Windows 下和 Linux 之间拷贝文件时,极有可能造成文件链接或 so 文件损坏。
SDK 解压后的根目录:在宿主机上时,它是解压文件时指定的存放文件的路径;在 docker 容器中时,若没有修改 SDK 下的创建容器脚本,该路径默认为/workspace。
解压后的 SDK 文件结构如下:
主要模块如下:
编解码库 Multimedia:支持 Sophon 设备硬件加速的 BM-OpenCV 和 BM-FFmpeg,支持 RTSP流、GB28181 流的解析、视频及图片的编解码。
张量运算及图像处理库 BMCV:色彩空间转换、尺度变换、仿射变换、投射变换、线性变换、画框、JPEG 编码、BASE64 编码、NMS、排序、特征匹配。
设备管理 BMLib:基础接口:设备 Handle 的管理,内存管理、数据搬运、API 的发送和同步、A53 使能等。
模型转换工具链 NNToolchain:支持 Caffe、Tensorflow、Pytorch、MXNet、 Darknet、Paddle Paddle、ONNX 等框架模型;提供 BMRuntime 用于模型推理;提供 BMProfile 工具用于性能分析。
模型量化工具 Quantization-Tools:原始模型 -> FP32 UModel -> INT8 UModel -> INT8 BModel;提供 auto-calib 自动量化工具。
算丰 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 尚不支持的算子。
算法并行加速编程库 OKKernel(TPUKernel):基于 Sophon 芯片底层原子操作接口的底层编程接口,需要熟悉硬件架构和指令集。
限于篇幅,这里主要介绍 Ubuntu 环境下的配置。
需要安装好 Docker 且开发用户帐号有 docker 权限,关于安装 Docker 环境,可参考《Docker 官方教程》。
下载 sophonsdk 与 docker 开发镜像并解压:
如果终端输出了 aarch64 编译的路径,则说明交叉编译工具链正确,开发环境是可以正常使用的。
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 : 可对模型进行性能分析和精度验证。
BM1684 芯片包含 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-1684JD4 开发板上有 2 个 LED 灯:
颜色 | 位置 | 标号 | 描述 |
---|---|---|---|
黄色 | 上 | DIY_LED | 用户控制 |
绿色 | 下 | WORK_LED | 上电打开 |
控制 LED 灯状态的命令示例(需要 root 权限):
AIO-1684JD4 开发板上有 HYM8563 的 RTC (Real Time Clock) 芯片,在开发板断电的情况下也能通过纽扣电池保持时钟的运行。
以下是常见的 RTC 操作:
AIO-1684JD4 支持 3 个 UART 设备:
设备名称 | 接口功能 | 波特率 | 是否全双工 | 电平 |
---|---|---|---|---|
/dev/ttyS0 | 调试串口 | 115200 | 是 | TTL |
/dev/ttyS1 | RS232 | 115200 | 是 | RS232 |
/dev/ttyS2 | RS485 | 9600 | 否 | RS485 |
AIO-1684JD4 开发板的 RS232 与 RS485 接口图如下:
用户可以根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:
(1) 连接硬件
将开发板RS485 的A、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-1684JD4 DEBUG 口:
产品:电源适配器(桌面式)
规格:美规/欧规
输入标准:AC100-240V 50/60Hz
输出标准:12V-5A
注意: Core-1684JD4 一体机正常工作需要电源 12V/5A,电流低于 5A 可能会因电流过小而异常重启,为了保证开发板的正常工作,请使用电压为 12V,电流为 5A 的电源,推荐使用 Firefly 官网电源配件。
整体分为两个步骤:
交叉编译 Qt 程序
设置 Qt 运行环境并运行程序
以系统为 Ubuntu18.04 的交叉编译主机为例,步骤如下:
通过 git clone 获取该 git 包
系统内新建并命名文件 se-build-server.yml,并填写以下内容:
下载交叉编译所需要的工具链:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。
在PC机系统上安装docker运行环境,安装docker 和 docker compose工具。各个平台有所不同,请在网上搜索相关公开资料安装,此处不再缀 述。
运行 docker(运行时会自动从docker hub 上下载镜像文件,所需时间同网速相关,请确保外网连接畅通):
运行之后,会自动在系统内创建 /data/your_working_dir 以及 /data/toolchains/ 文件夹 ,你也可以通过修改 yml 文件去生成其他路径的文件夹。
拷贝并解压 git 包以及交叉编译工具链到指定路径:
通过以上的步骤,可以获得可执行文件 SophUI ,可以通过 scp 的方式拷贝到 1684 设备中。
运行之前需要先编写脚本去设置环境变量,内容如下:
之后给予脚本运行权限,在接入 HDMI 显示器的前提下执行即可。
需要注意的是,如果1684 设备的系统是 Debian 系统,则需要另外导入 Qt 的运行库以及一些其他文件,否则运行会报错,而 Ubuntu 系统则不会有这些问题
通过 scp 的方式,从 PC 端导入,在 1684 设备上面执行:
如果 Qt 程序中还包含了字体,还需要在此处下载 字体文件,下载后,拷贝到 1684 设备的 /usr/lib/aarch64-linux-gnu/font 目录,如:/usr/lib/aarch64-linux-gnu/fonts/wqy-microhei.ttc
外壳标有 “1”,靠近 RS232/RS485 接口的网口,对应系统 eth0 网络接口,设置为 DHCP 模式。
外壳标有 “2”,靠近 HDMI 接口的网口,对应系统 eth1 网络接口,设置为静态地址模式:192.168.150.1/24。
用户名:linaro
密码:linaro
切换超级用户: sudo -s
有可能是电源电流不够,请使用电压为 12V,电流为 5A 以上的电源。
AIO-1684JD4 提供了丰富的接口,主要包括:
12V 电源接口
2 x USB 3.0
2 x USB 2.0
2 x 千兆以太网
WIFI 天线
HDMI 1.4
TF 卡槽
SIM 卡槽
风扇接口
Power 按键
Reset 按键
调试串口
工业级串口 (RS485, RS232, TTL)
Mini PCIe 接口(4G LTE)
M.2 接口(5G Module)
M.2 SATA 接口(SATA3.0 SSD)
具体如下图:
资源下载