这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【MAX78000FTHR|Zephyr】zephyr工程创建与烧录

共1条 1/1 1 跳转至页

【MAX78000FTHR|Zephyr】zephyr工程创建与烧录

高工
2026-10-10 12:05:50     打赏
MAX78000FTHR LED 闪烁(Blinky)Zephyr 工程操作步骤

本文档介绍在 MAX78000FTHR 开发板上创建、编译并烧录一个 LED 闪烁工程的完整流程。

一、环境准备

项目说明
Zephyr 源码D:\luglZephyrproject\zephyr(版本 4.4.0)
Zephyr SDKD:\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:

  1. 从 ADI 官方 OpenOCD 仓库下载脚本(tag:0.12.0-1.4.0):

  2. 复制到 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。

五、烧录

  1. 用 USB 线连接开发板的调试口(板载 MAX32625PICO 调试器)到电脑。

  2. 执行烧录命令:

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
...

image.png




关键词: MAX78000FTHR     zephyr     创建    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]