前言
上手教程
初次使用
串口调试
更新固件
Linux 开发
接口使用
ADC使用
GPIO使用
DISPLAY 使用
LED 使用
STORAGE 使用
CAMERA 使用
RTC 使用
PWM 使用
UART 使用
CAN 使用
NETWORK 使用
配件
串口模块
通信模组
显示屏模组
12V 电源适配器
常见问题解答
硬件资料
资源下载
Core-1688JD4
产品规格书

前言

概述

本文档主要介绍基于 Core-1688JD4 平台的开发方法。

OS 版本

OS 名称 内核版本 支持情况 维护情况
Ubuntu 20.04 5.10 主要维护

文档当前版本

  当前版本
文档名称 Core-1688JD4 开发手册
版本号 V1.0.0
作者 Firefly Team

修订记录

  • V1.0.0

    • 更新时间:2024-05-23

    • 更新内容:

      • Core-1688JD4 初版发布

上手教程

初次使用

产品概述

Core-1688JD4 核心板,采用算能智算芯片 BM1688,是面向 AI 推理、计算机视觉等高集成视觉算力芯片。可集成于智算服务器、边缘智算盒、工控机、专业智能网络摄像机、AIOT 等多种类型产品。高效适配市场上所有 AI 算法,实现图片分类、目标检测、实例分割、语义分割、行为分析、文字识别、自然语言处理、语音识别、语音合成、搜索推荐等应用,为各个行业进行 AI 赋能;并集成图像处理硬件 : 支持 HDR 宽动态、3D 降噪、3A、去雾等多种图像增强及鱼眼展开、影像拼接、双目融合等计算机视觉算法 ,为客户提供专业级的 视频图像质量和硬件图像算法加速。

 

AIO-1688JD4 主板由核心板 Core-1688JD4 底板 MB-JD4-BM1688 组成,AIO-1688JD4 板载 HDMI2.0、PCIE 3.0 x 1、USB3.0 x 2 、RS485、RS232、CAN、CSI 以及 DSI 等丰富接口,可直接应用到 AI 边缘计算产品中。

产品参数请查看:规格书

配件清单

在使用过程中,你可能需要以下配件:

  • 显示设备

    • 带 HDMI 接口的显示器或电视,及 HDMI 连接线

  • 网络

    • 100M/1000M 以太网线缆,有线路由器

    • WiFi 路由器

  • 升级固件

    • TF 卡,8GB/Class 10 以上

  • 调试

    • USB 转串口适配器(Firefly UART 串口模块)

    • Type-C (可做 Type-C 串口)

开机

  • 如果不是整机,则按以下步骤安装好:

    • 将核心板(主芯片朝上)的金手指对准底板卡槽插入到底,然后按下核心板,确保两侧的卡扣紧紧合上。

    • 将散热风扇的电源接到 FAN 接口(UART 串口附近),将散热垫放置在散热片中心位置,然后将风扇扣在主芯片上,确保散热垫整个盖住主芯片。

  • 12V-5A 电源适配器接好电源线,电源线接在 100~220V 交流电源,另一头的电源接口插入开发板的电源接口。

  • 留意电源拨码(靠近 FAN 接口)开关的状态

    • ON:表示插入电源直接开机

    • 1:表示插入电源后,需要短按 Power 按键进行开机

_images/power_switch.png

网络远程登录

网口 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:


连上开发板后,可以对网络配置进行修改,在 /etc/netplan/ 目录下进行配置即可。

串口终端访问

请看《串口调试》

关机

关机请尽量不要直接断开电源,要先运行 sudo poweroff,然后才断电,避免损坏文件系统数据。

另外,如果已经成功进入 Linux 系统,也可以长按电源键,系统会检测到并安全地关闭系统和开发板电源。

串口调试

使用 Type-C 串口调试

AIO-1688JD4 可以使用 Type-C 线连接到 PC 机进行串口调试:

_images/type-c_connection.png

请注意,如果需要开启 Type-C 的 debug 口功能,需要把相应的拨码开关拨到指定的位置:

_images/debug_switch.png

  • ON:表示使能 Type-C 串口

  • 1:表示用作普通的 USB2.0(仅做 Host)接口

串口参数配置

Core-1688JD4 使用以下串口参数:

  • 波特率:115200

  • 数据位:8

  • 停止位:1

  • 奇偶校验:无

  • 流控:无

Windows 上使用串口调试

Windows 上一般用 putty 或 SecureCRT 软件。其中我们推荐使用 MobaXterm 免费版本。这是一款功能强大的终端软件,在这里介绍一下,其他软件的使用方法与之类似。

到这里下载 MobaXterm

  1. 选择 sessionSerial

  2. Serial port 修改为在设备管理器中找到的 COM 端口。

  3. 设置 Speed (bsp)115200

  4. 点击 OK 按钮。

_images/debug_set_MobaXterm1.PNG _images/debug_set_MobaXterm2.PNG

Linux 上使用串口调试

在 Linux 上可以有多种选择:

  • minicom

  • picocom

  • kermit

篇幅关系,以下就介绍 minicom 的使用。

安装 minicom:

使用 DEBUG 口调试

如果要进行 U-Boot 或内核开发,需要使用 DEBUG 口进行调试,操作与 Type-C 调试是一致的,需要注意的是适配器及其驱动问题。

选购适配器

网店上有许多 USB 转串口的适配器,按芯片来分,有以下几种:

串口 最高波特率 是否推荐 评价 购买链接
CP2104 2Mbps 推荐 支持高波特率通信,稳定性好耐用 点击购买
CH340 2Mbps 不推荐 实际使用中发现,市面上很多 CH340 的实际波特率达不到 1.5 Mbps  
PL2303 1.2Mbps 不推荐 最高波特率达不到 1.5Mbps  

一般来说,采用 CH340 芯片的适配器,性能比较稳定,价格上贵一些。

注意: Core-1688JD4 默认的波特率是 115200。

硬件连接

USB 转串口适配器,有四个引脚:

  • 3.3V 电源(NC),不需要连接

  • GND,串口的地线,接开发板串口的 GND 针

  • TXD,串口的输出线,接开发板串口的 TX 针

  • RXD,串口的输入线,接开发板串口的 RX 针

注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。

AIO-1688JD4 DEBUG 口:

_images/debug_connection.png

驱动安装

Windows 系统需要安装适配器驱动(Linux 则不需要):

下载驱动并安装:

如果在 Windows 系统上安装官网的 CP210X 驱动,使用 PUTTY 或 SecureCRT 等工具设置串口波特率为 115200,如果出现设置不了或无效的问题,可以下载旧版本驱动

插入适配器后,系统会提示发现新硬件,并初始化,之后可以在设备管理器找到对应的 COM 口:

_images/debug_find_com.jpg

更新固件

使用 TF 卡升级系统固件

准备工作

  • Core-1688JD4。

  • PC 机。

  • USB 读卡器。

  • TF 卡,建议 Class10 或更高规格, 并根据固件大小选择 8/16/32 GB 容量。

  • 升级固件, 请到下载中心下载。

升级步骤

  1. TF 卡使用 MBR 分区,并格式化成 FAT32 格式。

  2. 将升级固件文件(zip 压缩格式)里的全部文件解压到 TF 卡上。

  3. TF 卡插入开发板的 TF 卡卡槽,然后上电开机。

  4. 升级过程中,LED 灯会短暂闪烁,表示升级正在进行。

  5. 如果升级成功,绿色 LED 灯会一直闪烁。

  6. 如果升级失败,所有 LED 灯都会灭掉。

注意事项:

  • TF 卡如果超过 32GB,可能因 Windows 系统的限制而无法格式化成 FAT32 格式,故最好选择 32GB 以下大小的 TF 卡。

  • 升级时间有点长,大概要六分钟左右,请耐心等待。

  • 散热风扇一定要确保正确装上。

 

Linux 开发

Sophon SDK 开发

BM1688 的 SDK 开发依赖于 SOPHONSDK(一站式SDK),其中包含了模型转换、模型量化、算法移植等相关模块。提供了包括文档、视频、论坛、开源仓库等一系列资料帮助用户进行算法移植和开发工作。

目前系统固件适配 SOPHONSDK 的版本为 v1.7,参考以下链接即可获取 SDK 等相关的开发内容:

接口使用

ADC 使用

AIO-1688JD4 开发板上并没有引出外部的 ADC, 但 Core-1688JD4 的金手指引出了多路 ADC, 在控制台下运行 ADC 读写命令或者自行在内核态或者用户态编写 ADC 读写程序,就 可以对 ADC 进行输入输出操作。

用户层通过访问 IIO 接口来实现 5 通道,12-bit ADC 的触发、采样等操作。

  • 参考电压为 1.5v ref

  • adc 引脚和 sysfs 文件对应关系如下:

    • adc1 对应 sysfs 文件为 in_voltage1_raw

    • adc2 对应 sysfs 文件为 in_voltage2_raw

    • adc3 对应 sysfs 文件为 in_voltage3_raw

    • sar0 对应 sysfs 文件为 in_voltage4_raw

    • sar1 对应 sysfs 文件为 in_voltage5_raw

  • 电压值计算公式:vol = val * 1500 / 4096,单位:mV

操作示例

ADC 操作命令示例

  1. 指定 ADC 通道 1~5, 此例为 ADC1:

GPIO 使用

BM1688 芯片包含 7 组 GPIO 控制器,每个控制 32 根 GPIO,与 Linux 的设备节点对应如下:

GPIO控制器 Linux设备节点 GPIO 物理编号 GPIO 逻辑编号
#porta /sys/class/gpio/gpiochip464 0到31 464到495
#portb /sys/class/gpio/gpiochip432 32到63 432到463
#portc /sys/class/gpio/gpiochip400 64到95 400到431
#portd /sys/class/gpio/gpiochip368 96到127 368到399
#porte /sys/class/gpio/gpiochip336 128到159 336到367
#portf /sys/class/gpio/gpiochip304 160到191 304到335
#portg(RTCSYS_GPIO) /sys/class/gpio/gpiochip272 0到31 272到303

其中 AIO-1688JD4 支持扩展出一组 gpio 接口(I2C 扩展 GPIO):

GPIO控制器 Linux设备节点 GPIO 物理编号 GPIO 逻辑编号
#portx /sys/class/gpio/gpiochip496 0到15 496到511

 

有以下注意事项:

  • 如果 GPIO 已经被其他驱动申请了的话,是无法导出 (export) 成功的,也就无法进行后续的读写操作。

DISPLAY 使用

Core-1688JD4 引出了一路 HDMI 接口(支持 4K@60fps)以及 MIPS DSI 接口(最大输出能力 1440P (2560 * 1440)@60fps,接口位置如图所示

需要注意的是, /mnt/system/ko/soph_drm.ko 为整个显示框架的驱动,诸如 HDMI以及 MIPI DSI 等模块驱动都是打包进这个驱动里面的。

HDMI

Core-1688JD4 在开机之后,没有内置桌面环境,只跑一个显示程序:


MIPI DSI

目前系统只能存在一个显示,当你接着 HDMI 的时候,MIPI DSI 默认没有输出。 但你拔掉 HDMI ,你所接入的 MIPI 显示模组会以播放彩条的形式进行显示。

目前已适配 Firelfy 的 DM-M10R800 V2 显示模组。

AIO-1688JD4 开发板上有 2 个 LED 灯(如图所示 ):

颜色 位置 标号 描述
黄色 DIY_LED 用户控制
绿色 WORK_LED 上电打开

控制 LED 灯状态的命令示例(需要 root 权限):

 

AIO-1688JD4 开发板上有 1 个 PCIE3.0 x 1 接口,1 个 SATA 3.0 接口以及一个 TF-Card 接口。

接口位置如图所示

PCIE 的使用

PCIE3.0 接口(该接口与 SATA 3.0 接口复用,默认系统使用 PCIE 接口)默认支持接 NVME SSD 2242/2260/2280 ,在系统默认的名字为 nvme0n1

SATA 的使用

如果想切换使用 SATA3.0 接口,需要做软件上的配置(bm1688_1688jd4.dtsi):


CAMERA 使用

Core-1688JD4 引出 3 个 MIPI CSI 接口(14 lanes / 22 lanes),单一 sensor 最大支持 8K@15fps 线性输入或 12M@60fps HDR 输入。

MIPI CSI

接口位置如图所示

使用命令抓图

以 Firelfy 的 CAM-8MS1M摄像头为例(连接 MIPI CSI0): 进入系统之后,通过 sudo -s获取 root 权限,并执行以下抓图命令。

insmod /mnt/system/ko/v4l2_xc7160.ko # 安装驱动
systemctl stop SophonHDMI.service # 关闭 HDMI 的显示界面
/opt/sophon/sophon-soc-libisp_1.0.0/bin/ispv4l2_ut 5 # 抓取 v4l2 流
/opt/sophon/sophon-ffmpeg-latest/bin/ffmpeg -s 1920x1080 -pix_fmt yuyv422 -i v4l2_video0_7.yuv -hide_banner -loglevel error  -vf format=rgb24 -c:v rawvideo -f rawvideo -vframes 1 -  | sudo dd of=/dev/fb0 bs=1920x1080x3 # 这里假设你接的 HDMI 屏幕是 1920 x 1080 分辨率的
systemctl restart SophonHDMI.service  # 恢复 HDMI 的显示界面

目前系统默认只打开了 MIPI CSI0,如果需要使用 MIPI CSI1/2 ,则需要修改 SDK 配置以及 ko 文件。

RTC 使用

AIO-1688JD4 开发板上有 TT8563RH 的 RTC (Real Time Clock) 芯片,可通过该芯片去设置系统时钟。

以下是常见的 RTC 操作:


 

PWM 使用

AIO-1688JD4 开发板上对外只引出一个 PWM(FAN), 但 Core-1688JD4 的金手指引出了多路 PWM, 在控制台下运行 PMW 读写命令或者自行在内核态或者用户态编写 PWM 读写程序, 就可以对 PWM 进行输入输出操作;

  • PWM 操作在定频时钟 100MHz,共有 20 路,每路可单独控制;

  • BM1688共有 5 个 PWM IP (pwmchip0/ pwmchip4/ pwmchip8/ pwmchip12/ pwmchip16), 各 IP 控制 4 路讯号, 总共可控制 20 路讯号;


操作示例

PWM 操作命令示例:

通过文件 IO 操作程序示例:

UART 使用

AIO-1688JD4 串口位置如图所示

简介

AIO-1688JD4 支持 3 个 UART 设备:

设备名称 接口功能 波特率 是否全双工 电平
/dev/ttyS0 调试串口(Type-C / 4 Pin) 115200 TTL
/dev/ttyS1 RS232 115200 RS232
/dev/ttyS4 RS485 9600 RS485

RS485 调试方法

用户可以根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:

(1) 连接硬件 将开发板RS485 的A、B、GND 引脚分别和主机串口适配器(USB 转 485 转串口模块)的 A、B、GND 引脚相连。

(2) 打开主机的串口终端

在终端打开 kermit,并设置波特率:


然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。

RS232 调试方法

测试方法与 RS485 的步骤是类似的,只需要注意设备名称与波特率即可。唯一不同的是, RS232 不需要去做发送和接收的开关切换。

CAN 使用

CAN 简介

CAN(Controller Area Network)总线,即控制器局域网总线,是一种有效支持分布式控制或实时控制的串行通信网络。CAN总线是一种在汽车上广泛采用的总线协议,被设计作为汽车环境中的微控制器通讯。 如果想了解更多的内容可以参考CAN应用报告

硬件连接

AIO-1688JD4 开发板的 CAN 接口位置如图所示

由于只有一个 CAN,所以默认在内核中,第一个创建的设备为 can0

CAN 通信测试

使用 candump 和 cansend 工具进行收发报文测试即可,将工具push到/system/bin/目录下执行。工具包含在SDK中,也可以在 官方 或者 github 下载。


FAQS

总结调试过程中遇到的几个问题及解决方法:

报文发送后很久才接收到,或者接收不到。

检查总线 CAN_H 和 CAN_L, 杜邦线是否松动或者接反。

NETWORK 使用

Core-1688JD4 一共有 三种网络:

  • 蜂窝网络(4G/5G)

  • 无线网络(WIFI/BT)

  • 千兆网口

Core-1688JD4 默认使能了这三种网络,取决于用户的使用,各接口位置如图所示

蜂窝网络

Core-1688JD4 只打开了 4G 的接口(因为 5G 网络硬件上和 USB3 座子有冲突,需要修改硬件去打开 5G 接口)。假若你做了修改,在硬件支持了 5G,也只能在 4G / 5G 接口之间去选择其中一个去使用。 接入步骤:

  • SIM 卡

  • EC20 /RM500U-CN

  • 设备上电

在系统中,模块的网卡名字为 wwan0

无线网络

Core-1688JD4 的无线网络接口为 PCIE M.2 接口。目前系统已编译并内置好的 ko 文件有:


用以支持相关型号的 WIFI 以及蓝牙。其余型号的模块需要通过 SDK 进行编译生成。 驱动加载后,默认的网卡名字为 wlan0

千兆网口

系统采取 netplan 去管理配置规则,默认靠近 HDMI 的网口(eth1)为 192.168.150.1 网段,用以 ssh 登录,账号密码均为 linaro 。而靠近 USB3 座子的网口(eth0)使用 DHCP 来获取 IP。如想修改网卡配置规则,可参考设备端的 /etc/netplan/ 文件。

配件

串口模块

USB转TTL串口模块

产品参数

  • 品牌:Firefly

  • 尺寸:25mm*15.5mm

实物图

_images/module_serial_list.png

连接方法

USB 转串口适配器,有四个引脚:

  • 3.3V 电源(NC),不需要连接

  • GND,串口的地线,接开发板串口的 GND 针

  • TXD,串口的输出线,接开发板串口的 TX 针

  • RXD,串口的输入线,接开发板串口的 RX 针

注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。

AIO-1688JD4 DEBUG 口:

_images/debug_connection.png

通信模组

Firefly 支持的通信模组如下:

显示屏模组

Firefly 支持的显示屏如下:

12V 电源适配器

产品参数

  • 产品:电源适配器(桌面式)

  • 规格:美规/欧规

  • 输入标准:AC100-240V 50/60Hz

  • 输出标准:12V-5A

注意: Core-1688JD4 一体机正常工作需要电源 12V/5A,电流低于 5A 可能会因电流过小而异常重启,为了保证开发板的正常工作,请使用电压为 12V,电流为 5A 的电源,推荐使用 Firefly 官网电源配件。

实物图

_images/module_power_adapter3.png

常见问题解答

FAQs

SDK Release

目前可供用户开发的 SDK 在整理中,预计一周后发布。

系统默认的用户名和密码是什么?

  • 用户名:linaro

  • 密码:linaro

  • 切换超级用户: sudo -s

开机异常并循环重启怎么办?

有可能是电源电流不够,请使用电压为 12V,电流为 5A 以上的电源。

硬件资料

接口定义

整机接口定义

AIO-1688JD4 提供了丰富的接口,主要包括:

  • 12V 电源接口

  • 2 x USB 3.0

  • 2 x 千兆以太网

  • WIFI 天线

  • 风扇接口

  • Power 按键

  • Reset 按键

  • Recovery 按键

  • 调试串口(TTL)

  • CAN

  • 工业级串口 (RS485, RS232 )

  • Type-C (USB2.0,调试串口)

  • SIM 卡槽

  • Mini PCIe 接口(4G LTE)

  • M.2 接口(5G Module)

  • NVME 接口(PCIE3.0 x 1)

  • SATA 3.0

  • TF 卡槽

  • 耳机

  • RTC

  • MIPI CSI

  • MIPI DSI

  • HDMI 2.0

具体如下图:

资源下载

资料下载

电话咨询
微信咨询
留言