本文档说明如何在新的电脑环境或将本工程移植到其他情况时,完整复现编译、烧录环境。
一、环境清单
| Zephyr 源码 | D:\luglZephyrproject\zephyr | 版本 4.4.0 |
| Zephyr SDK | D:\luglZephyrproject\zephyr-sdk-1.0.1\zephyr-sdk-1.0.1 | 含 ARM 工具链与 OpenOCD |
| west | v1.5.0 | pip install west |
| Python | 3.12 | Zephyr 构建依赖 |
| 板级目标名 | max78000fthr/max78000/m4 | Cortex-M4 核 |
| 调试器 | 板载 MAX32625PICO(CMSIS-DAP) | USB 连接即可烧录 |
二、工程结构
max78000fthr_shell/ ├── CMakeLists.txt # 工程定义 ├── prj.conf # CONFIG_GPIO=y, CONFIG_SHELL=y ├── boards/ │ └── max78000fthr_max78000_m4.overlay # 红色 LED 电平极性修正 └── src/ └── main.c # shell 命令实现
关键文件说明
prj.conf
CONFIG_GPIO=y CONFIG_SHELL=y
boards/max78000fthr_max78000_m4.overlay
MAX78000FTHR 板载红色 LED(LED1,GPIO2.0)硬件上是低电平点亮,Zephyr 官方板级 DTS 写的是 GPIO_ACTIVE_HIGH,需要在本工程内用 overlay 修正为 GPIO_ACTIVE_LOW,否则 led on / led off 的实际效果是反的:
#include <zephyr/dt-bindings/gpio/gpio.h>
&led1 {
gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
};注意 overlay 文件名必须与板级目标对应:max78000fthr_max78000_m4.overlay(板名和 qualifiers 用下划线连接)。
三、烧录环境配置(关键步骤)
MAX78000 的 flash 烧录需要 ADI 提供的 OpenOCD 目标配置脚本,Zephyr SDK 自带的 OpenOCD 中没有包含,需手动添加一次(每台新电脑只需做一次):
从 ADI 官方 OpenOCD 仓库(tag:0.12.0-1.4.0)下载两个文件:
复制到 SDK OpenOCD 的 target 脚本目录:
<Zephyr SDK>\hosttools\openocd\share\openocd\scripts\target\
本机备份位置:D:\luglZephyrproject\tools\openocd-adi-scripts\target\
说明:max78000.cfg 中针对该芯片做了专门的复位处理(在 ROM 地址 0x2124 设置硬件断点捕获复位后的 CPU),保证烧录过程稳定可靠。配置完成后 west flash 即可直接使用,无需其他参数。
四、编译与烧录
方式一:一键脚本(推荐)
D:\luglZephyrproject\build_max78000fthr_shell.bat
方式二:手动命令
CMD:
cd /d D:\luglZephyrproject set ZEPHYR_SDK_INSTALL_DIR=D:\luglZephyrproject\zephyr-sdk-1.0.1\zephyr-sdk-1.0.1 set ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build -b max78000fthr/max78000/m4 app\max78000fthr_shell -p west flash -d build
Git Bash:
cd /d/luglZephyrproject export ZEPHYR_SDK_INSTALL_DIR='D:\luglZephyrproject\zephyr-sdk-1.0.1\zephyr-sdk-1.0.1' export ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build -b max78000fthr/max78000/m4 app/max78000fthr_shell -p west flash -d build
编译成功的资源占用:
FLASH: 47196 B 512 KB 9.00% RAM: 8656 B 48 KB 17.61%
五、LED 命令
控制的 LED 为板载红色 LED(LED1),对应 GPIO2.0。
命令列表
| led on | 点亮 LED | led on |
| led off | 熄灭 LED | led off |
| led toggle | 翻转 LED 当前状态 | led toggle |
| led blink <间隔ms> | 按指定毫秒间隔闪烁 | led blink 200 |
| led blink 0 | 停止闪烁(保持当前状态) | led blink 0 |
查看帮助
输入 led 后按 Tab 键可自动补全/列出所有子命令;输入 help 可查看全部 shell 命令。
六、使用示例
uart:~$ led on LED on uart:~$ led toggle LED toggled, now off uart:~$ led blink 500 Blinking every 500 ms uart:~$ led blink 0 Blink stopped uart:~$ led off LED off
七、移植到其他 MAX78000 板卡
如需移植到 MAX78000EVKIT 等同芯片板卡:
将编译目标改为对应板子,如 max78000evkit/max78000/m4;
检查目标板 DTS 中的 LED 定义(节点标签、GPIO 端口、电平极性),相应修改或删除本工程的 overlay;
烧录脚本 max78000.cfg 相同,无需重新配置。
八、移植注意事项
板级目标名必须带 qualifiers:max78000fthr/max78000/m4,不能省略 /max78000/m4。
west build 的 -p 参数表示 pristine(全量重新配置),修改了 prj.conf 或 overlay 后建议保留。
串口控制台使用板载调试器的虚拟串口(CDC),Windows 设备管理器中显示为 "USB 串行设备",波特率 115200。
同一时刻只能有一个程序占用串口;烧录前请关闭串口工具,烧录完成后再打开。

我要赚赏金
