ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Zephyr 移植指南:MuseLab nanoCH57x 开发板(CH570/CH572 RISC-V SoC)的构建、烧录与调试

Zephyr 移植指南:MuseLab nanoCH57x 开发板(CH570/CH572 RISC-V SoC)的构建、烧录与调试 Zephyr 移植指南MuseLab nanoCH57x 开发板CH570/CH572 RISC-V SoC的构建、烧录与调试【免费下载链接】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 官方仓库中 boards/muselab/nano_ch57x/doc/index.rst 为骨架系统讲解 MuseLab nanoCH57x 评估板在 Zephyr RTOS 下的完整支持情况从基于 WCH沁恒CH570/CH572 SoC 与 QingKe V3C RISC-V 内核的硬件特性、引脚复用Pin Mapping表到通过west构建、使用 WCH LinkE 烧录与 OpenOCD 调试的完整流程。读完本文你将能够独立完成 nanoCH57x 板卡的 Zephyr 应用构建、烧录与调试环境配置。一、板卡概述MuseLab nanoCH57x 是面向 WCH CH570/CH572 SoC 的评估板。该 SoC 采用 RISC-V 架构核心为QingKe V3C 32 位 RISC-V 处理器最高运行频率 100 MHz使用 32 MHz 外部晶振提供时钟基准。从板级特性看nanoCH57x 提供了电源 LEDPower LED复位按键Reset ButtonUSB 端口一颗用户 LEDUser LED2.4G PCB 天线支持BLE / 2.4GHz RF 收发BLE/2.4GHz RF transceiver板卡相关的处理器信息与数据手册可参考 WCH CH572 官方产品页板卡原理图则维护在 nanoCH57x 的独立 Git 仓库中详见文末 References 小节。在 Zephyr 仓库中该板卡的完整描述文件位于 boards/muselab/nano_ch57x/doc/index.rst其板级元数据由 board.yml 定义board: name: nano_ch57x full_name: MuseLab nanoCH57x vendor: muselab socs: - name: ch570 - name: ch572从源码结构看该板卡同时支持CH570与CH572两颗 SoC分别对应两个独立的目标targetnano_ch57x/ch570与nano_ch57x/ch572。二者的设备树文件分别为 nano_ch57x_ch570.dts 与 nano_ch57x_ch572.dts两者均 include 共同的 nano_ch57x_common.dtsi差异仅在 SoC 头文件ch570d.dtsi/ch572d.dtsi与 model 字符串。对应的硬件描述YAML文件确认了两颗 SoC 的资源配置一致目标架构RAMFlash支持的驱动nano_ch57x/ch570nano_ch57x_ch570.yamlriscv12 KB256 KBuart、gpio、comparatornano_ch57x/ch572nano_ch57x_ch572.yamlriscv12 KB256 KBuart、gpio、comparator二、硬件配置详解2.1 处理器与时钟CH570/CH572 SoC 内置 QingKe V3C 32 位 RISC-V 处理器核最高主频 100 MHz时钟来源于 32 MHz 外部晶振。在 Zephyr 中这两颗 SoC 归属于SOC_SERIES_QINGKE_V3C系列见 soc/wch/ch32v/qingke_v3c/Kconfig.soc.ch570 与 Kconfig.soc.ch572config SOC_CH570 bool select SOC_SERIES_QINGKE_V3C config SOC default ch570 if SOC_CH570同时Kconfig.defconfig.ch570 与 Kconfig.defconfig.ch572 为二者定义了相同的向量表与中断规模config VECTOR_TABLE_SIZE default 35 config NUM_IRQS default 36即该 SoC 的向量表大小为 35、支持 36 个中断源这是移植板级中断驱动时的重要依据。2.2 板级默认设备树DTSnano_ch57x_common.dtsi 定义了板卡的默认设备树节点关键内容包括chosen 节点将 UART0 指定为 shell / 串口 / 控制台设备并将sram0、flash0分别指定为 SRAM 与 Flashchosen { zephyr,shell-uart uart0; zephyr,sram sram0; zephyr,serial uart0; zephyr,console uart0; zephyr,flash flash0; };用户 LED板载一颗蓝色用户 LED连接到gpioa的 PA11高电平有效leds { compatible gpio-leds; blue_led: led0 { gpios gpioa 11 GPIO_ACTIVE_HIGH; label LED; }; }; aliases { led0 blue_led; };这也是blinky示例中led0别名的来源。UART0默认使能波特率 115200并绑定 pinctrl 默认状态uart0 { status okay; current-speed 115200; pinctrl-0 uart_default; pinctrl-names default; };板卡默认开启串口、控制台与 UART 控制台支持见 nano_ch57x_ch570_defconfigCH572 目标配置相同CONFIG_SERIALy CONFIG_CONSOLEy CONFIG_UART_CONSOLEy2.3 引脚复用Pin MappingCH570/CH572 SoC 的外设可以被路由到板上不同的引脚。这些映射通过**设备树DTS**中的 pinctrl 配置实现。下表列出了每个外设的可用引脚及其默认引脚源自原文档PeripheralPossible Pin(s)Default PinUART0 RXDPA2, PA3, PA0, PA1, PA6, PA9, PA10, PA11PA2UART0 TXDPA3, PA2, PA1, PA0, PA7, PA8, PA11, PA10PA3IC20 SCLPA8, PA0, PA3, PA5PA8IC20 SDAPA9, PA1, PA2, PA6PA9SPI0 MOSIPA7PA7SPI0 MISOPA6PA6SPI0 SCKPA5, PA3PA5SPI0 SCSPA4, PA2PA4TMR0 - PWM0PA7, PA2, PA4, PA9PA7TMR0 - CAPIN1PA7, PA2, PA4, PA9PA7TMR0 - CAPIN2PA2, PA7, PA9, PA4PA2PWM (1-5)PA7, PA2, PA3, PA4, PA8PA7, PA2, PA3, PA4, PA8KEYSCAN (0-4)PA2, PA3, PA8, PA10, PA11PA2, PA3, PA8, PA10, PA11CMP0 - NPA2PA2CMP0 - PPA3, PA7PA3说明表中 IC20 对应 I2C 外设I2C0TMR0 对应定时器 0KEYSCAN 为按键扫描功能。板卡的默认 pinctrl 配置定义在 nano_ch57x-pinctrl.dtsi 中其 UART 默认复用恰好印证了上表的默认引脚TXD→PA3、RXD→PA2#include zephyr/dt-bindings/pinctrl/ch570-pinctrl.h pinctrl { uart_default: uart_default { group1 { pinmux UART_TXD_PA3_0; output-high; drive-push-pull; output-capacity 5mA-level; }; group2 { pinmux UART_RXD_PA2_0; bias-pull-up; }; }; };从源码可以看到UART TXDPA3被配置为推挽输出、输出高电平、驱动能力为 5mA 级别UART RXDPA2配置为上拉输入。开发者可以通过修改 DTS 的 pinctrl 节点把外设路由到表中列出的任意可用引脚。三、构建与烧录Flashing3.1 构建应用nanoCH57x 的应用程序可以采用 Zephyr 的标准方式构建。以官方blinky示例LED 定义见 nano_ch57x_common.dtsi为例指定板卡目标nano_ch57x/ch570进行构建并烧录west build -b nano_ch57x/ch570 samples/basic/blinky west flash也可以一步到位build flashwest build -b nano_ch57x/ch570 samples/basic/blinky west flash提示west build与west flash也可以使用west build -b nano_ch57x/ch570 samples/basic/blinky west flash串联执行。若使用的是 CH572 版本板卡将-b nano_ch57x/ch570替换为-b nano_ch57x/ch572即可。关于构建应用与运行应用的更通用说明可参考 Zephyr 文档的 Build an Application 与 Run an Application 章节对应仓库文档体系中的构建与运行指南。3.2 烧录与外部调试器官方建议使用外部编程器如WCH LinkE来方便地烧录与调试 nanoCH57x 板卡。此时需要将外部编程器与板卡按如下方式接线WCH LinkE3V3GNDSWDIOSWCLKTXRXnanoCH57x3V3GPA0PA1PA2PA3注意进行调试前必须在板卡上启用调试接口并关闭代码保护code protection否则无法正常烧录与调试。3.3 板级烧录配置Board Runner板卡的烧录运行器runner配置位于 board.cmakeboard_runner_args(OPEN --file-typeelf --cmd-reset-halt halt) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) find_program(OPENOCD openocd) set(OPENOCD ${OPENOCD} CACHE STRING FORCE)它复用了 Zephyr 通用的 OpenOCD runner并在调用 OpenOCD 时附加--file-typeelf、--cmd-reset-halt与halt参数。板卡的 OpenOCD 目标配置见 support/openocd.cfg其适配 WCH LinkEwlinkeadapter driver使用 SDI 传输transport select sdi并为 WCH RISC-V 目标创建了调试 tap 与wch_riscvflash bankadapter driver wlinke adapter speed 6000 transport select sdi wlink_set_address 0x00000000 set _CHIPNAME wch_riscv sdi newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x00001 ... flash bank $_FLASHNAME wch_riscv 0x00000000 0 0 0 $_TARGETNAME.0注意该配置文件针对WCH OpenOCD编写头注释明确标注 Tested with WCH openOCD liberated fork。要正常使用 OpenOCD runner需要配套 WCH 分支的 OpenOCD例如 jnk0le 维护的 WCH OpenOCD 自由分支。四、调试Debugging4.1 通过 OpenOCD 调试nanoCH57x 支持通过 OpenOCD 进行调试。典型调试命令如下仍以 blinky 为例west build -b nano_ch57x/ch570 samples/basic/blinky west debugwest debug会调用上文配置的 OpenOCD runner启动 GDB 调试会话。4.2 指定 WCH OpenOCD 二进制由于需要 WCH 定制的 OpenOCDZephyr 默认安装的 OpenOCD 可能不满足要求。官方文档提供了两种方式来指定 WCH OpenOCD 的路径方法一每次烧录/调试时临时指定在west flash或west debug命令后追加--openocd参数west flash --openocd path/to/wch-openocd/bin/openocd west debug --openocd path/to/wch-openocd/bin/openocd方法二通过 build.cmake-args 配置推荐只需一次将 WCH OpenOCD 路径写为构建配置参数west config build.cmake-args -- -DOPENOCDpath/to/wch-openocd/bin/openocd与方法一不同该方法只需执行一次后续west flash/west debug都会自动使用该 OpenOCD 路径。该参数与 board.cmake 中的OPENOCD缓存变量相对应——find_program(OPENOCD openocd)会优先使用 CMake 缓存中已指定的路径。五、支持的板级特性小结综合原文档与仓库源码nanoCH57x 板卡在 Zephyr 中当前可确认的能力如下SoC 支持CH570 与 CH572均为 QingKe V3C RISC-V 内核100 MHz32 MHz 外部晶振见 board.yml内存12 KB SRAM、256 KB Flash两个目标一致已列出的驱动支持UART串口/控制台、GPIO含 LED、Comparator比较器板载外设电源 LED、复位按键、USB 端口、蓝色用户 LEDPA11高电平有效、2.4G PCB 天线BLE/2.4GHz RF 收发烧录/调试通过 WCH LinkE WCH OpenOCD 完成支持west flash与west debug默认引脚复用UART0 TXD→PA3、RXD→PA2115200 波特率I2C0 SCL→PA8、SDA→PA9SPI0 与 PWM 等外设的默认映射见上文引脚复用表。六、References参考资源nanoCH57x 板卡硬件仓库nanoCH57x含板卡原理图 PDFQingKe V3C 32 位 RISC-V 处理器手册WCH 官方下载WCH CH572 产品页与数据手册WCH LinkE 编程器产品页WCH OpenOCD 自由分支jnk0le/openocd-wch以上外部资源链接均来自原文档的 target-notes 定义见 index.rst 末尾如需深入了解硬件细节与调试工具请以 WCH 官方渠道为准。【免费下载链接】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),仅供参考
返回列表