系统控制、存储和 USB
1. 看门狗 (Watchdog)
1.1. 查看看门狗资源
使用 ls 命令可以查看系统中存在多少个看门狗节点。
ls /dev/watchdog\*
查看看门狗资源
1.2. 快速开始
1.2.1 准备开发环境
在 PC 端的 Ubuntu 系统中运行 run 脚本,进入 EASY-EAI 编译环境。详情如下。
cd ~/develop_environment./run.sh 22041.2.2 下载源码并编译示例
首先,在虚拟机后台终端中执行以下命令,创建外设示例源码的管理目录:
cd /optmkdir -p EASY-EAI-Nano-TB/demo下载示例程序:
例如,将示例程序下载到“PC\D:”(没有指定要求,用户可放在任意位置)。
然后,将下载的示例复制到虚拟机文件系统中。步骤请参考下图。

下载源码并编译示例
最后,进入对应示例的目录并执行编译操作。具体命令如下:
cd EASY-EAI-Nano-TB/demo/05_watchDog./build.sh💡 注意:由于依赖库放置在板端,交叉编译过程中需要保持 /mnt 挂载。

下载源码并编译示例
1.2.3 运行示例
通过串口调试或 SSH 访问开发板后台,并进入示例所在目录:
cd /userdata运行示例的命令如下:
./05_watchDog1.2.4 运行结果
运行结果如下【注意!!运行 demo 会导致系统重启,请谨慎操作】。

运行结果
如果不希望系统重启,可以在中途按键盘上的【Ctrl+C】停止看门狗进程。
1.3. C 语言使用示例
这是看门狗的 C 语言使用示例。代码路径为 05_watchDog/test-watchDog/main.c。 可作为编码参考。以下代码展示了看门狗定时器的基本操作流程:
void ctrl_c_handler(){ int ret = wdt_close(); if(ret < 0){ printf("\n看门狗禁用失败!!!\n"); }else if(ret == 0){ printf("\n看门狗禁用成功!!!\n"); } exit(0);}
int main(){ int timeout = 30; int ret = wdt_open(timeout); if(ret < 0){ printf("看门狗启用失败!!!\n"); return -1; } printf("看门狗启用成功。实际超时时间:%d(秒)\n", ret);
// 捕获 Ctrl+C 信号 signal(SIGINT, ctrl_c_handler);
int feedTimes = 0; while (1) { sleep(3);
if(5 < feedTimes){ printf("不再喂狗(停止清除看门狗)\n"); continue; }
if(0 == wdt_feeddog()){ feedTimes++; printf("喂狗(清除看门狗)成功!!!\n"); }else{ printf("喂狗(清除看门狗)失败!!!\n"); } } return 0;}2. TF 卡插槽
2.1 硬件连接介绍
💡 注意:TF 卡支持热插拔(通电时插拔),但如果底板未安装保护外壳,容易触碰到底板上的元件,并且板子附近的金属部件更容易导致短路。因此,在插拔外设时,强烈建议确认电源已经完全断开。
2.2 TF 卡挂载
2.2.1 查看 TF 卡节点
插入 TF 卡后,/dev/ 目录中会出现名为 mmcblk1 的设备节点。可以使用以下命令查看。
ls /dev/mmcblk\*
查看 TF 卡节点
执行 mount 命令可以查看挂载状态。
mount
查看 TF 卡节点
2.2.2 TF 卡自动挂载/卸载
当前开发板可通过 /usr/lib/udev/rules.d/61-removable-disk-auto-mount.rules 规则文件管理 TF 卡的自动挂载与卸载。默认挂载位置为 /mnt/sdcard 目录。

TF 卡自动挂载/卸载
2.2.3 TF 卡手动挂载
执行以下命令可以将 TF 卡挂载到 /mnt/sdcard。
sudo mount /dev/mmcblk1 /mnt/sdcard也可以将 TF 卡的【分区 1】挂载到 /mnt/sdcard。
sudo mount /dev/mmcblk1p1 /mnt/sdcard挂载成功后,进入 /mnt/sdcard 目录即可查看 TF 卡当前保存的内容。

TF 卡手动挂载
2.2.4 TF 卡手动卸载
卸载 TF 卡前,需要先离开 TF 卡的挂载目录(例如:/mnt/sdcard)。否则无法执行卸载命令。
cd /umount /mnt/sdcard ## 需要 root 权限不过,由于存在 61-removable-disk-auto-mount.rules 规则文件,即使手动卸载 TF 卡,也会被规则文件再次自动挂载到 /mnt/sdcard。因此,如果确实不想挂载,需要将该规则文件【删除】或【从 /usr/lib/udev/rules.d/ 中移走】。
3. USB
3.1. USB 硬件资源概述
3.1.1 两种 USB 模式
EASY EAI Nano-TB 开发板支持两种 USB 工作模式:

两种 USB 模式
-
默认模式: 默认情况下,USB 资源在设备树中配置为【2 路 USB2.0 HOST】以及【ADB】。
-
USB3.0 模式: 当用户需要高速 USB(如工业相机等)或双千兆网口时,可以通过修改内核源码(设备树),使 USB 接口工作在高速模式。
USB 资源的原理框图如下。

两种 USB 模式
💡 注意:作为 USB3.0 模式使用时,必须拔掉 ADB 线缆。否则可能会对【所有】USB 接口造成串扰(干扰)。
3.2. 切换到 USB3.0 模式
3.2.1 升级到最新固件
3.2.2 下载 Ubuntu 系统 SDK 源码
关于 ubuntu_sdk 源码(主要是内核源码)的下载,请参考“嵌入式底层开发/Ubuntu 系统 SDK/编译说明”。
3.2.3 修改内核设备树
然后,按照下图说明,修改【内核源码开发仓库】中的设备树文件:

修改内核设备树
- EASY-EAI-Nano-TB 设备树入口: arch/arm64/boot/dts/rockchip/rv1126b-nano.dts
编译完成后,将生成新的 kernel.img。
3.2.4 更新内核镜像
将上一步生成的 kernel.img 复制到固件的 rockdev 目录中,替换原来的 kernel.img,然后将 kernel.img 写入开发板。
3.3. 功能确认和性能测试
-
测试用 U 盘: 【USB3.0】Kingston U 盘
-
测试接口:

功能确认和性能测试
U 盘挂载命令:
sudo mkdir -p /mnt/usbsudo mount /dev/sda /mnt/usbU 盘测试命令 - 读取:
dd if=/dev/sda of=/dev/null bs=1M count=1000 iflag=direct status=progressU 盘测试命令 - 写入:
dd if=/dev/zero of=/mnt/usb/test.tmp bs=1M count=1000 oflag=direct status=progress3.3.1 USB2.0 模式
功能确认:
lsusb -t仅存在 1 路通信速度为 480M 的 USB2.0 HOST,符合预期结果。
- 1GB 大小 — 读取测试:(※ 请参考原文档中的执行结果)

功能确认:
- 1GB 大小 — 写入测试:(※ 请参考原文档中的执行结果)

功能确认:
3.3.2 USB3.0 模式
由于 USB3.0 模式下无法使用 ADB,因此需要使用串口调试或 SSH 调试访问开发板后台。
功能确认:
| lsusb -t |
|---|

功能确认:
存在 1 路通信速度为 480M 的 USB2.0 HOST,以及 1 路通信速度为 5000M 的 USB3.0 HOST,符合预期结果。
- 1GB 大小 — 读取测试(取决于 U 盘读写速度):(※ 请参考原文档中的执行结果)

功能确认照片
- 1GB 大小 — 写入测试(取决于 U 盘读写速度):(※ 请参考原文档中的执行结果)

功能确认照片