Skip to main content

接口定义

1 整机接口定义及使用

Sophon-BM1684X-LD800 提供了丰富的接口,具体如下图:

丝印设备节点型号备注
ETH0eth0YT8521S千兆网卡(默认DHCP)
ETH1eth1YT8521S千兆网卡(静态IP:192.168.1.150)
enp4s0enp4s0RTL8125BG-CG2.5G以太网
enp5s0enp5s0RTL8125BG-CG2.5G以太网
enp6s0enp6s0RTL8125BG-CG2.5G以太网
WIFIwlan0FD7155U2.4/5GHz
4G/5Gwwan0移远 EC20/RM500U4G/5G 拨号
HDMIMS9132芯片HDMI2.0输出,最高支持4K@60fps
M.2 SATA盘/dev/sda1ASM1153ESSD固态硬盘
2.5寸SATA盘/dev/sdb1ASM1153E固态硬盘
RS232/dev/ttyS2串口,默认波特率9600
RS485/dev/ttyS1串口,默认波特率9600
RTC/dev/rtc0PCF8563TS时钟
PWR LED红灯电源灯
SYS LED绿灯系统灯

1.1 前言

默认系统为 Ubuntu20.04,初始用户名和密码均为 linaro(root账户无初始密码,使用前需先用命令 sudo passwd root 设置密码)

提示

  • 关机时建议使用 sudo poweroff 命令,尽量避免直接断电,以免文件系统损坏
  • Ubuntu 快速使用可参考 [Ubuntu 快速开始指南]

1.2 ETH 说明

  • 可以通过调试串口、ssh 查看 IP 地址,例如:

    neardi@3576:~$ ip a
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.1.65 netmask 255.255.255.0 broadcast 192.168.1.255
    inet6 fe80::7df7:e74d:497e:345d prefixlen 64 scopeid 0x20<link>
    ether 62:ea:fb:ca:95:e7 txqueuelen 1000 (Ethernet)
    RX packets 2548 bytes 210938 (210.9 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 338 bytes 46899 (46.8 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    device interrupt 140 base 0xd000
    ...
  • 静态 IP 配置

    通过 /etc/netplan/01-netcfg.yaml 文件配置静态 IP,默认出厂配置 eth1192.168.1.150

    network:
    version: 2
    renderer: networkd
    ethernets:
    eth0:
    dhcp4: yes
    addresses: []
    optional: yes
    dhcp-identifier: mac
    eth1:
    dhcp4: no
    addresses: [192.168.1.150/24]
    optional: yes
    enp3s0:
    dhcp4: yes
    addresses: []
    dhcp-identifier: mac
    optional: yes

1.3 Wi-Fi/蓝牙 使用

  • 连接 wifi
  1. 连接 wifi 需配置 /etc/wpa_supplicant.conf 文件,配置如下:

    ctrl_interface=/var/run/wpa_supplicant
    ap_scan=1
    update_config=1
    network={
    ssid="wifi_account"
    psk="wifi_password"
    key_mgmt=WPA-PSK
    }
  2. 根据配置文件连接 wifi:

    wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B 1
  3. 查看连接过程,获取 ip:

    dhclient -i wlan0 -v
  • 连接蓝牙
  1. 进入交互式蓝牙控制台

    bluetoothctl
  2. 控制台内执行

    [bluetooth]# power on # 开启蓝牙
    [bluetooth]# scan on # 扫描设备(记下目标设备MAC)
    [bluetooth]# pair XX:XX:XX:XX:XX:XX # 配对目标设备
    [bluetooth]# trust XX:XX:XX:XX:XX:XX # 信任设备
    [bluetooth]# connect XX:XX:XX:XX:XX:XX # 连接设备
    [bluetooth]# info 7D:0C:96:C6:4E:3D # 验证连接
    [bluetooth]# exit # 退出控制台

1.4 4G/5G 通讯模块

支持 4G 模块如 EC20, 5G 模块如 RM500U 等,拨号时模块必须接天线,否则会失败。

查看是否识别到 usb 4G/5G 模块设备:

lsusb

查看是否成功生成虚拟串口:

ls /dev/ttyUSB*

拨号命令:

sudo quectel-CM &

查看是否生成 wwan0:

ifconfig wwan0

1.5 M.2 固态硬盘和 2.5/3.5 寸 SATA 盘

执行以下命令查看硬盘:

root@bm1684:~# lsusb
Bus 002 Device 004: ID 174c:1153 ASMedia Technology Inc. ASM1153 SATA 3Gb/s bridge
Bus 002 Device 005: ID 174c:1153 ASMedia Technology Inc. ASM1153 SATA 3Gb/s bridge

执行以下命令查看分区:

lsblk

通过mount进行挂载访问:

mount /dev/sda1 /mnt

1.6 RS232 & RS485 使用

串口是一种常见的通信接口,用于与外部设备进行串行通信。提供了多个串口,分别对应不同的设备节点。在使用串口之前,需要确保串口连接正确,以及波特率和其他参数设置一致。

  • RS232节点:/dev/ttyS2

    执行以下命令后可进行收发:

    stty -F /dev/ttyS2 9600 cs8 -parenb -cstopb -ixoff -icanon -echo
  • RS485节点:/dev/ttyS1

    执行以下命令后��可进行收发:

    stty -F /dev/ttyS1 9600 cs8 -parenb -cstopb -ixoff -icanon -echo

    RS485 通过 gpio 控制流控,在开发板设备上运行下列命令:

    # 设置流控,拉高发送,拉低接收
    echo 510 > /sys/class/gpio/export
    echo out > /sys/class/gpio/gpio510/direction
    # 拉高发送
    echo 1 > /sys/class/gpio/gpio510/value
    # 拉低接收
    echo 0 > /sys/class/gpio/gpio510/value

    发送字符串到主机

    echo "neardi RS485 test..." > /dev/ttyS1

    开发板接收数据:

    cat /dev/ttyS1

1.7 RTC 时钟

系统启动后使用 CST (中国标准时间),通过以下命令查看:

timedatectl

设置系统时间:

date -s "2026-12-25 14:10:00"

将系统时间写入RTC:

hwclock -w -f /dev/rtc0

读取RTC时间:

hwclock -w -f /dev/rtc0

提示

  • 若已配置系统时间并写入 RTC,重启后系统时间恢复,执行以下命令,重新配置系统时间。
  • 检查时间同步服务状态(看是否在运行)
systemctl status systemd-timesyncd
  • 停止并禁用同步服务(避免自动回滚时间)
systemctl stop systemd-timesyncd
systemctl disable systemd-timesyncd

1.8 GPIO 输入/输出 & 继电器

# GPIO_INPUT1 索引:513
# GPIO_INPUT2 索引:514
# GPIO_INPUT3 索引:515
# GPIO_INPUT4 索引:516
# GPIO_OUT1 索引:523
# GPIO_OUT2 索引:512
# 继电器RELAY0 索引:521
# 继电器RELAY1 索引:522
# 通过以下命令使能对应GPIO
echo 512 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio512/direction

# 拉高使能
echo 1 > /sys/class/gpio/gpio512/value

2 拓展

2.1 使用 GPIO

Sophon-BM1684X-LD800 芯片包含 3 组 GPIO 控制器,每个控制 32 根 GPIO,与 Linux 的设备节点对应如下:

GPIO 控制器Linux 设备节点GPIO 物理编号GPIO 逻辑编号
#0/sys/class/gpio/gpiochip4800 到 31480 到 511
#1/sys/class/gpio/gpiochip44832 到 63448 到 479
#2/sys/class/gpio/gpiochip41664 到 95416 到 447

通过以下方式使用 GPIO:

# 进入 GPIO 控制目录
cd /sys/class/gpio

# 导出 GPIO 编号
echo 512 > export

# 设置输出模式
echo out > gpio512/direction

# 拉高拉低 GPIO
echo 1 > gpio512/value
echo 0 > gpio512/value

2.2 查询内存用量

Sophon-BM1684X-LD800 核心板板载 16GB LPDDR4x,可以分为三类:

  1. kernel 管理的部分,即可以用 malloc、kmalloc 等常规 API 分配出来使用。
  2. ION 管理的部分,预留给 TPU、VPU、VPP 使用,需要使用 ION 的 ionctl 接口,或使用 bmnnsdk2 中 bmlib 库提供的接口分配出来使用。
  3. 预留给固件的部分,用户无法使用。

您可以使用如下方式检查各部分内存的用量:

查看系统内存:

查看 ION 内存:

如上,通常会有 3 个 ION heap(即三块预留的内存区域),如名字所示,分别供 TPU、VPU、VPP 使用。以上示例中只打印了每个 heap 使用信息的开头,如果完整地 cat summary 文件,可以到其中分配的每块 buffer 的地址和大小信息。

2.3 读取功耗信息

执行以下命令:

sudo pmbus -d 0 -s 0x50 -i

返回:

root@bm1684:~# sudo pmbus -d 0 -s 0x50 -i
I2C port 0, addr 0x50, type 0x3, reg 0x0, value 0x0
ISL68127 revision 0x33

ISL68127 switch to output 0, ret=0
ISL68127 output voltage: 834mV
ISL68127 output current: 1900mA
ISL68127 temperature 1: 58`C
ISL68127 output power: 2W # NPU 功耗

ISL68127 switch to output 1, ret=0
ISL68127 output voltage: 957mV
ISL68127 output current: 4100mA
ISL68127 temperature 1: 58`C
ISL68127 output power: 3W # CPU/Video 等功耗

第一组信息为 npu,第二组信息为 cpu 等。

pmbus 读取的是给 npu 和 cpu 供电的传感器的温度,所以更接近核心板温度,如果需要读取温度相关,参考下一节 [读取温度]。

2.4 读取温度

  • 读取 BM1684X 片上温度

    执行以下命令,返回(单位为毫设置度):

    root@bm1684:~# cat /sys/class/thermal/thermal_zone0/temp
    62000

    即 62.000 摄氏度。

  • 读取核心板温度

    执行以下命令,返回(单位为毫设置度):

    root@bm1684:~# cat /sys/class/thermal/thermal_zone1/temp
    59000

    即 59.000 摄氏度。 核心板温度通常会比前面读取的片上结温内部温度低。