2.3. X5 MD 开发板使用指南
2.3.1. 功能概述
2.3.1.1. 产品介绍
X5 MD采用核心板与IO载板分离的模块化设计方式,便于功能扩展与定制开发。
RDK X5 Module作为核心板,集成了D-Robotics Sunrise®5智能计算芯片及其关键电路设计,融合了PMIC电源管理模块、DDR、eMMC、QSPI NAND、Wi-Fi/蓝牙等核心功能单元。核心板提供300针高速扩展接口,可灵活连接多种外设,满足各类应用场景的快速部署需求。

RDK X5 Module Carrier Board是RDK X5 Module的配套IO载板,提供了丰富的外设接口。 直出接口包括:
两路22Pin摄像头接口(集成MIPI CSI、LPWM&MCLK、I²C、GPIO)
一路HDMI接口
一路RJ45以太网接口
一路LCD接口(集成MIPI DSI和I²C)
40Pin扩展接口(包含GPIO、I²C、SPI、I²S、PWM)
多路功能控制接口等
经过IO载板外围器件处理后输出的接口包括:
CAN总线接口(采用TCAN4550芯片,SPI转CAN)
耳机音频接口(基于ES8326B,支持I²S转音频DAC&ADC)
四路USB 3.0接口(通过GL3510 USB Hub扩展)

用户可参考IO载板的电路设计,自主开发满足自身应用需求的定制化底板。
2.3.1.2. 规格参数
X5 MD基础规格如下:
| 模块 | 参数 |
|---|---|
| 处理器 | Sunrise 5 ( X5 ) 芯片 |
| CPU | 8 核 ARM ® Cortex ® A55@1.5GHz |
| BPU | Bayers-architecture BPU@1.0GHz, 10 TOPS |
| 存储 | 2GB/4GB/8GB LPDDR4 , 0/8GB/16GB/32GB/64GB eMMC |
| 摄像头 | 2 路 4-lane MIPI CSI 接口 |
| 显示 | 1 路 HDMI 1080P@60fps , 1 路 MIPI DSI 2K@30fps |
| USB | 1 路 USB Type-A 3.0 接口 , 1 路 Micro USB 2.0 接口 |
| 有线网络 | 1 路千兆以太网接口 |
| 无线网络 | 2.4G / 5G Wi-Fi x1 ,支持 802.11 b/g/n、 Bluetooth 5.1 |
| 其他接口 | TF 卡接口 x1 , 40 PIN 接口 x1 , I2S x2 |
| 供电 | USB Type C 5V/5A 供电 |
2.3.1.3. X5 MD 配件说明
用户使用 X5 MD 开发板前,需要提前准备的配件如下:
必选配件
USB Type C 接口 5V/5A 的电源适配器
千兆网线 x1 ,用于网络通讯
Micro USB 2.0 数据线 x1,用于串口通信
USB TYPE-C 数据线 x1,用于USB 2.0 数据传输
Camera 模组,用于视频、图像功能评测
可选配件
显示器与 HDMI Type-A 接口线缆,用于视频画面预览
MIPI LCD 显示屏与 22PIN FPC,用于显示功能测试
Audio 子板,用于语音功能测试
2.3.2. IO载板功能模块布局

| 接口 | 功能 | 接口 | 功能 |
|---|---|---|---|
| 1 | USB Type C 5V/5A供电接口 | 13 | RTC电池接口 |
| 2 | USB2.0配置header | 14 | CAN终端电阻接入开关 |
| 3 | USB2.0接口 | 15 | CAN总线接口 |
| 4 | USB3.0 HOST接口x2 | 16 | 功能控制IO header |
| 5 | USB3.0 HOST接口x2 | 17 | Audio接口 |
| 6 | 千兆以太网口 | 18 | IO电平选择header |
| 7 | 风扇接口 | 19 | MIPI DSI接口 |
| 8 | POE 接口 | 20 | Micro SD卡接口(背面) |
| 9 | CAM2接口,4lane | 21 | HDMI接口 |
| 10 | CAM1接口,4lane | 22 | Debug口,USB转串口(背面) |
| 11 | 40pin header | 23 | Sleep按键 |
| 12 | 核心模组接口 | 24 | 电源开关 |
2.3.2.1. 尺寸图


2.3.3. 接口使用说明
2.3.3.1. 启动开发板
接入 5V/5A 电源适配器(接口 1 ),将电源开关(接口 24 )打开,CB PWR和MD PWR 亮起,说明开发板供电正常。

2.3.3.2. 从 eMMC 启动
X5 MD最开始为RDK生态客户设计,运行RDK系统,默认从spi nand启动,如果要烧录使用SDK系统,需要改为从eMMC启动。
首先,通过核心板和IO载板的丝印,确认板卡硬件版本。
V0.X版本:需要更改核心板,请咨询FAE获取eMMC启动修改方法;
V1.X版本:需要更改IO载板:图中位置焊接4.7K欧姆电阻。

2.3.3.3. 调试串口
开发板提供一路调试串口(背面接口22),以实现串口登录、调试功能。电脑串口工具的参数配置如下:
波特率(Baud rate):921600
数据位(Data bits):8
奇偶校验(Parity):None
停止位(Stop bits):1
流控(Flow Control):无
串口连接时,需要将通过 Micro-USB 线,连接开发板接口22 与 PC。

2.3.3.4. 以太网
开发板提供 1 路 RJ45 网络接口,对应接口 4 ,支持 1000BASE-T、 100BASE-T 和 10BASE-T 标准,开发板默认 ip 地址为 192.168.1.10。 如需查询 IP 地址,可通过串口登录设备,执行 ifconfig 命令查看 eth0 节点对应的信息。
root@buildroot:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 0.0.0.0
ether 9a:77:34:d1:fc:ed txqueuelen 1000 (Ethernet)
RX packets 1813 bytes 134485 (131.3 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 4563 bytes 282810 (276.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 38
此外,该接口支持 PoE(Power over Ethernet,以太网供电)功能,无需额外的电源线即可通过网线同时传输数据和电力,使设备的安装更加简便灵活。
2.3.3.5. USB 3.0 接口
开发板提供 1 路 USB 3.0,IO载板通过USB HUB扩展为4路 USB 3.0 Type A接口 对应接口4和接口5 ,默认工作在 Host 模式。
如果用户设计的底板没有usb hub,可以通过软件方式切换成 Device 模式。
使能 USB 3.0 Device 模式
通过执行系统配置命令,强制切换 USB 3.0 的主从模式。
设置 USB 3.0 为 Device 模式下的命令:
echo device > /sys/class/usb_role/35100000.usb-role-switch/role
设置 USB 3.0 为 Host 模式下的命令:
echo host > /sys/class/usb_role/35100000.usb-role-switch/role
2.3.3.6. USB 2.0 接口
开发板提供 1 路 Micro USB 2.0 接口,对接口 3 ,可以短接接口 2,将USB 2.0切换到HOST模式。

该接口的主要功能应用如下:
功能调试,默认 adb 模式,可通过命令切换 rndis、 uvc 等功能
镜像烧录,支持 dfu、 fastboot 等模式的烧录功能
外设接入,配合 接口 3,灵活切换host和device模式
2.3.3.7. IO电平选择
开发板提供一路 IO 电平选择接口(对应接口 18),可切换 IO 电平为 1.8V 或 3.3V。该设置会同时影响 40Pin 接口和 CAM 接口的 IO 电平。

2.3.3.8. 摄像头 (MIPI CSI) 接口
开发板提供 2 路 22pin MIPI CSI 接口,CAM1(接口 10) CAM2(接口 9) 。
两路接口的能力以及配置情况如下表:
| 接口 | MIPI CSI Host | 最大支持 lane 数 | I2C Bus | 复位 GPIO | LPWM & MCLK |
|---|---|---|---|---|---|
| 10 | MIPI_CSI0&1 | 4 lane | I2C6 | LSIO_GPIO1_06 - 353 | LSIO_LPWM1_0 & LSIO_SENSOR0_MCLK |
| 9 | MIPI_CSI2&3 | 4 lane | I2C4 | LSIO_GPIO1_04 - 351 | LSIO_LPWM1_1 & LSIO_SENSOR1_MCLK |
22pin接口可以对接树莓派风格的摄像头模组,IO电平(接口 18)要选择3.3V,支持的模组有IMX219、IMX477、OV5647,MCLK由模组提供。
官方提供了22pin到24pin的转接板,转接板上集成了一颗24M有源晶体负责给Sensor提供MCLK,IO电平(接口 18)要选择1.8V。

X5 MD 与转接板通过 22Pin 0.5mm 间距同向 FPC 连接,转接板与摄像头模组之间使用与 EVB 板相同类型的排线。
通过转接板可以对接EVB板卡支持的一系列摄像头模组,例如SC230AI、SC132gs、IMX415,方便用户对不同图像场景的测试需求。完整 Camera Sensor 支持列表,请查阅 Camera Sensor Support List。
安装完成后,可以通过命令确认模组 I2C 地址能否正常检测到。如检测不到,则需要检查 FPC 排线连接是否正常,避免接触不到位、方向接反等问题。
查询靠CAM1(接口10) 接口 上 Camera Sensor 的 I2C 设备地址:
echo 353 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio353/direction
echo 0 > /sys/class/gpio/gpio353/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio353/value
i2cdetect -y -r 6
查询CAM2(接口9) 接口 上 Camera Sensor 的 I2C 设备地址:
echo 351 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio351/direction
echo 0 > /sys/class/gpio/gpio351/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio351/value
i2cdetect -y -r 4
成功探测到 Camera Sensor 的 I2C 设别地址时,可以看到如下所示的打印(以在接口 10 上探测 SC230AI 为例,可以发现 30 地址被打印出来了):
root@buildroot:~$ i2cdetect -y -r 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
更多有关 Camera Sensor 相关的使用,请查阅 示例代码介绍 。
2.3.3.9. HDMI 接口
开发板支持 1 路 HDMI Type-A 接口,对应接口 21 ,支持的Pixel Clock 范围为 25 MHz –165 MHz。
由于系统不支持图形界面,因此开发板 HDMI 接口主要用于实时预览摄像头、网络流画面等功能,具体方法请查阅 示例代码介绍 中显示相关示例。
2.3.3.10. LCD ( MIPI DSI)和 TP 接口
开发板支持 MIPI DSI 和触摸屏接口,对应接口 14 ,接口为22pin,可使用DSI-Cable-12cm接入微雪4.3寸电容触控屏 800×480,如下图所示:

成功进入 Linux 系统之后,执行以下命令加载驱动:
modprobe sii902x
modprobe panel-wh-cm480
modprobe ft5406
modprobe hb_bl
modprobe vio_n2d
modprobe vs-x5-syscon-bridge
modprobe vs_drm
串口将会打印:
[ 3343.383052] vs-disp-sif 3e080000.vs-sif: Adding to iommu group 3
[ 3343.384118] vs-dc 3e000000.dc8000Nano: Adding to iommu group 4
[ 3343.385252] vs-bt1120 3e010000.bt1120: Adding to iommu group 5
[ 3343.387555] horizon-lsio-pinctrl 34180000.lsio_iomuxc: set pin = 14 direction to input
[ 3343.387567] horizon-lsio-pinctrl 34180000.lsio_iomuxc: map pin14 to gpio[0] - 14
[ 3343.387635] panel-jc-050hd134 3e060000.mipi_dsi0.0: supply power not found, using dummy regulator
[ 3343.391241] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e080000.vs-sif (ops sif_component_ops [vs_drm])
[ 3343.391529] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e000000.dc8000Nano (ops dc_component_ops [vs_drm])
[ 3343.391692] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e010000.bt1120 (ops bt1120_component_ops [vs_drm])
[ 3343.391730] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e000000.disp_apb:bt1120_bridge (ops bt1120_bridge_component_ops [vs_drm])
[ 3343.391764] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e000000.disp_apb:bt1120_bridge_wb (ops bt1120_bridge_component_ops [vs_drm])
[ 3343.391816] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e060000.mipi_dsi0 (ops dsi_component_ops [vs_drm])
[ 3343.391917] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e000000.disp_apb:dsi-encoder (ops encoder_component_ops [vs_drm])
[ 3343.391976] vs-drm 3e000000.disp_apb:display-subsystem: bound 3e000000.disp_apb:hdmi-encoder (ops encoder_component_ops [vs_drm])
[ 3343.392815] [drm] Initialized vs-drm 1.0.0 20191101 for 3e000000.disp_apb:display-subsystem on minor 0
play-subsystem on minor 0
当出现 [drm] Initialized vs-drm 1.0.0 20191101 for 3e000000.disp_apb:display-subsystem on minor 0 表示显示驱动加载成功。
使用 modetest -M vs-drm -a -s 73@31:800x480 -P 33@31:800x480@NV12 命令进行测试。
连接的屏幕将会亮起,显示如下图的 pattern :

加载驱动的命令中, ft5406是触摸屏驱动, hb_bl是背光驱动,具体的驱动开发工作请查阅触摸屏的用户手册和 驱动开发指南 。
驱动加载成功后,会生成 /dev/input/event1 设备节点给用户态程序使用。
测试使用:
使用 tc_test 程序测试触摸屏功能,当用对触摸屏做点击操作时,可以获取事件、类型、状态码和对应的坐标。
# ./tc_test /dev/input/event1
Monitoring input events on /dev/input/event1
[/dev/input/event1] event(0): type:3; code: 47; value: 0; realx: 0; realy: 0
[/dev/input/event1] event(1): type:3; code: 57; value: 16; realx: 0; realy: 0
[/dev/input/event1] event(2): type:3; code: 53; value:248; realx:248; realy: 0
[/dev/input/event1] event(3): type:3; code: 54; value:1007; realx:248; realy:1007
[/dev/input/event1] event(4): type:3; code: 48; value: 13; realx:248; realy:1007
[/dev/input/event1] event(5): type:3; code: 58; value: 13; realx:248; realy:1007
测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
static int handle_event(int fd, const char *device_name)
{
struct input_event ev[64];
int button = 0, realx = 0, realy = 0, i, rd;
rd = read(fd, ev, sizeof(struct input_event) * 64);
if (rd < (int)sizeof(struct input_event)) return 0;
for (i = 0; i < rd / (int)sizeof(struct input_event); i++)
{
if (EV_ABS == ev[i].type)
{
if (ev[i].code == 53) {
realx = ev[i].value;
} else if (ev[i].code == 54) {
realy = ev[i].value;
}
}
printf("[%s] event(%d): type:%d; code:%3d; value:%3d; realx:%3d; realy:%3d\n",
device_name, i, ev[i].type, ev[i].code, ev[i].value, realx, realy);
}
return 1;
}
int main(int argc, char *argv[])
{
if (argc < 2) {
printf("Usage: %s <event device path>\n", argv[0]);
return -1;
}
const char *device_path = argv[1];
int fd = open(device_path, O_RDONLY);
if (fd < 0) {
printf("Failed to open input device: %s\n", device_path);
return -1;
}
printf("Monitoring input events on %s\n", device_path);
while (handle_event(fd, device_path));
close(fd);
return 0;
}
2.3.3.11. Wi-Fi / Bluetooth
使用 Wi-Fi
开发板集成了 FCS960K 2.4G/5.0G 双模 Wi-Fi / Bluetooth 模组,支持 IEEE802.11a/b/g/n/ac/axWLAN、 Bluetooth 5.1 功能,系统启动时自动加载 Wi-Fi 驱动。
root@buildroot:~$ ifconfig wlan0
wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 40:9c:a7:70:98:cc txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
用户需要通过修改配置文件的方式,手动配置热点名和获取 ip 地址,方法如下:
# 进入 userdata 目录,避免在系统目录下遇到无法写文件的错误
cd /userdata/
# 根据 Wi-Fi 热点情况修改命令中的热点名( SSID)和密码(“ WIFI_SSID”,“ WIFI_PASSWD”)
wpa_passphrase "WIFI_SSID" "WIFI_PASSWD" >> ./wpa_supplicant.conf
sleep 1
wpa_supplicant -D nl80211 -i wlan0 -c ./wpa_supplicant.conf -B
sleep 1
udhcpc -i wlan0 &
配置完成后,执行 ping 8.8.8.8 命令确认网络是否正常,正常情况下的日志如下:
root@buildroot:~$ cd /userdata/
root@buildroot:/userdata$ wpa_passphrase WiFi-Test 12345678 >> ./wpa_supplicant.conf
root@buildroot:/userdata$ wpa_supplicant -D nl80211 -i wlan0 -c ./wpa_supplicant.conf -B
Successfully initialized wpa_supplicant
[10093.447698] [BB][halbb_la_bb_set_smp_rate] smp_rate_tmp=7, la_smp_rate_log=160 M
root@buildroot:/userdata$ udhcpc -i wlan0 &
[1] 1309
udhcpc: started, v1.35.0
root@buildroot:/userdata$ udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.137.252, server 192.168.137.1
udhcpc: lease of 192.168.137.252 obtained from 192.168.137.1, lease time 604800
deleting routers
adding dns 192.168.137.1
[1]+ Done udhcpc -i wlan0
root@buildroot:/userdata$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.252 netmask 255.255.255.0 broadcast 192.168.137.255
ether 40:9c:a7:70:98:cc txqueuelen 1000 (Ethernet)
RX packets 117 bytes 15326 (14.9 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 63 bytes 5056 (4.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@buildroot:/userdata$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=82.124 ms
64 bytes from 8.8.8.8: seq=1 ttl=52 time=106.029 ms
64 bytes from 8.8.8.8: seq=2 ttl=52 time=129.993 ms
^ C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 82.124/106.048/129.993 ms
root@buildroot:/userdata$
Wi-Fi 的 STA 和 AP 模式切换
执行 /etc/init.d/wifi_init.sh ap 可以切换到 AP 模式,执行 /etc/init.d/wifi_init.sh sta 可以切换到 STA 模式
root@buildroot:~# /etc/init.d/wifi_init.sh ap
Initialize wlan0 to ap mode
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
Finish initialize wlan0 to ap mode
dnsmasq: started, version 2.86 cachesize 150
root@buildroot:~# dnsmasq: compile time options: IPv6 GNU-getopt DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-cryptohash no-DNSSEC loop-detect inotify dumpfile
dnsmasq: warning: no upstream servers configured
dnsmasq-dhcp: DHCP, IP range 192.168.5.2 -- 192.168.5.254, lease time 12h
dnsmasq: read /etc/hosts - 2 addresses
root@buildroot:~# /etc/init.d/wifi_init.sh sta
Initialize wlan0 to station mode
Finish initialize wlan0 to station mode
使用 Bluetooth
执行 /etc/init.d/bt_init.sh 完成蓝牙初始化
执行 bluetoothctl 进入交互模式下的蓝牙配置界面,出现了类似下图的设备信息表示蓝牙被识别到了,然后用 show 来查看蓝牙信息,留意蓝牙的 powered 和 discoverable 状态。

执行 power on 使能蓝牙,如下图所示:

为了能够使蓝牙被附近的设备发现,需要执行 discoverable on 打开蓝牙可发现属性,如下图所示:

此时使用手机或者电脑扫描蓝牙就可以发现 BlueZ 5.64 这个名称的蓝牙设备(这个名称的版本号会因为 BlueZ 版本号不同而有差异,例如还可能会是 BlueZ 5.79):

接下来测试蓝牙的主动扫描功能,在 bluetoothctl 的交互界面输入 scan on 即可打开主动扫描,它会周期性地打印附近的设备,可以看到已经发现了我的手机设备, scan off 关闭扫描功能并汇总打印扫描到的蓝牙设备:


然后就是和其他蓝牙的配对:
配对命令:pair [targetMAC] ,输入该命令后,根据提示输入 yes,对端蓝牙设备选择 配对 选项完成配对。

配对成功后可以使用 trust [targetMAC] 来让下次自动连接

使用 l2ping 测试网络连接

2.3.3.12. TF 卡
开发板支持 1 路 TF 接口(接口22 ),最大支持 SDR104 模式。支持 FAT32 ( VFAT)、 EXFAT、 ext2 、 ext3 、 ext4 文件系统格式。
插上 TF 卡后,内核有如下日志,说明正确识别:
[ 9809.931894] mmc1: new HSSDHC card at address 1234
[ 9809.933740] mmcblk1: mmc1:1234 SA16G 14.5 GiB
[ 9809.940060] mmcblk1: p1
注意:根据 TF 卡的具体型号及 TF 卡的具体分区,实际打印可能有细微差别。
TF 卡上的分区文件系统格式不是 FAT32 ( VFAT)、 ext2 、 ext3 、 ext4 ,请使用以下命令对 TF 卡分区进行格式化
# 格式为 FAT32(VFAT)
mkfs.vfat /dev/mmcblk2p1
# 格式为 ext4
mkfs.ext4 /dev/mmcblk2p1
# 格式为 ext3
mkfs.ext3 /dev/mmcblk2p1
# 格式为 ext2
mkfs.ext2 /dev/mmcblk2p1
2.3.3.13. CANFD 接口
开发板提供 CANFD 接口(接口15)和 CAN终端电阻接入开关(接口14,高速通信需要两端使能终端电阻,防止信号反射,提升抗干扰能力),可用于CAN及CAN FD通信
CANFD 接口的三个信号脚分别为 GND L H。

2.3.3.14. 40PIN 接口
开发板提供 1 路 40PIN 接口,方便用户扩展外围接口,对应接口 11 ,定义以及支持的复用功能如下:

40PIN 上的所有 IO 管脚支持通过电平选择接口(接口 18)来切换 3.3V 和 1.8V 电压域。
连接举例:
这里展示一款 Auido Driver HAT 的硬件参考连接图:

2.3.3.15. RTC
开发板使能了pmic 芯片 hpu3501 的 RTC 功能,RTC 电池接口为接口 13:

连接器从左到右为 电池负极,电池正极,对电池的电压和放电电流要求为:2~3.3V ,>2.5uA
hpu3501-rtc 被注册为 rtc0 ,可以使用下面命令进行外部 RTC 测试:
# 确认是否存在 /dev/rtc0 设备
ls /dev/rtc*
# 建立 /dev/rtc0 到 /dev/rtc 的软连接
rm /dev/rtc
ln -s /dev/rtc0 /dev/rtc
# 将时间写入外部 rtc
date -s "2024/01/01 17:08:00" # 设置系统时间
hwclock -w # 将系统时间写入 RTC
hwclock -r # 读取 RTC 时间,确认时间是否写入成功
# 重启单板后从外部 RTC 读取时间到系统
# 确认是否存在 /dev/rtc0 设备
ls /dev/rtc*
# 建立 /dev/rtc0 到 /dev/rtc 的软连接
rm /dev/rtc
ln -s /dev/rtc1 /dev/rtc
hwclock -s # 如果 rtc 电池存在,断电后,再上电,可以将 RTC 时间更新到系统时间
date # 读取系统时间,此时应该是先前配置的时间 "2024/01/01 17:08:00"
2.3.3.16. 其他接口
电源开关
控制单板的重新上电和断电,对应接口为 24。
复位开关
整版下电,对应接口为 22 左1;X5MD核心板下电 22 左2。
唤醒开关
用于在 Sleep 模式下通过外部唤醒源唤醒系统,对应接口为 23。