拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Zephyr 在 NXP MIMXRT1160-EVK 上的双核开发指南:架构、构建、烧录与调试

操作系统嵌入式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 RTOS 中 mimxrt1160_evk 板级支持包为核心系统讲解 NXP i.MX RT1160 双核跨界 MCU 评估板在 Zephyr 下的硬件资源布局、双核Cortex-M7/M4内存映射与启动机制、sysbuild 双核镜像构建流程、串口控制台配置以及基于 LinkServer / J-Link 的烧录与调试实战。读完本文你将掌握如何在 Zephyr 中为目标mimxrt1160_evk/mimxrt1166/cm7与mimxrt1160_evk/mimxrt1166/cm4构建、烧录和调试单核及 openamp 双核应用。板卡总览双核跨界 MCU 评估板MIMXRT1160-EVK 是 NXP 官方推出的 i.MX RT1160 跨界 MCU 评估板搭载MIMXRT1166DVM6A芯片。该 SoC 采用非对称双核架构Cortex-M7 主核主频 600 MHz是默认的 primary coreCortex-M4 从核主频 240 MHz。片上资源方面芯片集成 2MB SRAM其中 Cortex-M7 拥有 512KB TCMCortex-M4 拥有 256KB TCM。得益于宽温度范围设计该系列芯片面向消费、工业和汽车市场从源码中的板级描述board.yml可以确认该板对应 SoC 型号为mimxrt1166Kconfig 中通过SOC_PART_NUMBER_MIMXRT1166DVM6A选择具体封装型号见 Kconfig.mimxrt1160_evk。板载外设与接口在文档中完整列出是评估各种 Zephyr 驱动子系统的硬件基础存储器512 Mbit SDRAMW9825G6KHSEMC 控制器、128 Mbit QSPI FlashIS25WP128FLEXSPI 控制器、512 Mbit Octal Flash以及 TF 卡座SD 卡显示MIPI LCD 连接器网络10/100 Mbit/s 与 10/100/1000 Mbit/s 两路以太网 PHYUSBUSB 2.0 OTG 与 USB 2.0 Host 连接器各一个音频3.5mm 立体声耳机插孔、板载麦克风、左右扬声器输出接口电源5V DC 电源插孔调试JTAG 20-pin 连接器、OpenSDADAPLink 固件板载调试器传感与扩展MIPI 摄像头传感器连接器、Arduino 接口扩展口、CAN 总线连接器。外部存储器SEMC 与 FLEXSPI 的引导期初始化该平台挂载了两块外部存储器件均由引导阶段boot time的配置块完成初始化器件控制器状态与初始化方式W9825G6KHSDRAMSEMC通过**设备配置数据块Device Configuration Data, DCD**在启动时配置 SEMCIS25WP128QSPI FlashFLEXSPI通过**Flash 配置块Flash Configuration Block**在启动时配置 FLEXSPI源码级印证板级 KconfigKconfig.defconfig中仅当编译目标为 M7CPU_CORTEX_M7时才默认启用DEVICE_CONFIGURATION_DATA与NXP_IMX_EXTERNAL_SDRAM即DCD 只在主核镜像中携带用于在启动早期初始化 SEMC 控制器。Flash 配置块则位于 xip/evkmimxrt1160_flexspi_nor_config.c 及其头文件M7 的 defconfig 中CONFIG_FLEXSPI_CONFIG_BLOCK_OFFSET0x400见 mimxrt1160_evk_mimxrt1166_cm7_defconfig指定了 Flash 配置块在镜像中的偏移位置。在设备树层面IS25WP128 被建模为 FLEXSPI 控制器下的is25wp128节点jedec-id [9d 70 18]、16MB 容量、4KB 擦除块并在其中划分了 mcuboot 分区、slot0_partition7MB、slot1_partition7MB与storage_partition四个分区见 mimxrt1160_evk.dtsi。SDRAM 则声明为sdram0: memory80000000大小为 64MB。支持的板级特性与 ShieldsZephyr 使用.. zephyr:board-supported-hw::指令从板级 yaml 自动生成硬件支持列表。从 mimxrt1160_evk_mimxrt1166_cm7.yaml 可以看到 M7 目标支持can、counter、dma、flash、gpio、hwinfo、i2c、netif:eth、ptp_clock、pwm、spi、usb_device、usbd、watchdogM4 目标mimxrt1160_evk_mimxrt1166_cm4.yaml支持dma、flash、gpio、i2c、pwm、uart。ram/flash 声明分别为 M7256KB / 16384KB与 M4128KB / 128KB。需要注意的是当前尚未支持的特性可参考同系列的mimxrt1170_evk超级集板卡NXP 优先在超级集板卡上完成全平台支持Full Platform Support因此 mimxrt1170_evk 上已支持的特性大多可以直接复用到本板。部分特性通过 Zephyr Shields 完成验证rk055hdmipi4m、rk055hdmipi4ma0、g1120b0mipi—— 用于 MIPI-DSI 显示接口nxp_btb44_ov5640—— 用于 MIPI-CSI 视频/摄像头接口。设备树中对应地提供了nxp_mipi_connectorJ48 MIPI FPC 接口含背光、复位、触摸等引脚映射与nxp_cam_connectorJ2 44-pin 摄像头接口含 RESETB/PWDN 引脚两个 gpio-nexus 节点见 mimxrt1160_evk_mimxrt1166_cm7.dts并对外提供zephyr_lcdif、zephyr_mipi_dsi、nxp_mipi_csi、nxp_csi等符号供 shield 引用。连接与 I/O 引脚分配MIMXRT1160 SoC 共有六对 pinmux/GPIO 控制器。板级文档给出了关键引脚的复用与用途对照表这些映射与 mimxrt1160_evk-pinctrl.dtsi 中的 pinmux 节点一一对应引脚名复用功能用途WAKEUPGPIOSW7 按键GPIO_AD_04GPIOLED用户 LED D6绿色低电平有效GPIO_AD_24LPUART1_TXUART 控制台GPIO_AD_25LPUART1_RXUART 控制台GPIO_LPSR_00CAN3_TXflexcanGPIO_LPSR_01CAN3_RXflexcanGPIO_AD_29SPI1_CS0spiGPIO_AD_28SPI1_CLKspiGPIO_AD_30SPI1_SDOspiGPIO_AD_31SPI1_SDIspiGPIO_AD_08LPI2C1_SCLi2cGPIO_AD_09LPI2C1_SDAi2cGPIO_LPSR_05LPI2C5_SCLi2c连接 FXOS8700 传感器GPIO_LPSR_04LPI2C5_SDAi2c连接 FXOS8700 传感器GPIO_AD_04FLEXPWM1_PWM2pwm绿色 LED 的 PWM 控制在设备树中GPIO 别名与节点定义于 mimxrt1160_evk.dtsiled0指向gpio9 3低电平有效、sw0指向gpio13 0的用户按键 SW7同时定义了magn0/accel0别名指向 I2C5 上的nxp,fxos8700加速度计/磁力计地址 0x1f以及sdhc0指向usdhc1。PWM 控制绿色 LED 的节点为flexpwm1_pwm220ms 周期。双核内存映射与启动地址这是本板在 Zephyr 中最重要的架构主题。板级文档给出了双核协作的地址约定双核启动地址CoreBoot Address说明Cortex-M70x30000000[630K]primary core从 FLEXSPI 映射的 Flash 启动Cortex-M40x20020000[96K]从 OCRAM 启动双核内存布局内存地址[大小]用途flexspi10x30000000[16M]Cortex-M7 Flashsdram00x80030000[64M]Cortex-M7 RAMocram0x20020000[512K]Cortex-M4 flashsram10x20000000[128K]Cortex-M4 RAMocram20x200C0000[512K]Mailbox/共享内存需要特别留意ocram2 只有前 16KB 被正确设置了 MPU region 属性可用于共享内存。源码印证M7 设备树的chosen节点将zephyr,sram指向sdram0、zephyr,code-partition指向slot0_partition、zephyr,cpu1-region指向ocram、zephyr,ipc指向mailbox_aM4 设备树则将zephyr,sram指向sram1并注释提示使用 DMA 时 SRAM 必须选非缓存区域否则会出问题、zephyr,flash指向ocram_m4_itcm、nxp,m4-partition指向slot1_partition、zephyr,ipc指向mailbox_b见 mimxrt1160_evk_mimxrt1166_cm4.dts。Kconfig 层面Kconfig.defconfig为 M4 目标自动开启了BUILD_OUTPUT_INFO_HEADER并将DT_CHOSEN_IMAGE_M4 nxp,m4-partition同时通过BUILD_OUTPUT_ADJUST_LMA按dt_chosen_reg_addr_hex与 ocram 基地址之差调整输出镜像的 LMA 偏移——这正是 M4 镜像能直接落到ocram 区域执行的底层机制。系统时钟与串口系统时钟MIMXRT1160 SoC 默认使用SysTick作为系统时钟源M7 目标以 600MHz 运行SYS_CLOCK_HW_CYCLES_PER_SEC为 600000000M4 目标以 240MHz 运行240000000该默认值同样定义于 Kconfig.defconfig。当使能电源管理power management时板载32KHz 低频振荡器将作为 GPT 定时器的时钟源来产生系统时钟从而允许进入更低功耗状态代价是时钟分辨率降低。设备树中gpt_hw_timer与systick同时被使能注释明确说明若使能电源管理将改用 GPT 定时器以便门控核心时钟见 mimxrt1160_evk_mimxrt1166_cm7.dts。串口MIMXRT1160 SoC 共有 12 个 UART其中LPUART1 配置为控制台zephyr,console与zephyr,shell-uart均指向lpuart1波特率 115200并配置了 default/sleep 两套 pinmux 状态其余 UART 未使用。构建双核镜像Dual-Core Build双核 sample 的工作机制是M7 从 Flash 中将 M4 镜像加载到共享的 ocram 区域然后将 M4 的启动地址设置为该区域。目前唯一启用双核构建的 sample 是openamp对应仓库中的 samples/subsys/ipc/openamp。烧录顺序至关重要必须先烧录 M4 镜像使其写入 Flash再烧录 M7 镜像。openamp的 sysbuild 构建会通过设置镜像顺序image order自动完成这一流程。此外SECOND_CORE_MCUXMCUX launcher机制在 M4 目标开启时会自动生成一个最小的 launcher 镜像烧录到 M7 核用于把 M4 镜像拷入 ocram 并启动 M4。单核构建下从核M4可以正常调试但在双核构建下调试 M4 前应将其置于一个循环loop中再附加调试器。构建运行于 M4 核的应用由于 M4 没有独立的可引导 Flash任何针对 M4 核的应用都必须由 M7 先执行代码来拉起把 M4 镜像拷入 ocram 区域然后启动 M4 核。使用 sysbuild 构建 M4 目标时工具链会自动生成并烧录一个最小 launcher 镜像到 M7 核负责加载并启动 M4。因此开发独立的 M4 应用时推荐使用 sysbuild例如构建 hello_worldwest build -b mimxrt1160_evk/mimxrt1166/cm4 samples/hello_world --sysbuild west flash若希望禁用这一自动 launcher 行为可在构建时追加-DSB_CONFIG_SECOND_CORE_MCUX_LAUNCHERn调试探针配置板载调试器为OpenSDADAPLink支持两种使用方式LinkServer runner配合板载默认 CMSIS-DAP 固件将板载调试电路刷写为 Segger J-Link 固件或外接 J-Link 探针。从 board.cmake 可以看到三种 runner 的设备参数已预配置M7 目标或SECOND_CORE_MCUXlinkserver --deviceMIMXRT1166xxxxx:MIMXRT1160-EVK、jlink --deviceMIMXRT1166xxx6_M7 --reset-after-load、pyocd --targetmimxrt1160_cm7M4 目标jlink --deviceMIMXRT1166xxx6_M4注意J-Link 需 V7.50 以上且因板上默认启动核为 M7调试时仅支持运行 cm4 镜像、pyocd --targetmimxrt1160_cm4。使用 LinkServer安装 LinkServer 调试主机工具并确保其加入 PATH 即可。LinkServer 与板载调试器自带的 CMSIS-DAP 固件直接兼容。使用 J-Link安装 J-Link 调试主机工具并确保其加入 PATH。随后可用 west 显式指定 jlink runnerwest flash -r jlink配置串口控制台无论选择哪种调试探针串口控制台都通过 OpenSDA 微控制器充当 USB 转串口适配器。硬件准备如下确认跳线J5 与 J8 处于 ON出厂默认即 ON以将 UART 信号连接到 OpenSDA 微控制器用 USB 线将 PC 连接到板上的J11接口。在串口终端minicom、putty 等中使用以下参数波特率Speed115200数据位Data8 bits校验ParityNone停止位Stop bits1烧录与调试实战hello_world以下以hello_world为例展示完整烧录流程。上电前请将拨码开关 SW1 拨到0001bwest build -b mimxrt1160_evk/mimxrt1166/cm7 samples/hello_world west flash烧录完成后断电将 SW1 改为0010b重新上电打开串口终端按下 SW4 按钮复位板卡终端应输出***** Booting Zephyr OS v2.6.0-xxxx-xxxxxxxxxxxxx ***** Hello World! mimxrt1160_evk调试同样以 hello_world 为例west build -b mimxrt1160_evk/mimxrt1166/cm7 samples/hello_world west debug打开串口终端在调试器中单步执行应用终端应输出***** Booting Zephyr OS v2.4.0-xxxx-xxxxxxxxxxxxx ***** Hello World! mimxrt1160_evk上述输出中的版本号与构建标识随实际 Zephyr 版本而变化属示例格式。双核开发要点小结启动依赖M7 是唯一拥有可执行 Flash 映射FLEXSPI XIP的核M4 镜像始终存放在 Flash 分区中、运行时由 M7或 sysbuild 自动生成的 launcher搬运到 ocram 并引导执行烧录顺序双核场景先 M4 后 M7openamp 的 sysbuild 已自动编排共享内存核间通信使用 ocram2 区域但仅前 16KB 具备正确的 MPU 属性设计共享数据结构时须注意这一边界控制台LPUART1 115200-8-N-1通过 OpenSDA 的 J11 USB 口输出调试器默认 CMSIS-DAP LinkServer亦可切换 J-Link-r jlinkboot 配置烧录/启动模式由 SW1 拨码决定0001b烧录0010b运行复位键为 SW4。上述结论均可追溯到本板的设备树mimxrt1160_evk.dtsi、cm7 dts、cm4 dts、KconfigKconfig.defconfig、Kconfig.mimxrt1160_evk以及 runner 配置board.cmake。对于文档中未列出的其他特性可参考同系列超级集板卡 mimxrt1170_evk 获取更完整的支持清单。赞分享操作系统嵌入式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 i.MX8M Plus EVK 上的多核移植实战A53 与 M7 双核启动、烧录与调试指南Zephyr 在 NXP i.MX8M Plus EVK 上的多核移植实战A53 与 M7 双核启动、烧录与调试指南 导读 本文以 Zephyr 官方仓库中操作系统嵌入式RTOS物联网Zephyr 在 NXP FRDM-MCXA156 上的开发指南硬件特性、构建烧录与调试实战Zephyr 在 NXP FRDM MCXA156 上的开发指南硬件特性、构建烧录与调试实战 本指南基于 Zephyr 仓库内 boards/nxp/frdm操作系统嵌入式RTOS物联网在 NXP i.MX8M Mini EVK 上运行 ZephyrA53/M4 双核启动、烧录与调试完整指南在 NXP i.MX8M Mini EVK 上运行 ZephyrA53/M4 双核启动、烧录与调试完整指南 本指南以 Zephyr 仓库中的 imx8mm_e操作系统嵌入式RTOS物联网创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门