配套示例详解
工程的 apps 目录包含 9 个独立应用。按功能找到感兴趣的示例,点击对应条目,查看操作、运行结果和源码入口。第一次检查开发板,可以从 board_bringup 开始。
基础控制与输入
board_bringup板载 LED · 无需外接模块启动与 GPIO 控制打印启动信息,让 D12 周期闪烁,确认程序已经在板上运行。
启动后,串口会打印 Zephyr 版本和板卡名称。D12 每隔 500 ms 翻转一次,亮、灭一个完整周期约为 1 秒。
按下 RES,启动信息会重新出现,LED 重新开始闪烁。通过串口输出与灯的变化,可以检查烧录、程序启动和 GPIO 控制是否正常。
应用通过设备树的 led0 找到 LED,并调用 Zephyr GPIO 接口。具体引脚由板卡设备树描述。
- Zephyr 接口
- 设备树 led0、GPIO、printk、内核延时
- 源码入口
apps/board_bringup/src/main.c
k2_button板载 K2、D12按键事件与 LED 控制每次按下 K2 翻转 D12,串口显示按下次数与持续时间。
按下、松开 K2,观察以下结果:
| 操作 | 运行现象 |
|---|---|
| 按下 K2 | 次数加一,D12 翻转,输出 K2 pressed count=... |
| 松开 K2 | 输出本次按下持续的时间,LED 保持当前状态 |
| 保持约 1 秒后松开 | 与短按的输出比较,持续时间相应增加 |
工程中的 dshan,gpio-button 驱动负责 GPIO 中断和消抖,通过 Input 子系统上报事件;应用再处理计数、LED 和日志。
- Zephyr 接口
- 自定义 GPIO 按键驱动、Input、消息队列、GPIO
- 源码入口
apps/k2_button/src/main.c
ir_remote需 NEC / 扩展 NEC 遥控器红外遥控按键识别接收遥控器按键,输出名称、地址和命令,同时翻转 D12。
将遥控器对准板载 IRM-H638 接收器并按键。每个有效扫描事件都会使 D12 翻转一次,串口显示按键名称、地址、命令和扫描码。
应用预设了 20 个按键名称,包括电源、菜单和数字键。命令码不在对应表中时,名称显示为 UNKNOWN,但仍会输出地址、命令和扫描码。
当前驱动支持 NEC、扩展 NEC,忽略 NEC 重复帧。长按时不会持续重复上报,也不输出按键释放事件。
- Zephyr 接口
- GPIO 中断、红外输入驱动、Input、消息队列
- 源码入口
apps/ir_remote/src/main.c
存储与文件系统
eeprom板载 AT24C02 · 256 字节EEPROM 读写与恢复备份原数据,写入测试内容并校验,最后恢复原数据。临时改写最后 8 字节;等待恢复成功后再复位或断电。
程序通过 I²C 访问地址为 0x50 的 AT24C02,每次启动自动完成一轮测试:
- 查询容量,备份最后 8 字节,即
0xF8~0xFF。 - 写入测试数据,读回比较。
- 写回原数据,再次读取并校验。
| 串口结果 | 含义 |
|---|---|
Test pattern read-back passed | 测试数据读回一致 |
Original EEPROM data restored | 原数据恢复并通过校验 |
EEPROM test passed | 完整测试通过 |
备份只保存在 RAM 中。中途掉电、复位或恢复失败,都可能使这 8 字节无法还原。应用调用标准 EEPROM 接口,底层驱动通过 I²C 操作芯片。
- Zephyr 接口
- 设备模型、EEPROM、I²C
- 源码入口
apps/eeprom/src/main.c
qspi_flash板载 W25Q64JV · 8 MiBFlash 扇区擦写检查 Flash 信息,完成擦除、写入、读回和校验。会清除测试扇区,可能破坏此前保存的 LittleFS 文件系统。
启动后,串口显示容量、写入和擦除粒度、测试分区及 JEDEC ID。程序随后:
- 擦除一个 4 KiB 扇区,并检查擦除结果。
- 写入 256 字节测试数据,读回比较。
- 重新擦空该扇区,成功时输出
QSPI flash test passed。
实际擦除范围是芯片偏移 0x007FE000~0x007FEFFF,不备份、不恢复。 正常结束时该扇区为空。它位于 qspi_littlefs 使用的整片 Flash 分区内,切换运行这两个应用时,不能保证原文件系统保留。
- Zephyr 接口
- Flash、Flash Map、JEDEC ID、页布局查询
- 源码入口
apps/qspi_flash/src/main.c
qspi_littlefs板载 W25Q64JV · 8 MiB文件读写与启动计数将启动次数保存到文件中,重新上电后读取并累加。占用整片 Flash;没有有效文件系统或挂载失败时允许格式化。
程序将 LittleFS 挂载到 /lfs,使用 /lfs/boot_count.bin 保存启动次数:
- 显示空间信息,读取并校验原计数;没有文件时,从零开始。
- 将计数加一,写入文件。
- 卸载、重新挂载文件系统,再读取一次,确认数据已保存。
看到 Persistent boot count: ... 和 QSPI LittleFS test passed 后,按 RES 或重新上电,可以观察次数继续增加。
整个 8 MiB Flash 都划给 LittleFS,擦写位置由文件系统管理。当前配置允许挂载失败后格式化;已有计数文件若内容校验失败,程序会报错。运行 qspi_flash 会直接擦除这个文件系统范围内的扇区。
- Zephyr 接口
- 文件系统、LittleFS、设备树 fstab、Flash Map
- 源码入口
apps/qspi_littlefs/src/main.c
usb_msc_host需 U 盘 / USB 读卡器USB 移动存储读写识别 U 盘或 USB 读卡器,列出文件并验证读写。介质需有文件系统;程序可能创建并保留 ZEPHYR.TXT。
保持 Debug 与电脑连接,将 U 盘或插有 MicroSD 卡的 USB 读卡器接入 J3 USB-A 接口,丝印为 USB HOST。介质应已有 FAT、FAT32 或 exFAT 文件系统。
程序等待设备接入,识别磁盘,挂载到 /USB:,输出容量、剩余空间和根目录内容,再验证文件读写。
| 串口结果 | 含义 |
|---|---|
USB disk ready | 磁盘已就绪 |
Mounted /USB: | 文件系统已挂载 |
FAT read/write verification passed | 文件验证通过 |
程序不格式化介质。没有 ZEPHYR.TXT 时,会创建并写入测试文字,文件会保留;已有同名文件时只读取比较、不覆盖,内容不符合预期会报告验证失败。
使用允许写入测试文件的介质,等待读写结束后,再拔出、重新插入,观察识别过程。
- Zephyr 接口
- USB Host、MSC、Disk Access、FatFs、文件系统
- 源码入口
apps/usb_msc_host/src/main.c
通信与图形界面
w800板载 W800 · BLE 可用手机观察无线扫描与网络通信扫描周边 Wi-Fi、启动 BLE 广播,并在已有 IP 时测试网络通信。应用不设置 Wi-Fi 凭据、不主动连接路由器。
RA6M5 通过 UART 与 W800 的 AT 固件通信。启动时复位模块、检查 AT 通道,再查询模式、MAC 地址和连接状态。
| 功能 | 可以观察到的结果 |
|---|---|
| Wi-Fi 扫描 | 接入点的 SSID、信号强度、信道和数量 |
| BLE 广播 | 串口显示名称、地址,手机 BLE 扫描工具可查找该设备 |
| 已获得 IP 时的网络测试 | ping 网关和 www.baidu.com,通过 Socket 请求 example.com:80,显示 HTTP 响应开头及接收字节数 |
查询状态时已获得 IP,才会先执行网络测试,再扫描 Wi-Fi、启动 BLE 广播。没有 IP 时会跳过网络测试,因此 W800 Wi-Fi scan and BLE advertising test passed 不表示 HTTP 请求一定执行过。
当前 Socket 适配支持一个 IPv4 TCP 客户端连接;BLE 部分用于广播验证。
- Zephyr 接口
- Modem UART、设备模型、DNS、Socket offload
- 源码入口
apps/w800/src/main.c
lvgl_widgets_demo需配套 3.5 英寸触摸屏图形界面与触摸操作体验 LVGL 控件,通过触摸切换页面、调节实际背光亮度。
配套屏幕使用 ST7796S 显示控制器,分辨率为 320 × 480,通过 SPI 传输图像;FT6336U 触摸控制器通过 I²C 连接。
| 操作或观察位置 | 运行现象 |
|---|---|
| 程序启动 | 背光初始亮度为 80%,进入 LVGL 官方 widgets 示例 |
| 触摸页签 | 切换 Profile、Analytics、Shop 页面,操作控件 |
Profile 中的 Brightness 滑条 | 在 5%~100% 范围内调节实际背光 |
| 串口 | 每隔 2 秒输出传输速率、刷新次数、错误次数和触摸事件数 |
当前触摸驱动处理第一个触点。程序将显示传输、触摸输入和 PWM 背光控制连接到 LVGL 界面。
- Zephyr 接口
- Display、SPI、I²C、Input、PWM、LVGL
- 源码入口
apps/lvgl_widgets_demo/src/main.c
选择应用并运行
条目左侧的名称就是 apps 下的目录名,也是编译、烧录时使用的应用名称。每个应用分别生成固件;烧录另一个应用后,开发板会运行新程序。
| 应用中的文件 | 作用 |
|---|---|
CMakeLists.txt | 应用的编译入口 |
prj.conf | 启用需要的软件功能 |
src/main.c | 应用逻辑 |
boards/dshan_ra6m5.overlay | 部分应用用它补充设备树配置 |
编译、烧录和串口操作见编译与烧录程序,断点与单步操作见使用 VS Code 调试程序。需要对照芯片接口和板载器件时,查看RA6M5 芯片与硬件。