本文档介绍在 MAX78000FTHR 开发板上创建、编译并烧录一个 LED 闪烁工程的完整流程。
一、环境准备
| Zephyr 源码 | D:\luglZephyrproject\zephyr(版本 4.4.0) |
| Zephyr SDK | D:\luglZephyrproject\zephyr-sdk-1.0.1\zephyr-sdk-1.0.1 |
| west 工具 | 已通过 Python pip 安装(West version: v1.5.0) |
| 板级目标名 | max78000fthr/max78000/m4(Cortex-M4 核) |
| 调试器 | 板载 MAX32625PICO(CMSIS-DAP 接口) |
二、创建工程
工程目录:D:\luglZephyrproject\app\max7800fthr_led,结构如下:
max7800fthr_led/ ├── CMakeLists.txt ├── prj.conf └── src/ └── main.c
1. CMakeLists.txt
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(max7800fthr_led)
target_sources(app PRIVATE src/main.c)2. prj.conf
CONFIG_GPIO=y
3. src/main.c
开发板设备树中已定义 led0 别名,指向红色 LED(GPIO2.0),代码直接通过别名获取 LED 引脚:
#include <stdio.h>
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS 1000
/* The devicetree node identifier for the "led0" alias. */
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
int main(void)
{
int ret;
bool led_state = true;
if (!gpio_is_ready_dt(&led)) {
return 0;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return 0;
}
while (1) {
ret = gpio_pin_toggle_dt(&led);
if (ret < 0) {
return 0;
}
led_state = !led_state;
printf("LED state: %s\n", led_state ? "ON" : "OFF");
k_msleep(SLEEP_TIME_MS);
}
return 0;
}三、配置 OpenOCD 烧录支持(关键步骤)
MAX78000 的 flash 烧录需要使用 ADI 提供的 OpenOCD 目标配置脚本 max78000.cfg。将以下两个脚本文件放入 Zephyr SDK 自带 OpenOCD 的脚本目录中,之后即可直接使用 west flash:
从 ADI 官方 OpenOCD 仓库下载脚本(tag:0.12.0-1.4.0):
复制到 SDK OpenOCD 的 target 脚本目录:
D:\luglZephyrproject\zephyr-sdk-1.0.1\zephyr-sdk-1.0.1\hosttools\openocd\share\openocd\scripts\target\
本机已在 D:\luglZephyrproject\tools\openocd-adi-scripts\target\ 保留了一份备份。
该配置脚本针对 MAX78000 做了专门的复位处理:在 ROM 地址 0x2124 处设置硬件断点,确保芯片复位后 CPU 能被可靠地 halt 住,从而保证烧录过程稳定完成。
四、编译
打开终端,设置环境变量并执行编译:
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\max7800fthr_led -p
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/max7800fthr_led -p
编译成功后输出类似:
Memory region Used Size Region Size %age Used FLASH: 18712 B 512 KB 3.57% RAM: 4632 B 48 KB 9.42%
生成的固件位于 D:\luglZephyrproject\build\zephyr\zephyr.hex。
五、烧录
用 USB 线连接开发板的调试口(板载 MAX32625PICO 调试器)到电脑。
执行烧录命令:
west flash -d build
烧录成功的输出类似:
Info : SWD DPIDR 0x2ba01477 Info : [max32xxx.cpu] Cortex-M4 r0p1 processor detected [max32xxx.cpu] halted due to debug-request, current mode: Thread xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0 auto erase enabled wrote 24576 bytes from file build/zephyr/zephyr.hex in 1.181021s (20.321 KiB/s)
烧录完成后芯片自动复位运行。
六、一键编译烧录脚本
已在 D:\luglZephyrproject\build_max7800fthr_led.bat 创建一键脚本,双击即可编译并烧录:
@echo off 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\max7800fthr_led -p && west flash -d build
七、运行验证
开发板上的红色 LED(LED1)以 1 秒为间隔闪烁。
打开串口工具连接板载调试器的虚拟串口(波特率 115200),可看到每秒打印一次:
LED state: ON LED state: OFF LED state: ON ...

我要赚赏金
