尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Zephyr 开发指南:emtrion emSBC-NEON-CM7 板卡支持与 STM32F769NI 实战
Zephyr 开发指南emtrion emSBC-NEON-CM7 板卡支持与 STM32F769NI 实战【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr本指南以 Zephyr 仓库中 emtrion 板卡支持包boards/emtrion为对象系统讲解 emSBC-NEON-CM7 单板计算机的硬件特性、Zephyr 外设映射、时钟配置、默认串口控制台以及基于 west 的构建、烧录与调试全流程。阅读完本文你将能够基于emsbc_neon_cm7板卡目标在 STM32F769NI 平台上快速编译并运行 Zephyr 应用并能读懂其设备树DTS与 Kconfig 配置的底层设计。板卡概览面向多媒体与高速连接应用的 SBCemSBC-NEON-CM7 是 emtrion GmbH 推出的一款基于 STM32F769NIH6 的单板计算机SBC面向需要高速连接、多媒体处理与多传感器接口的广泛嵌入式应用场景。根据 板卡文档 的 Overview 章节其核心特性包括主控STM32F769NIH6内置 2 MB Flash 与 512 KB SRAM存储扩展16 MB Quad-SPI Flash、128 Mbit SDRAM、microSD 卡座连接能力USB 2.0 Host、带 Micro-AB 座的 USB 2.0 Device、符合 IEEE-802.3-2002 的 10/100 以太网显示与音频18 bpp RGB-LCD 显示接口、SAI 音频接口调试与扩展JTAG 调试接口、唤醒与复位两个按键、Arduino Uno V3 兼容接口电源7~24 V DC 宽压输入可为外部应用提供 3.3 V 或 5 V 输出在 Zephyr 中该板卡通过 board.yml 声明为type: mcu、arch: arm官方评估资源为 384 KiB RAM 与 2048 KiB Flash并声明支持 i2c、spi、gpio、adc、can、usb_device、eeprom、以太网netif:eth、内存控制器memc、触摸屏扫描kscan:touch以及 ptp_clock 等外设。硬件组成与 STM32F769NI 资源板载的 STM32F769NIH6 采用 BGA216 封装是 STM32F7 系列的高性能成员其片上资源在文档 Hardware 章节中有完整罗列ARM 32 位 Cortex-M7 内核带 FPU最高主频 216 MHz2 MB Flash、512 16 4 KB SRAM即主 SRAM 512 KB另含 ITCM/DTCM 等Chrom-ART 硬件加速器DMA2D用于增强图形用户界面硬件 JPEG 编解码器LCD-TFT 控制器最高支持 XGA 分辨率与 MIPI DSI 主机控制器最高 720p30Hz3 个 12 位 ADC共 24 通道2 个 12 位 DAC通用定时器、看门狗定时器、真随机数发生器、CRC 计算单元带硬件日历的 RTC亚秒级精度、96 位唯一 IDSDIO、10/100 以太网、USB 2.0 高速 Host/Device、CAN、2 路 UART、SAI、2 路 SPI、I2C 与 GPIO这些硬件能力与 Zephyr 板级支持包一一对应例如 DTS 中启用了adc1/adc2/adc3、dac1、rng、mac、sdmmc1、quadspi、can1、ltdc等节点详见下文源码分析。支持的功能与外设使能Zephyr 板卡支持包通过 Kconfig.defconfig 为板卡提供了若干默认使能项应用无需额外配置即可使用configdefault ETH_DRIVER default y configdefault EEPROM default y configdefault EEPROM_AT2X_INIT_PRIORITY default 55 configdefault NVMEM default y configdefault NVMEM_EEPROM default y也就是说以太网驱动、板载 EEPROMAT24 系列以及 NVMEM 框架在构建emsbc_neon_cm7目标时会被默认打开。其中 EEPROM 的初始化优先级被设为 55早于依赖其提供 MAC 地址的以太网驱动初始化这一点与 DTS 中以太网节点通过nvmem-cells引用 EEPROM 的 EUI-48 地址密切相关见后文。板卡级基础配置集中在 emsbc_neon_cm7_defconfig# Enable MPU CONFIG_ARM_MPUy # Enable HW stack protection CONFIG_HW_STACK_PROTECTIONy CONFIG_SERIALy # Enable Console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy # Enable GPIO CONFIG_GPIOy该配置默认开启了 ARM MPU 与硬件栈保护并启用 UART 控制台与 GPIO为安全与调试提供了基础保障。引脚映射与外设默认分配文档指出 emSBC-NEON-CM7 共有 9 个 GPIO 控制器负责引脚复用pin muxing、输入/输出、上拉等。板级默认的 Zephyr 外设引脚分配如下外设引脚UART_2 TX/RX/RTS/CTSPD5/PD6/PD4/PD3UART_3 TX/RXArduino SerialPB10/PB11I2C1 SCL/SDAArduino I2CPB8/PB7SPI2 NSS/SCK/MISO/MOSIArduino SPIPI0/PI1/PC2/PI3SPI5 SCK/MISO/MOSIPH6/PH7/PF9QUADSPI CLK/NCS/IO0/IO1/IO2/IO3PF10/PB6/PF8/PD12/PF7/PF6ETH REFCLK/CRSDV/MDIO/MDC/RXD0/RXD1/TXEN/TXD0/TXD1PA1/PA7/PA2/PC1/PC4/PC5/PG11/PB12/PB13ETH PHY RESETPC0SDIO CD#/CMD/CK/D0/D1/D2/D3micro SDCPA10/PD2/PC12/PC8/PC9/PC10/PC11CAN TX/RXPB9/PI9LD1PI7ADC1 IN9PB1ADC2 IN6PA6ADC3 IN3PA3DAC1 OUT1/OUT2PA4/PA5这些映射在 emsbc_neon_cm7.dts 中通过 pinctrl 节点逐一落实例如usart2 { pinctrl-0 usart2_tx_pd5 usart2_rx_pd6; pinctrl-names default; current-speed 115200; status okay; };同时DTS 通过别名将 Arduino 生态接口对齐为 Zephyr 惯用节点名arduino_i2c: i2c1 {}; arduino_spi: spi2 {}; arduino_serial: usart3 {};并定义了板载用户 LED 与led0别名leds { compatible gpio-leds; red_led_1: led_1 { gpios gpioi 7 GPIO_ACTIVE_LOW; label User LD1; }; }; aliases { led0 red_led_1; eeprom-0 eeprom0; };用户 LEDLD1连接在 GPIOI 的第 7 脚低电平有效即led0是拉低点亮。系统时钟配置STM32F769I 的系统时钟可由内部/外部振荡器或主 PLL 驱动。默认配置下系统时钟由 PLL 提供 216 MHz 主频PLL 的参考时钟来自 25 MHz 高速外部晶振HSE。对应 DTS 中的时钟树配置clk_hse { clock-frequency DT_FREQ_M(25); status okay; }; pll { div-m 25; mul-n 432; div-p 2; div-q 9; clocks clk_hse; status okay; }; rcc { clocks pll; clock-frequency DT_FREQ_M(216); ahb-prescaler 1; apb1-prescaler 4; apb2-prescaler 2; };即 HSE25 MHzPLL 分频/倍频后经 AHB预分频 1得到 216 MHz 系统时钟APB1 分频 454 MHz、APB2 分频 2108 MHz。此外 MCO1 引脚PA8被配置为输出 HSE 参考时钟不分频可供外部 PHY 等器件使用。串口控制台Zephyr 控制台输出被指定到 UART2它连接 emSBC-NEON-CM7 的 DEBUG 调试串口接口默认通信参数为115200 8N1。对应 DTS 中chosen节点chosen { zephyr,console usart2; zephyr,shell-uart usart2; zephyr,sram sram0; zephyr,flash flash0; zephyr,dtcm dtcm; zephyr,flash-controller ext_flash_ctrl; zephyr,canbus can1; };可以看到该板不仅把控制台与 Shell 绑定到 UART2还指定了外部 Quad-SPI Flash 作为 flash-controllerext_flash_ctrl、CAN1 作为默认 CAN 总线并将 DTCM 与 SRAM 分别暴露给 Zephyr 内存管理。构建、烧录与调试emsbc_neon_cm7板卡目标的应用构建、烧录方式与 Zephyr 常规流程一致参见 Zephyr 文档中的 build_an_application 与 application_run 相关章节。支持的烧录工具链板卡默认使用west OpenOCD runner进行烧录同时也支持 STM32CubeProgrammer 与 JLink$ west flash --runner stm32cubeprogrammer $ west flash --runner jlink其中stm32cubeprogrammerrunner 需要先完成对应的主机工具安装。这些 runner 的默认参数在 board.cmake 中定义# keep first board_runner_args(stm32cubeprogrammer --portswd --reset-modeur) board_runner_args(jlink --deviceSTM32F769NI --speed4000) # keep first include(${ZEPHYR_BASE}/boards/common/openocd-stm32.board.cmake) include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/stlink_gdbserver.board.cmake)即 STM32CubeProgrammer 通过 SWD 口并以 user reset 模式烧录JLink 以 4000 kHz 速度连接 STM32F769NI 器件除 OpenOCD 外还集成了 ST-Link gdbserver 供调试使用。底层 OpenOCD 配置文件 support/openocd.cfg 基于board/stm32f769i-disco.cfg并在 reset 事件中将适配器速度降为 1800 kHz因为复位瞬间 CPU 会降到 16 MHz同时在 gdb-attach 时执行reset init并强制使用硬件断点、gdb-detach 时恢复运行。烧录应用示例以hello_world示例为例首先用 ST-Link/V2 将 emSBC-NEON-CM7 连接到主机然后构建并烧录$ west build -b emsbc_neon_cm7 samples/hello_world $ west flash用串口终端连接板卡$ minicom -D /dev/ttyACM0成功启动后在控制台上应看到如下输出Hello World! arm调试应用调试同样走常规流程使用 west 的 debug 目标$ west build -b emsbc_neon_cm7 samples/hello_world $ west debug配合 OpenOCD 的 gdb-attach 钩子调试器挂载时会自动 halt 执行并复位到 init 状态方便从复位入口开始单步调试。设备树深层解析外设如何落到硬件上外部存储SDRAM 与 Quad-SPI板载 128 Mbit16 MBSDRAM 通过 FMC 控制器接入DTS 中定义了名为SDRAM1的 32 MB 内存区映射于 0xC0000000并给出完整的 SDRAM 时序与模式寄存器参数power-up-delay 100、num-auto-refresh 8、mode-register 0x230、refresh-rate 603等。LCD 控制器LTDC通过ext-sdram sdram1直接使用该 SDRAM 作为显存。16 MB Quad-SPI NOR FlashIS25LP128 兼容通过 QUADSPI 外设接入在 DTS 中以内存映射方式映射基址 0x90000000暴露并预定义了名为storage的分区ext_flash_ctrl: qspi-flash-controller0 { compatible st,stm32-qspi-nor; reg 0; size DT_SIZE_M(128); /* 128 Mbits */ qspi-max-frequency DT_FREQ_M(80); ... };这也是上文chosen中zephyr,flash-controller ext_flash_ctrl的原因——应用可以通过统一的 flash 抽象访问外部 QSPI Flash。以太网与 EEPROM 联动MAC 地址来源以太网使用 RMII 接口phy-connection-type rmiiPHY 复位脚为 PC0MDIO 总线上的 PHY 地址为 0。值得关注的是 MAC 地址的来源设计板载 I2C1 上的 EEPROM24AA02E48T地址 0x50在 nvmem-layout 中定义了一个 6 字节的只读 EUI-48 单元eeprom0: eeprom50 { compatible st,m24xxx, atmel,at24; reg 0x50; size 256; pagesize 16; address-width 8; timeout 5; nvmem-layout { compatible fixed-layout; eeprom0_eui48: eui48fa { reg 0xfa 6; read-only; }; }; };以太网节点通过 nvmem 引用该 EUI-48 作为 MAC 地址mac { ... nvmem-cells eeprom0_eui48; nvmem-cell-names mac-address; };这意味着每块板卡都可以从出厂预烧录的 EEPROM 中读取唯一 MAC 地址而无需在设备树中硬编码。这也解释了为何 Kconfig.defconfig 会默认开启 EEPROM 与 NVMEM 相关配置。其他外设microSDsdmmc1启用8 位数据总线中的 D0~D3PC8~PC11、CKPC12、CMDPD2卡检测引脚 PA10 低电平有效。CANcan1的 TX/RX 为 PB9/PI9与文档引脚表一致。ADC/DACadc1PB1/IN9、adc2PA6/IN6、adc3PA3/IN3均配置为同步时钟源、预分频 4dac1输出 PA4/PA5。小结emtrion emSBC-NEON-CM7 的 Zephyr 支持包展示了典型的 STM32F7 高性能板卡接入 Zephyr 的完整套路从board.yml/board.cmake的元数据与烧录工具链声明到Kconfig.defconfig的默认外设使能再到emsbc_neon_cm7.dts中精确到引脚的时钟树、存储控制器、以太网与多媒体外设配置。对开发者而言只需west build -b emsbc_neon_cm7 app即可将应用部署到这块具备 216 MHz Cortex-M7、大容量外部存储与丰富连接接口的板卡上进行嵌入式 Linux 类应用原型验证、GUI 与网络应用开发等实践。如需进一步深入建议结合仓库内 samples 目录下的 i2c、spi、can、ethernet、adc 等示例在emsbc_neon_cm7目标上逐一验证各外设的实际行为。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

OpenVINO:开源AI推理优化与部署工具,PyTorch与ONNX模型本地高效运行指南

OpenVINO:开源AI推理优化与部署工具,PyTorch与ONNX模型本地高效运行指南

OpenVINO:开源AI推理优化与部署工具,PyTorch与ONNX模型本地高效运行指南 【免费下载链接】openvino OpenVINO™ is an open source toolkit for optimizing and deploying AI inference 项目地址: https://gitcode.com/GitHub_Trending/op/openvino OpenVINO™ 是一个用…

📅 2026/9/16 17:29:01
深度解析 cuda-samples 之 alignedTypes:结构体对齐如何决定 GPU 全局内存访问带宽

深度解析 cuda-samples 之 alignedTypes:结构体对齐如何决定 GPU 全局内存访问带宽

深度解析 cuda-samples 之 alignedTypes:结构体对齐如何决定 GPU 全局内存访问带宽 【免费下载链接】cuda-samples Samples for CUDA Developers which demonstrates features in CUDA Toolkit 项目地址: https://gitcode.com/GitHub_Trending/cu/cuda-samples …

📅 2026/9/16 17:29:01
基于Flask+Vue3的二手书商城系统开发实践

基于Flask+Vue3的二手书商城系统开发实践

1. 项目背景与核心需求二手书籍交易市场近年来呈现爆发式增长,尤其在高校学生群体中需求旺盛。传统线下交易模式存在信息不对称、交易效率低等问题,而现有电商平台对二手书籍的专项支持又显不足。这正是我们选择开发一个专注二手书籍交易的在线商城系统的…

📅 2026/9/16 17:24:00
MORE NEWS

更多资讯

📰

STM32通用定时器精准控制加湿器启停实战

简介:本资源是一套基于STM32单片机的智能定时加湿器控制系统完整开发资料,面向嵌入式初学者、课程设计学生及STM32实践开发者,解决传统加湿器依赖手动操作、缺乏温湿度感知与定时逻辑导致的安全与健康隐患问题。资源包含Proteus仿真工程、Kei…

📰

2026年广州卫生间漏水怎么修?别急着砸砖重做

广州的卫生间一漏水,很多人第一反应就是砸砖重做。先别急。砸砖意味着敲掉瓷砖、重做防水、再贴回来,工期十天起步,花钱少则几千多则上万,楼下还等着用水,邻居关系也跟着紧张。其实不少漏水,根子根本不在防…

📰

四自由度机械臂Matlab轨迹规划仿真:从DH建模到插值实现

简介:基于Matlab的四自由度机械臂轨迹规划仿真包,面向机器人、自动化、计算机、电子信息工程及数学等专业学习者,可作为课程设计、毕业设计或自学进阶的参考资料,系统展示四自由度机械臂运动学建模、轨迹规划与可视化仿真的完整流…

📰

MATLAB绘制黑体辐射普朗克曲线:量纲、数值稳定性与工程应用

简介:本资源是一份面向物理专业本科生、研究生及MATLAB初学者的黑体辐射可视化教学实践包,聚焦普朗克定律的数值实现与图像表达,解决理论公式难直观理解、温度-波长-辐射强度关系不易动态呈现的问题。压缩包共2个文件(1个MATLAB源…

📰

AI时代写作风格统一性的三维定位与调配技巧

1. 写作风格统一性的痛点解析上周帮朋友审阅商业计划书时发现一个有趣现象:执行摘要部分用词严谨专业,到了团队介绍突然变成口语化表达,而竞品分析章节又切换成咄咄逼人的批判语气。这种"文风精分"现象在AI辅助写作时代愈发常见——…

📰

STM32音频采集与SD卡存储:DMA双缓冲+FATFS实现不丢帧录音

简介:基于STM32的音频采样与存储完整工程包,面向嵌入式入门者及需要实现AD采集与SD卡存储的开发者,可应用于录音笔、环境声监测、语音数据记录等场景,也可作为相关课程设计与毕业设计的参考基底。压缩包共297个文件,约…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬