Zephyr 上的 Ambiq Apollo3 Blue EVB 开发板完整使用指南:从硬件特性到烧录调试 Zephyr 上的 Ambiq Apollo3 Blue EVB 开发板完整使用指南从硬件特性到烧录调试【免费下载链接】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本文是一份针对 Ambiq Apollo3 Blue EVB 开发板的 Zephyr 移植实践指南。文章围绕 boards/ambiq/apollo3_evb/doc/index.rst 展开系统梳理该板卡在 Zephyr 中的硬件资源、支持的外设特性、基于 J-Link 的烧录流程与串口验证方法并结合仓库内设备树、引脚复用配置与 SoC 级 Kconfig 源码帮助你快速在 apollo3_evb 上编译、烧录并运行自己的应用程序。一、开发板与 SoC 概览Apollo3 Blue EVB 是 Ambiq 推出的一款评估板Evaluation Board核心是一颗主打超低功耗的 Apollo3 Blue SoC。根据板卡文档其关键硬件规格如下主控 SoCAmbiq Apollo3 Blue最高运行频率 96 MHzCPU 核心ARM® Cortex®-M4F带浮点单元缓存每核心 16 kB支持 2 路组相联 / 直接映射2-way Associative/Direct-Mapped Cache存储最高 1 MB Flash代码/数据最高 384 KB 低泄漏/低功耗 RAM代码/数据无线能力集成 Bluetooth 5 低功耗BLE控制器。在 Zephyr 中该板卡的标识符为apollo3_evb其元数据定义于 boards/ambiq/apollo3_evb/apollo3_evb.yamlidentifier: apollo3_evb name: Apollo3 Blue EVB type: mcu arch: arm ram: 384 flash: 976 toolchain: - zephyr - gnuarmemb vendor: ambiq从该文件可以看出板卡属于 ARM 架构 MCU 类型拥有 384 KB RAM 与 976 KB 可用 Flash既支持 Zephyr 官方工具链也支持 GNU Arm Embedded 工具链板卡对应的 SoC 在 boards/ambiq/apollo3_evb/board.yml 中被声明为apollo3_blue对应源码位于 soc/ambiq/apollo3x。二、Zephyr 中支持的板级特性板卡文档通过.. zephyr:board-supported-hw::指令自动列出由板级设备树使能的外设。结合 apollo3_evb.yaml 的supported字段该板在 Zephyr 中可用的硬件特性包括特性说明UART串口板载串口控制台默认 115200 波特率ADC模数转换默认映射 P32 / P35 两个通道Watchdog看门狗定时器Counter计数器定时器GPIO通用输入输出SPI串行外设接口IOM0 等I2C / I2C Target主机与从机模式 I2CLogging日志子系统此外apollo3_evb.yaml 中testing.ignore_tags包含net表明在自动化测试twister中会跳过网络相关用例arch: arm与type: mcu则决定了 Zephyr 构建系统如何为该板选择体系结构代码与链接脚本。三、编译并烧录第一个应用hello_world3.1 准备烧录环境烧录依赖 SEGGER J-Link 调试器开发板上的JLINK USB 端口即板载 J-Link 调试器接口因此主机需要预先安装SEGGER J-Link 软件提供 J-Link 驱动与命令行工具pylinkPython 模块west flash通过它驱动 J-Link 完成烧录。3.2 使用 west 构建并烧录板卡文档以 hello_world 示例演示完整流程。在 Zephyr 环境已初始化 west 工作区下执行west build -b apollo3_evb samples/hello_world west flashwest build -b apollo3_evb会以 apollo3_evb 为目标板编译内核与应用west flash则调用板级烧录脚本将固件写入芯片。板级烧录参数定义在 boards/ambiq/apollo3_evb/board.cmakeboard_runner_args(jlink --deviceAMA3B1KK-KBR --ifaceswd --speed1000) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)从源码可以确认J-Link 使用的目标设备型号为AMA3B1KK-KBR调试接口为 SWD通信速率 1000 kHz最终复用 Zephyr 通用的jlink.board.cmake烧录框架。若你的环境缺少 J-Link 软件或 pylinkwest flash将无法正常工作请先完成安装并保证 JLINK USB 端口被主机识别。3.3 板级默认配置构建时板级默认配置由 boards/ambiq/apollo3_evb/apollo3_evb_defconfig 提供它开启了最小可用的串口控制台组合CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy这组配置保证内核启动日志与printk输出能够通过 UART0 送达串口终端是板卡文档中“能在串口看到 Hello World”的基础。四、串口终端连接与验证烧录完成后使用 minicom、putty 等任意串口终端软件连接板载虚拟串口参数必须与设备树中uart0的current-speed一致Speed波特率115200Data数据位8 bitsParity校验位NoneStop bits停止位1复位开发板后对应串口端口上应看到如下输出Hello World! apollo3_evb这条输出由 samples/hello_world 中的应用代码产生apollo3_evb后缀来自 Zephyr 构建系统注入的CONFIG_BOARD。串口参数之所以是 115200/8-N-1可在板级设备树 apollo3_evb.dts 中找到依据uart0 { current-speed 115200; pinctrl-0 uart0_default; pinctrl-names default; status okay; };五、深入设备树与引脚复用5.1 顶层设备树boards/ambiq/apollo3_evb/apollo3_evb.dts 定义了该板完整的硬件拓扑其中chosen节点将 Zephyr 内核的关键子系统绑定到具体外设zephyr,console/zephyr,shell-uart/zephyr,uart-mcumgr均指向uart0zephyr,itcm、zephyr,sram、zephyr,flash分别指向 TCM、SRAM 与 Flashzephyr,bt-hci指向bt_hci_apollo即板载的 Apollo3 蓝牙控制器zephyr,code-partition指向slot0_partition供 MCUboot 镜像槽使用。板级还声明了 5 个 LEDled0–led4均为 GPIO 低电平有效、3 个按键button0–button2以及一个默认disabled的 PWM LEDpwm_led0并建立了led0/led1/led2、sw0/sw1等标准别名方便应用与现有 Zephyr 示例如 blinky直接对接。5.2 Flash 分区布局同一文件中的flash0分区表反映了该板出厂引导与 OTA 的布局分区标签起始地址大小internal_bootloaderinternal_bootloader0x000000000xc00048 KBmcubootmcuboot0x0000c0000xc00048 KBimage-0slot0image-00x000180000x72000456 KBimage-1slot1image-10x0008a0000x72000456 KBstoragestorage0x000fc0000x400016 KB当不启用 MCUboot 引导加载器时SoC 级 Kconfig 会把FLASH_LOAD_OFFSET默认设为0xc000见 soc/ambiq/apollo3x/Kconfig.defconfig.apollo3_blue即应用直接放在 MCUboot 分区之后与分区表保持一致。5.3 引脚复用pinctrl板级引脚配置集中在 apollo3_evb-pinctrl.dtsi。以串口为例uart0_default: uart0_default { group1 { pinmux UART0TX_P22; }; group2 { pinmux UART0RX_P23; input-enable; }; };即 UART0 的 TX 复用到 P22、RX 复用到 P23RX 需使能输入。该文件还预置了 I2C0–I2C5、SPI0–SPI5、ADCADCSE4_P32、ADCSE7_P35、MSPI外部闪存以及 BLEIF蓝牙接口等完整引脚复用组因此扩展传感器或外设时通常只需在设备树中打开对应节点并选择引脚组即可。5.4 时钟源与系统节拍apollo3_evb.dts 中stimer0 { clk-source 3; };将系统定时器时钟源选为 XTAL 32.768 kHz。对应地板级 Kconfig.defconfig 根据时钟源动态选择系统时钟频率config SYS_CLOCK_HW_CYCLES_PER_SEC default 32768 if AMBIQ_STIMER_TIMER default 48000000 if CORTEX_M_SYSTICK即使用 Ambiq STIMER 作为系统时钟源时硬件时钟周期为 32768 Hz使用 Cortex-M SysTick 时为 48 MHz。同文件还将 SWO 日志后端LOG_BACKEND_SWO的默认频率设为 1 MHz配合itm_defaultSWO_P41引脚组即可通过 SWO 输出日志。六、深入SoC 级配置与蓝牙支持Apollo3 Blue 的 SoC 级配置位于 soc/ambiq/apollo3x/Kconfig.defconfig.apollo3_blue其中SOC_APOLLO3_BLUE符号控制下列默认值中断数量NUM_IRQS默认 31蓝牙BLE启用 BT 时主线程栈MAIN_STACK_SIZE默认提升到 2048同时预设了BT_BUF_ACL_TX_COUNT 4、BT_BUF_ACL_TX/RX_SIZE 251从而得出 L2CAP TX MTU 247 字节即 251 减去 4 字节 L2CAP 头并默认关闭 HCI ACL 流控无 MCUboot 场景FLASH_LOAD_OFFSET默认0xc000。板卡设备树中zephyr,bt-hci bt_hci_apollo与bleif { status okay; }的配合说明板载蓝牙 HCI 通过 BLEIF 接口引脚 P30–P33、P35、P41与 SoC 通信可直接在 Zephyr 上开发 BLE 应用而无需外接蓝牙模块。七、常见问题与注意事项west flash报错确认已安装 SEGGER J-Link 软件与 pylink且开发板通过 JLINK USB 端口连接主机板级烧录参数SWD、1000 kHz可在 board.cmake 中核对。串口无输出检查终端参数是否为 115200/8-N-1确认CONFIG_CONSOLE、CONFIG_UART_CONSOLE等板级默认配置未被应用覆盖apollo3_evb_defconfig。扩展外设I2C/SPI/ADC 等节点在设备树中默认多为disabled使用前需在应用 overlay 中打开节点状态并确认引脚复用组apollo3_evb-pinctrl.dtsi。使用 MCUboot分区表中已预留 mcuboot 分区与双镜像槽image-0/image-1与 16 KB 存储区可在此基础上开启固件升级功能若不用 MCUboot应用偏移自动落在0xc000。八、总结Apollo3 Blue EVB 在 Zephyr 中是一个开箱即用的超低功耗 ARM 平台通过 板卡文档 指引的west build -b apollo3_evb west flash流程配合 J-Link 烧录与 115200/8-N-1 串口终端即可在数分钟内跑通首个应用而设备树、引脚复用与 SoC 级 Kconfig 源码则为后续驱动开发、BLE 应用与低功耗调优提供了完整的可查依据。【免费下载链接】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),仅供参考