尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Zephyr 开发板指南:NXP TWR-KV58F220M(Kinetis KV5x)硬件配置、烧录与调试实战

Zephyr 开发板指南:NXP TWR-KV58F220M(Kinetis KV5x)硬件配置、烧录与调试实战 操作系统嵌入式RTOS物联网【免费下载链接】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点击查看免费下载TWR-KV58F220M 是 NXP 面向电机控制与功率转换场景推出的 Kinetis KV5x 系列开发板其主控 MKV58F1M0VLQ24 基于 Arm Cortex-M7 内核主频最高 240 MHz。本文以仓库中的官方板级文档 boards/nxp/twr_kv58f220m/doc/index.rst 为主线结合该板的设备树、Kconfig、默认配置与 FXOS8700 传感器驱动源码完整讲解在 Zephyr 下配置系统时钟、串口控制台、六轴传感器触发模式以及通过 OpenSDA仅限烧录与外部 J-Link调试完成构建、烧录与调试的完整流程。读完本文你将能够在 Zephyr 环境中为 TWR-KV58F220M 独立构建并运行 hello_world并掌握该板在调试手段上的特殊限制与应对方案。TWR-KV58F220M 开发板实拍图概述TWR-KV58F220M 是面向 NXP Kinetis KV5x 系列 32 位 MCU 平台设计的开发板。板载的 OpenSDAv2 串口与调试适配器运行开源引导程序可提供串口通信、固件烧录与运行控制调试三类能力——不过如后文所述在 KV58 这颗芯片上OpenSDA 目前仅能用于烧录与串口无法承担调试功能。在 Zephyr 仓库中该板支持信息集中在 boards/nxp/twr_kv58f220m/twr_kv58f220m.yaml其声明的关键元数据如下identifier:twr_kv58f220march:armArm Cortex-M7可用工具链zephyrZephyr SDK、gnuarmembGNU Arm Embedded内存声明ram: 128KB、flash: 1024KBsupported:flash、i2cSoCmkv58f24见 boards/nxp/twr_kv58f220m/board.yml硬件资源TWR-KV58F220M 的板级硬件特性如下主控MKV58F1M0VLQ24最高 240 MHz1 MB Flash256 KB RAM144 引脚 LQFPLow profile Quad Flat Package封装支持 1.8 V 或 3.3 V 两种 MCU 工作电压板载FXOS8700CQ六轴数字加速度计与磁力计四颗用户 LED四个用户按键电位器两个通用 TWRPI 扩展排针电机排针Motor pin header面向电机控制应用上述引脚与器件的实际连接关系可以从板级设备树 boards/nxp/twr_kv58f220m/twr_kv58f220m.dts 中确认例如四颗 LED 均挂在 GPIOE 上红色led_0D4PTE11、绿色led_1D3PTE12、蓝色led_2D2PTE29、橙色led_3D1PTE30并通过aliases映射为led0~led3四个按键分别为 SW2PTA4、SW3PTE4、SW4PTB5、SW5PTB4均为GPIO_ACTIVE_LOW映射为sw0~sw3其中sw0同时被用作mcuboot-button0aliases中将accel0与magn0均指向 FXOS8700 节点。支持的板级特性Zephyr 使用板级 YAML 声明该板支持的子系统TWR-KV58F220M 当前声明支持flash与i2c。从 boards/nxp/twr_kv58f220m/twr_kv58f220m_defconfig 可以看到板级默认启用的功能CONFIG_SERIALy CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy CONFIG_GPIOy CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC237500000 # Enable MPU CONFIG_ARM_MPUy CONFIG_HW_STACK_PROTECTIONy即默认启用串口与控制台、GPIO并开启 ARM MPU 与硬件栈保护CONFIG_HW_STACK_PROTECTION为运行时的内存安全提供基础保障。系统时钟KV58 SoC 在 Zephyr 中配置为使用板载50 MHz 外部晶振配合片上 PLL 生成237.5 MHz的系统时钟。这一配置在板级 Kconfig boards/nxp/twr_kv58f220m/Kconfig.defconfig 中体现config OSC_XTAL0_FREQ default 50000000 # 外部晶振 50 MHz config MCG_PRDIV0 default 0x3 # MCG 预分频 config MCG_VDIV0 default 0x16 # MCG VCO 倍频 config MCG_FCRDIV default 1时钟链路晶振 → MCG PLL → 内核/总线时钟的最终结果对应CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC237500000。设备树中 twr_kv58f220m.dts 的 SIM 节点配置也与之呼应将 PLL/FLL 时钟源选择为KINETIS_SIM_PLLFLLSEL_MCGPLLCLK。若在 KV5x 系列其他芯片上移植可参考同目录下 SoC 级配置 soc/nxp/kinetis/kv5x/Kconfig.defconfig其中声明了中断数量NUM_IRQS121以及 Flash 选项寄存器KINETIS_FLASH_CONFIG_FOPT0xFB禁用 NMI 引脚/中断。串口Serial PortKV58 SoC 内置六个 UART本板仅将UART0配置为控制台使用其余 UART 未使用。UART0 的引脚复用与波特率在设备树中定义twr_kv58f220m.dtsuart0节点status okaycurrent-speed 115200引用uart0_default引脚组twr_kv58f220m-pinctrl.dtsiUART0_RX_PTB0、UART0_TX_PTB1配置为低驱动强度、快速压摆率。设备树chosen节点中将zephyr,console、zephyr,shell-uart、zephyr,uart-pipe、zephyr,uart-mcumgr全部指向uart0因此控制台、Shell 与 MCUmgr 默认共用 UART0115200 8N1。加速度计与磁力计FXOS8700板载的 FXOS8700CQ 六轴传感器挂接在 I2C1 总线上设备树配置见 twr_kv58f220m.dtsi2c1 { status okay; pinctrl-0 i2c1_default; pinctrl-names default; fxos8700: fxos87001c { compatible nxp,fxos8700; reg 0x1c; int1-gpios gpioc 18 GPIO_ACTIVE_LOW; int2-gpios gpioc 19 GPIO_ACTIVE_LOW; }; };I2C1 的引脚为I2C1_SCL_PTD8/I2C1_SDA_PTD9开漏、快速压摆率见 twr_kv58f220m-pinctrl.dtsi传感器地址为0x1c中断引脚INT1PTC18与INT2PTC19已预留在设备树中。默认轮询模式与中断触发模式官方文档明确指出默认情况下TWR-KV58F220M 仅支持**轮询polling**方式读取 FXOS8700 的加速度与磁力计数据CONFIG_FXOS8700_TRIGGER_NONEy若要支持**触发中断**模式必须在跳线J2与J9上放置短路帽shunts在 Kconfig 中启用触发选项二选一CONFIG_FXOS8700_TRIGGER_GLOBAL_THREADy或CONFIG_FXOS8700_TRIGGER_OWN_THREADy。驱动侧的实现印证了这一配置逻辑FXOS8700 驱动源码 drivers/sensor/nxp/fxos8700/fxos8700_trigger.c 中CONFIG_FXOS8700_TRIGGER_OWN_THREAD会为该传感器创建独立线程fxos8700_thread_main而CONFIG_FXOS8700_TRIGGER_GLOBAL_THREAD则把触发处理挂到 Zephyr 全局工作队列CONFIG_FXOS8700_TRIGGER还会将 fxos8700_trigger.c 编入构建。仓库中的两个示例也给出了现成的触发配置加速度触发示例 samples/sensor/accel_trig/boards/twr_kv58f220m.confCONFIG_FXOS8700_TRIGGER_OWN_THREADy CONFIG_FXOS8700_MODE_ACCELy磁力计触发示例 samples/sensor/magn_trig/boards/twr_kv58f220m.confCONFIG_FXOS8700_TRIGGER_OWN_THREADy编程与调试构建与烧录应用的方式与 Zephyr 常规流程一致可参考 samples/hello_world 与 Zephyr 应用构建文档。以下以samples/hello_world为例。配置调试探针Debug Probe这是 TWR-KV58F220M 最需要注意的硬件特性官方文档给出三点关键结论OpenSDA 探针目前只能用于烧录将编译好的固件复制到 USB 大容量存储设备即可完成烧录OpenSDA 不能用于调试因为 pyOCD 不支持 KV58 这一目标器件OpenSDA 的 J-Link 固件截至 2019-06-03 版本同样不可用其针对 KV58 的 Flash 算法疑似存在缺陷。因此调试目标必须通过连接在 JTAG 排针 J13 上的外部 J-Link 调试探针来完成。使用前请安装 Zephyr 的 J-Link 主机工具jlink-debug-host-tools并确保其位于搜索路径中。Zephyr 侧的 J-Link 烧录配置在 boards/nxp/twr_kv58f220m/board.cmake 中声明board_runner_args(jlink --deviceMKV58F1M0xxx24) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)即烧录器 runner 使用 J-Link目标器件型号为MKV58F1M0xxx24。构建 hello_worldwest build -b twr_kv58f220m samples/hello_world配置控制台Console尽管 OpenSDA 探针无法用于调试但仍可作为USB 转串口适配器使用用 USB 线连接 PC 与板上的J22接口在串口终端minicom、putty 等中使用以下参数波特率Speed115200数据位Data8 bits校验ParityNone停止位Stop bits1烧录FlashingOpenSDA 作为 USB 大容量存储设备时烧录流程为先构建固件再将其复制到 OpenSDA 虚拟出的 U 盘中。对应 Zephyr 命令west build -b twr_kv58f220m samples/hello_world west flash烧录完成后打开串口终端按下SW1 复位按键终端中应看到如下输出***** Booting Zephyr OS v1.14.0-xxx-gxxxxxxxxxxxx ***** Hello World! twr_kv58f220m启动横幅中的具体版本号会随当前仓库版本变化示例中的v1.14.0为板级文档写作时的参考版本。调试Debugging使用外部 J-Link连接 JTAG 排针 J13时调试命令如下west build -b twr_kv58f220m samples/hello_world west debug打开串口终端在调试器中单步执行应用终端中同样应输出***** Booting Zephyr OS v1.14.0-xxx-gxxxxxxxxxxxx ***** Hello World! twr_kv58f220mFlash 分区布局补充除官方文档内容外从设备树 twr_kv58f220m.dts 可以看到该板为 MCUboot 准备的 Flash 分区布局Flash 扇区大小为 8 KB分区大小均按扇区对齐分区起始地址大小用途boot_partition0x0000000064 KBMCUboot 引导程序只读slot0_partition0x00010000424 KB固件镜像槽 0image-0slot1_partition0x0007a000424 KB固件镜像槽 1image-1storage_partition0x000e4000112 KB存储区chosen节点的zephyr,code-partition slot0_partition指向镜像槽 0使能 MCUboot 双槽 A/B 升级时可直接复用该布局。小结TWR-KV58F220M 在 Zephyr 中的支持要点可归纳为KV58 SoC 以 50 MHz 外部晶振经 PLL 得到 237.5 MHz 系统时钟UART0PTB0/PTB1115200 8N1作为默认控制台与 ShellFXOS8700 默认仅支持轮询启用中断触发需同时放置 J2/J9 跳线帽并选择CONFIG_FXOS8700_TRIGGER_GLOBAL_THREAD或CONFIG_FXOS8700_TRIGGER_OWN_THREAD烧录依赖 OpenSDA 的 USB 大容量存储模式调试则必须借助 J13 上的外部 J-Link。围绕这些要点结合 twr_kv58f220m.dts、twr_kv58f220m_defconfig 与 fxos8700_trigger.c 等仓库文件即可快速上手该板的应用开发与调试。赞分享操作系统嵌入式RTOS物联网【免费下载链接】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 下 NXP FRDM-MCXA577 开发板实战指南硬件特性、设备树配置与烧录调试Zephyr 下 NXP FRDM MCXA577 开发板实战指南硬件特性、设备树配置与烧录调试 导读 本文以 Zephyr RTOS 仓库中的 FRDM M操作系统嵌入式RTOS物联网Zephyr 板级支持实战NXP FRDM-K82FKinetis K82的硬件解析与构建、烧录、调试全流程Zephyr 板级支持实战NXP FRDM K82FKinetis K82的硬件解析与构建、烧录、调试全流程 FRDM K82F 是 NXP 面向 Kin操作系统嵌入式RTOS物联网Zephyr 中 NXP LPCXpresso55S36 开发板实战指南硬件特性、引脚映射、时钟配置与烧录调试Zephyr 中 NXP LPCXpresso55S36 开发板实战指南硬件特性、引脚映射、时钟配置与烧录调试 本文围绕 Zephyr 内核仓库中 board操作系统嵌入式RTOS物联网上一篇Blog.Core 开源生态贡献代码与社区协作的终极指南下一篇Ansible 公开 API 边界设计:读懂 context/public-api.md 中的 sunder 前缀与 _internal 包约定创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表