Zephyr 开发板实战:Microchip PIC32CZ CA80 Curiosity Ultra(pic32cz_ca80_cult)驱动与烧录全指南
Zephyr 开发板实战Microchip PIC32CZ CA80 Curiosity Ultrapic32cz_ca80_cult驱动与烧录全指南【免费下载链接】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 实时操作系统RTOS仓库中 Microchip PIC32CZ CA80 Curiosity Ultra 开发板的板级支持包展开系统讲解该开发板的硬件资源、Zephyr 设备树Devicetree实现、外设配置以及通过 MPLAB IPE 与 J-Link 两种方式完成固件烧录的完整流程。读完本文你将掌握如何基于pic32cz_ca80_cult板型名称构建并烧录 Zephyr 应用并理解该板级支持包在时钟树、GPIO、UART、I2C、SPI、Flash 分区等层面的底层实现细节。板卡概述PIC32CZ CA80 Curiosity Ultra 开发板Microchip 部件号EV51S73A是评估 MicrochipPIC32CZ CA80 微控制器的硬件平台。其设计目标是帮助 PIC32CZ CA80 用户快速上手外设开发并理解如何将这颗器件集成到自己的产品设计中。在 Zephyr 仓库中该板对应的板型标识符为pic32cz_ca80_cult板级支持包位于 boards/microchip/pic32c/pic32cz_ca80_cult 目录。PIC32CZ CA80 Curiosity Ultra 开发板图片位于板级文档目录doc/img/下硬件特性总览开发板官方文档doc/index.rst列出的硬件特性如下208 引脚 TFBGA 封装的 PIC32CZ8110 CA80 微控制器32.768 kHz 晶体振荡器8 MB Flash 与 1 MB RAMXplained Pro 扩展兼容接口两颗黄色用户 LED两颗机械用户按键一颗复位按键虚拟串口Virtual COM PortVCOM通过 Serial Wire DebugSWD对板载 PIC32CZ CA80 进行编程与调试Arduino UNO R3 兼容接口MikroBus Socket板载温度传感器图形接口Graphics interfaceG-bit 以太网千兆以太网2 个高速 USB 接口Type-C 与 Micro A/B从板级 YAML 元数据pic32cz_ca80_cult.yaml可以确认芯片资源规模flash 8192 KB8 MB、ram 1024 KB1 MB架构为 ARM工具链为 Zephyr SDK 自带工具链。Zephyr 板级支持包解析板型标识与 SoC 关联板级支持包的标识关系在三个文件中互相印证board.yml声明板名pic32cz_ca80_cult、全称PIC32CZ CA80 Curiosity Ultra、厂商microchip以及所搭载的 SoC 为pic32cz8110ca80208。Kconfig.pic32cz_ca80_cult当选择BOARD_PIC32CZ_CA80_CULT时自动select SOC_PIC32CZ8110CA80208将板级与 SoC 级 Kconfig 绑定。pic32cz_ca80_cult.dts 头部通过#include microchip/pic32c/pic32cz_ca/pic32cz_ca80/pic32cz8110ca80208.dtsi引入 SoC 级设备树并声明compatible pic32cz_ca80,cult, microchip,pic32cz8110ca80208, microchip,pic32cz。默认内核配置defconfigpic32cz_ca80_cult_defconfig 提供了板级默认 Kconfig 配置CONFIG_BUILD_OUTPUT_HEXy CONFIG_ARM_MPUy CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEyCONFIG_BUILD_OUTPUT_HEXy构建时额外生成 Intel HEX 格式镜像这是 MPLAB IPE 烧录所必需的文件格式见下文。CONFIG_ARM_MPUy启用 ARM 内存保护单元MPU为运行提供基础的内存隔离与安全保护。CONFIG_SERIAL/CONFIG_CONSOLE/CONFIG_UART_CONSOLE启用串口与 UART 控制台使得默认串口SERCOM1可直接输出内核日志与 shell。支持的外设子系统pic32cz_ca80_cult.yaml 中supported字段声明了该板在 Zephyr 中已验证支持的外设子系统这与官方文档中.. zephyr:board-supported-hw::指令渲染出的Supported Features表格一一对应子系统说明clock_control时钟控制XOSC / DPLL / GCLK 等dma直接内存访问DMACflashFlash 存储gpio通用输入输出i2cI2C 总线pinctrl引脚复用控制spiSPI 总线uart串口watchdog看门狗设备树核心实现chosen、LED、按键与 Flash 分区pic32cz_ca80_cult.dts 是板级设备树的核心以下逐一拆解。chosen 节点默认控制台与存储chosen { zephyr,sram sram0; zephyr,flash flash0; zephyr,flash-controller nvmctrl; zephyr,console sercom1; zephyr,shell-uart sercom1; };zephyr,sram、zephyr,flash分别指定内核使用的 SRAM 与 Flash 设备zephyr,console与zephyr,shell-uart指向SERCOM1即该板默认的 UART 控制台外设。用户 LED 与按键aliases gpio-leds / gpio-keysaliases { led0 led0; led1 led1; sw0 button0; sw1 button1; eeprom-0 eeprom; };LED0portb第 21 脚GPIO_ACTIVE_LOW低电平点亮LED1portb第 22 脚GPIO_ACTIVE_LOWSW0portb第 24 脚GPIO_PULL_UP | GPIO_ACTIVE_LOW事件码INPUT_KEY_0SW1portc第 23 脚GPIO_PULL_UP | GPIO_ACTIVE_LOW事件码INPUT_KEY_1led0/led1别名意味着任何依赖led0别名的通用应用例如 Blinky 示例通过LED0_NODE宏都可以不加修改直接运行。官方烧录指南中LED0 闪烁的验证步骤正是依赖这一别名约定。Flash 分区布局支持 MCUboot 双镜像升级flash0下定义了完整的 MCUboot 启动分区方案分区偏移地址大小LabelbootMCUboot0x00000000128 kBmcubootslot0image-00x040000003.75 MBimage-0slot1image-10x043c00003.75 MBimage-1storage0x04780000512 kBstorage四个分区合计正好覆盖 8 MB Flash 空间128 kB 3840 kB 3840 kB 512 kB 8320 kB ≈ 8 MB 可用区slot0/slot1 的双槽位设计为 A/B 镜像升级与回滚提供了硬件基础。时钟树从 12 MHz XOSC 到 240 MHz CPU设备树中配置了完整的时钟链路XOSC12 MHz 外部晶振xosc-en 1、xosc-xtal-en 1。DPLL0参考时钟源为xosc参考分频系数 2、反馈倍频系数 160输出分频系数 4得到 12 MHz / 2 × 160 / 4 240 MHz与cpu0的clock-frequency 240000000一致。XOSC32K32.768 kHz 低速晶振为 RTC 等低速外设提供时钟。GCLKGEN0以pll0-clkout0为源、分频 1作为系统主时钟gclk0。GCLKGEN1以pll0-clkout0为源、分频 6作为gclk1供 SERCOM9 I2C 使用。MCLK 域CPU 与外设时钟域分频均为 1。默认启用的外设SERCOM1UARTmicrochip,sercom-g1-uart115200-8-N-1rxpo 3、txpo 0用于默认控制台。SERCOM9I2C别名i2c0microchip,sercom-g1-i2c时钟频率I2C_BITRATE_FAST400 kHz挂载板载EEPROMatmel,at24兼容I2C 地址0x56256 字节、页大小 16、8 位地址宽度通过eeprom-0别名暴露给上层。SERCOM2SPImicrochip,sercom-g1-spidipo 3、dopo 0片选为portc第 10 脚低有效。DMACstatus okayI2C 与 SPI 均配置了 DMA 通道如 I2C 使用dmac通道 2/3SPI 使用通道 3/4。引脚复用pinctrlpic32cz_ca80_cult-pinctrl.dtsi 定义了三个默认引脚复用组SERCOM1 UARTPC4D_SERCOM1_PAD0TX、PC7D_SERCOM1_PAD3RXSERCOM9 I2CPD28D_SERCOM9_PAD0SDA、PD29D_SERCOM9_PAD1SCLSERCOM2 SPIPC8D_SERCOM2_PAD0MOSI、PC9D_SERCOM2_PAD1SCK、PC11D_SERCOM2_PAD3MISO这些 pinctrl 节点通过pinctrl-0 sercomX_xxx_default与pinctrl-names default挂接到各 SERCOM 外设节点上Zephyr 的 pinctrl 机制会在驱动初始化时自动完成引脚复用配置。连接与 IO 布局开发板的完整连接信息以PIC32CZ CA80 Curiosity Ultra 用户指南Microchip 文档编号 DS70005522为准其中详细说明了各接口的引脚分配、跳线设置与扩展接口定义。在 Zephyr 侧上节所述的设备树与 pinctrl 文件即为软件层面的连接图——例如 Arduino UNO R3、MikroBus 与 Xplained Pro 接口的引脚最终都会落到 PIC32CZ8110CA80208 的 PORTB/PORTC/PORTD 等 GPIO 组上开发者在编写 overlay 时可直接参照 pic32cz_ca80_cult.dts 与 pic32cz_ca80_cult-pinctrl.dtsi 确认可用引脚。编程与调试该板在 Zephyr 中注册了两个烧录 runnerMPLAB IPE与J-Link。注册关系位于 board.cmakeboard_runner_args(mplab_ipe --tool PKOB4 --part 32CZ8110CA80208 --erase --verify) board_runner_args(jlink --devicePIC32CZ8110CA80 --speed4000) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/mplab_ipe.board.cmake)其中MPLAB IPE runner默认使用板载PKOB4调试器目标器件为32CZ8110CA80208烧录时自动执行擦除与校验--erase --verify。J-Link runner指定器件型号PIC32CZ8110CA80SWD 通信速率为 4000 kHz。方式一使用 MPLAB IPE 烧录MPLAB IPEIntegrated Programming Environment是 Microchip 的独立编程工具可通过命令行工具ipecmd与 Zephyr 的west flash无缝集成。完整的安装与使用说明见仓库文档 boards/microchip/common/microchip-mplab-ipe-flashing.rst要点如下。1. 安装 MPLAB IPEMPLAB IPE 随 MPLAB X IDE 一并安装从 Microchip 官网下载 MPLAB X IDE 安装包。Linux 下执行chmod x MPLABX-vX.XX-linux-installer.sh后以 root 权限运行安装脚本Windows 下直接运行.exe安装程序。安装时务必在组件列表中勾选MPLAB IPE。安装完成后将ipecmd所在目录加入系统PATHLinux/opt/microchip/mplabx/vX.XX/mplab_platform/bin/ipecmd.shWindowsC:\Program Files\Microchip\MPLABX\vX.XX\mplab_platform\bin\ipecmd.exe2. 验证安装# Linux ipecmd.sh -? # Windows ipecmd.exe -?能看到帮助菜单即说明安装成功。3. 支持的调试/编程工具MPLAB IPE 支持 MPLAB PICkit、MPLAB SNAP、MPLAB ICD 系列调试器以及 Microchip 开发板上的板载调试器PKoB、PKoB4、EDBG 等。本开发板对应的是板载PKoB4。4. 构建应用并烧录west build -b pic32cz_ca80_cult -p -s samples/basic/blinky west flash构建成功后生成的 HEX 镜像位于build/zephyr/zephyr.hex由CONFIG_BUILD_OUTPUT_HEXy保证产出west flash会通过 MPLAB IPE runner 调用ipecmd将镜像写入目标器件。如需显式指定 runnerwest flash -r mplab_ipe5. 常见问题排查ipecmd未找到确认 MPLAB X IDE / MPLAB IPE 已安装且ipecmd所在目录已加入PATH。工具未被识别检查 USB 连接确保没有其他程序如 MPLAB X IDE、MPLAB IPE GUI占用调试器必要时用 MPLAB IPE GUI 更新探针固件Linux 下确认已安装 Microchip 工具的udev规则。目标器件不被识别在 MPLAB IPE Pack Manager 中安装或更新对应器件 pack确认目标板已上电、调试连接稳固确认器件型号与 Zephyr 板级定义中的32CZ8110CA80208一致。方式二使用 J-Link 烧录官方板级文档 doc/index.rst 给出了使用 Segger J-Link 调试器的完整步骤第 1 步安装 J-Link 软件从 Segger 官方渠道下载并安装 J-Link 软件工具包确保JLink、JLinkGDBServer等可执行文件位于系统PATH中。第 2 步连接开发板将J32 Debug ProbeMicrochip 调试探针连接到开发板的CORTEX DEBUG排针。将 J32 Debug Probe 的另一端通过 USB 连接到宿主机PC。将开发板上的DEBUG USB 端口连接到宿主机为开发板供电。第 3 步构建应用在 Zephyr 工作区中使用west构建 Blinky 示例west build -b pic32cz_ca80_cult -p -s samples/basic/blinky-b pic32cz_ca80_cult指定目标板-p在构建前执行 pristine干净清理-s samples/basic/blinky指定示例源码路径即仓库中的 samples/basic/blinky。第 4 步烧录固件west flash此命令使用默认的jlinkrunner 将应用烧录到开发板对应 board.cmake 中的jlink参数器件PIC32CZ8110CA80、SWD 速率 4000 kHz。第 5 步观察结果烧录完成后开发板上的LED0应开始闪烁表明应用运行成功。LED0 对应portb第 21 脚的黄色用户 LED见设备树leds节点Blinky 示例通过led0别名驱动该引脚验证了从构建、烧录到 GPIO 驱动的完整链路。参考资源与 PIC32CZ CA80 Curiosity Ultra 相关的进一步资料可在 Microchip 官网检索获取PIC32CZ CA80 产品页PIC32CZ8110CA80208 器件规格与数据手册入口。PIC32CZ CA80 Curiosity Ultra 开发板页面部件号 EV51S73A 的开发板订购与技术资料入口。PIC32CZ CA80 Curiosity Ultra 用户指南DS70005522板级连接、跳线与外设布局的权威说明对应上文Connections and IOs一节。MPLAB IPE 用户指南文档编号 50002227ipecmd 命令行工具的完整参数说明。在 Zephyr 仓库内如需深入板级实现细节可直接查阅以下文件板级设备树boards/microchip/pic32c/pic32cz_ca80_cult/pic32cz_ca80_cult.dts引脚复用boards/microchip/pic32c/pic32cz_ca80_cult/pic32cz_ca80_cult-pinctrl.dtsi默认配置boards/microchip/pic32c/pic32cz_ca80_cult/pic32cz_ca80_cult_defconfig烧录器配置boards/microchip/pic32c/pic32cz_ca80_cult/board.cmake板级元数据boards/microchip/pic32c/pic32cz_ca80_cult/pic32cz_ca80_cult.yamlMPLAB IPE 通用烧录指南boards/microchip/common/microchip-mplab-ipe-flashing.rst【免费下载链接】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),仅供参考