ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

轻松学习Zephyr: 03-Helloworld

2026/8/13 2:54:16 拓冰建站 浏览量
轻松学习Zephyr: 03-Helloworld 文章摘要本文是 Zephyr RTOS 学习计划的第 2 课详细介绍了如何创建、编译和运行第一个 Zephyr “Hello World” 应用程序。主要内容包括环境准备激活 Zephyr 开发环境并创建工作空间工程创建建立完整的 Zephyr 应用目录结构CMakeLists.txt、prj.conf、src/main.c编译流程使用 west 工具链编译 STM32 (nucleo_f303re) 和 ESP32-S3 目标烧录与调试STM32CubeProgrammer 安装、USB 权限配置、串口监控west build 解析理解 Zephyr 构建系统的完整工作流程实践建议针对 NUCLEO-F303RE 和 ESP32-S3 开发板的实践顺序通过本课学习读者将掌握 Zephyr 应用开发的基础流程能够独立创建、编译、烧录和调试 Zephyr 应用程序。很好我们继续 Zephyr 学习计划。已经完成了- ✅ 01-Install环境安装 - ⏳ 02-HelloWorld第一个 Zephyr 程序这一课的目标是理解 Zephyr 工程结构并成功在模拟器和开发板上运行 Hello World第2课 HelloWorld本课目标完成以后你应该能够- 理解 Zephyr Application 的目录结构 - 会使用 west 编译程序 - 会烧录到 STM32 和 ESP32 - 会查看串口输出 - 理解 west build 的工作流程Step1 创建 Workspace首先激化环境cd~/zephyrprojectsource.venv/bin/activate进入workspacecd~/zephyrproject看看目录ls应该类似bootloader modules tools west.yml zephyr说明安装成功。Step2 创建自己的工程不要修改官方 sample。建立自己的目录mkdir-p~/workspace/hello_worldcd~/workspace/hello_world目录最终会变成hello_world/Step3 建立 CMakeLists.txt创建CMakeLists.txt内容cmake_minimum_required(VERSION3.20.0)find_package(Zephyr REQUIRED HINTS$ENV{ZEPHYR_BASE})project(hello_world)target_sources(app PRIVATE src/main.c)Step4 建立 prj.conf创建prj.conf先什么都不用写#以后这里会放CONFIG_GPIOyCONFIG_UART_CONSOLEy...Step5 建立 srcmkdirsrc建立src/main.c内容#includezephyr/kernel.hintmain(void){while(1){printk(Hello Zephyr!\n);k_sleep(K_SECONDS(1));}return0;}整个目录hello_world/ ├── CMakeLists.txt ├── prj.conf └── src └── main.cStep6 查看开发板名称查看所有 boardwest boardsSTM32 F303RE应该看到nucleo_f303reESP32S3一般是esp32s3_devkitc不同 ESP32S3 板子名称可能不同。可以搜索west boards|grepesp32Step7 编译 STM32在build之前(.venv) cxicczephyr:~/zephyrproject$ source ~/zephyrproject/zephyr/zephyr-env.sh(.venv) cxicczephyr:~/zephyrproject$ echo $ZEPHYR_BASE/home/cxicc/zephyrproject/zephyr否者ZEPHYR_BASE为空 你会找不到bitbake的扩展Extensions)cd~/workspace/hello-world west build-bnucleo_f303re.留心最后的点 别弄丢了 它表示 Application 当前目录。第一次比较慢。成功后最后会看到Memory region Used Size Region Size %age Used FLASH:15736B512KB3.00% RAM:4480B64KB6.84% CCM:0GB16KB0.00% IDT_LIST:0GB32KB0.00% Generating files from /home/cxicc/workspace/hello_world/build/zephyr/zephyr.elfforboard: nucleo_f303rebuild 目录build/ ├── zephyr ├── CMakeCache.txt ├── compile_commands.json...其中最重要的是build/zephyr/zephyr.elf build/zephyr/zephyr.bin build/zephyr/zephyr.hexStep8 烧录 STM321. 下载 STM32CubeProgrammer从 ST 官方页面下载 Linux 版本STM32CubeProgrammer 官方下载页你需要选择 Linux 版本。ST 下载通常需要接受许可协议可能要求登录 ST 账号。2. 安装到你的 home 目录假设下载后的安装文件类似~/Downloads/en.stm32cubeprg-lin-v*.sh3. USB 权限问题配置 udevSTM32/ST-LINK 通常应该通过 Linux udev 规则让普通用户访问 USB 设备。可以创建sudonano/etc/udev/rules.d/49-stlinkv2-1.rules加入SUBSYSTEMusb, ATTR{idVendor}0483,MODE0666保存后sudoudevadm control --reload-rulessudoudevadm trigger然后拔掉 Nucleo USB再重新插入。对很多系统 最后两个命令可不用执行。4. 下载连接 USB执行west flash默认调用 openocd 或者st-flash 这要取决于系统。看到Flash written successfully说明完成。Step9 打开串口把当前用户加入 dialoutsudousermod-aGdialout$USER注意当前终端不会立即获得新组权限。最简单的方法是退出 Ubuntu 用户并重新登录。如果是在 VirtualBox 里直接重启 Ubuntu VM 也可以sudorebootpicocom-b115200/dev/ttyACM0或者minicom输出应该不断出现Hello Zephyr!Hello Zephyr!Hello Zephyr!Step10 编译 ESP32S3如果已经安装好 Espressif SDK可以编译west build-besp32s3_devkitc如果你的开发板型号不同先确认正确的 board 名称。Step11 理解 west build执行west build-bnucleo_f303re实际上会依次完成Application │ ▼ CMake │ ▼ Kconfig │ ▼ Device Tree │ ▼ Generate Headers │ ▼ Compile │ ▼ Link │ ▼ zephyr.elf │ ▼ bin / hexStep12 常用命令第一次编译west build-bnucleo_f303re清理后重新配置west build-palways-bnucleo_f303re烧录west flash查看日志west build-tmenuconfig查看编译目标west build-thelpStep12 快捷的shell脚本一般为了保证工程独立性 不会把worksapce放在zephyrproject, zephye-sdk-xxx 目录中 像我就放在HOME目录在其中创建一个shell 脚本start.sh, 只要 $ source start.sh 或 . start.sh 就可以设置环境 检查ZEPHYR_BASE, 所有的bitbake扩展都依赖它#!/bin/bashcd~/zephyrproject||exit1source.venv/bin/activatesourcezephyr/zephyr-env.shechoZephyr environment ready.echoZEPHYR_BASE$ZEPHYR_BASEechoPython$(whichpython)echoWest$(whichwest)本课需要掌握的知识完成本课后你应该能够回答1.Zephyr 应用至少包含哪些文件- CMakeLists.txt - prj.conf - src/main.c2.prj.conf 的作用是什么- 配置 Kconfig 选项启用或禁用 Zephyr 功能如 GPIO、UART、Bluetooth 等。3.west build 做了哪些事情- 配置 CMake、解析 Kconfig 和 Device Tree、编译、链接并生成可烧录的固件。4.build/zephyr/ 下最重要的文件有哪些- zephyr.elf调试 - zephyr.bin烧录 - zephyr.hex部分烧录工具使用建议的实践顺序结合你的硬件由于你目前有 NUCLEO-F303RE 和 ESP32-S3建议先完成1.在 nucleo_f303re 上成功编译、烧录并看到 Hello Zephyr!。2.再切换到 ESP32-S3体验不同 Board 的构建流程。3.两块板都成功后再进入下一课 03-GPIOLED Blink学习 GPIO、Device Tree 和板级外设配置。