本文档主要介绍基于 Core-1688JD4 平台的开发方法。
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 按键进行开机
网口 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 系统,也可以长按电源键,系统会检测到并安全地关闭系统和开发板电源。
AIO-1688JD4 可以使用 Type-C 线连接到 PC 机进行串口调试:
请注意,如果需要开启 Type-C 的 debug 口功能,需要把相应的拨码开关拨到指定的位置:
ON:表示使能 Type-C 串口
1:表示用作普通的 USB2.0(仅做 Host)接口
Core-1688JD4 使用以下串口参数:
波特率:115200
数据位:8
停止位:1
奇偶校验:无
流控:无
Windows 上一般用 putty 或 SecureCRT 软件。其中我们推荐使用 MobaXterm 免费版本。这是一款功能强大的终端软件,在这里介绍一下,其他软件的使用方法与之类似。
到这里下载 MobaXterm:
选择 session 为 Serial。
将 Serial port 修改为在设备管理器中找到的 COM 端口。
设置 Speed (bsp) 为 115200。
点击 OK 按钮。
在 Linux 上可以有多种选择:
minicom
picocom
kermit
篇幅关系,以下就介绍 minicom 的使用。
安装 minicom:
如果要进行 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 口:
Core-1688JD4。
PC 机。
USB 读卡器。
TF 卡,建议 Class10 或更高规格, 并根据固件大小选择 8/16/32 GB 容量。
升级固件, 请到下载中心下载。
TF 卡使用 MBR 分区,并格式化成 FAT32 格式。
将升级固件文件(zip 压缩格式)里的全部文件解压到 TF 卡上。
TF 卡插入开发板的 TF 卡卡槽,然后上电开机。
升级过程中,LED 灯会短暂闪烁,表示升级正在进行。
如果升级成功,绿色 LED 灯会一直闪烁。
如果升级失败,所有 LED 灯都会灭掉。
注意事项:
TF 卡如果超过 32GB,可能因 Windows 系统的限制而无法格式化成 FAT32 格式,故最好选择 32GB 以下大小的 TF 卡。
升级时间有点长,大概要六分钟左右,请耐心等待。
散热风扇一定要确保正确装上。
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~5, 此例为 ADC1:
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) 成功的,也就无法进行后续的读写操作。
Core-1688JD4 引出了一路 HDMI 接口(支持 4K@60fps)以及 MIPS DSI 接口(最大输出能力 1440P (2560 * 1440)@60fps,接口位置如图所示 。
需要注意的是, /mnt/system/ko/soph_drm.ko 为整个显示框架的驱动,诸如 HDMI以及 MIPI DSI 等模块驱动都是打包进这个驱动里面的。
Core-1688JD4 在开机之后,没有内置桌面环境,只跑一个显示程序:
目前系统只能存在一个显示,当你接着 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 接口。
PCIE3.0 接口(该接口与 SATA 3.0 接口复用,默认系统使用 PCIE 接口)默认支持接 NVME SSD 2242/2260/2280 ,在系统默认的名字为 nvme0n1。
如果想切换使用 SATA3.0 接口,需要做软件上的配置(bm1688_1688jd4.dtsi):
Core-1688JD4 引出 3 个 MIPI CSI 接口(14 lanes / 22 lanes),单一 sensor 最大支持 8K@15fps 线性输入或 12M@60fps HDR 输入。
以 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 文件。
AIO-1688JD4 开发板上有 TT8563RH 的 RTC (Real Time Clock) 芯片,可通过该芯片去设置系统时钟。
以下是常见的 RTC 操作:
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 路讯号;
AIO-1688JD4 串口位置如图所示
AIO-1688JD4 支持 3 个 UART 设备:
设备名称 | 接口功能 | 波特率 | 是否全双工 | 电平 |
---|---|---|---|---|
/dev/ttyS0 | 调试串口(Type-C / 4 Pin) | 115200 | 是 | TTL |
/dev/ttyS1 | RS232 | 115200 | 是 | RS232 |
/dev/ttyS4 | RS485 | 9600 | 否 | RS485 |
用户可以根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:
(1) 连接硬件 将开发板RS485 的A、B、GND 引脚分别和主机串口适配器(USB 转 485 转串口模块)的 A、B、GND 引脚相连。
(2) 打开主机的串口终端
在终端打开 kermit,并设置波特率:
然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。
测试方法与 RS485 的步骤是类似的,只需要注意设备名称与波特率即可。唯一不同的是, RS232 不需要去做发送和接收的开关切换。
CAN(Controller Area Network)总线,即控制器局域网总线,是一种有效支持分布式控制或实时控制的串行通信网络。CAN总线是一种在汽车上广泛采用的总线协议,被设计作为汽车环境中的微控制器通讯。 如果想了解更多的内容可以参考CAN应用报告
使用 candump 和 cansend 工具进行收发报文测试即可,将工具push到/system/bin/目录下执行。工具包含在SDK中,也可以在 官方 或者 github 下载。
总结调试过程中遇到的几个问题及解决方法:
检查总线 CAN_H 和 CAN_L, 杜邦线是否松动或者接反。
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/ 文件。
品牌:Firefly
尺寸:25mm*15.5mm
USB 转串口适配器,有四个引脚:
3.3V 电源(NC),不需要连接
GND,串口的地线,接开发板串口的 GND 针
TXD,串口的输出线,接开发板串口的 TX 针
RXD,串口的输入线,接开发板串口的 RX 针
注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。
AIO-1688JD4 DEBUG 口:
产品:电源适配器(桌面式)
规格:美规/欧规
输入标准:AC100-240V 50/60Hz
输出标准:12V-5A
注意: Core-1688JD4 一体机正常工作需要电源 12V/5A,电流低于 5A 可能会因电流过小而异常重启,为了保证开发板的正常工作,请使用电压为 12V,电流为 5A 的电源,推荐使用 Firefly 官网电源配件。
目前可供用户开发的 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
具体如下图:
资源下载