资讯详情

资讯详情

Zephyr 中 NXP LPCXpresso55S36 开发板实战指南:硬件特性、引脚映射、时钟配置与烧录调试

Zephyr 中 NXP LPCXpresso55S36 开发板实战指南硬件特性、引脚映射、时钟配置与烧录调试【免费下载链接】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/nxp/lpcxpresso55s36板级文档boards/nxp/lpcxpresso55s36/doc/index.rst展开系统讲解这款 Arm Cortex-M33 评估板在 Zephyr 中的定位LPC55(S)3x 家族的超集参考板。读完本文你将掌握该板的硬件资源与 IOCON 引脚复用方式、设备树中控制台/CAN/PWM/Flash 分区等关键配置以及使用 LinkServer 烧录、串口控制台 115200-8-N-1 调试的完整操作流程并能基于板级源码DTS、pinctrl、runner 配置自行扩展外设支持。一、板卡概览与硬件资源LPCXpresso55S36 是 NXP 面向 LPC55S3x/LPC553x MCU 家族的评估平台核心芯片为 LPC55S36基于 Arm Cortex-M33 架构。板载丰富的扩展接口使其成为 LPC55 系列功能验证的主力开发板。官方文档给出的硬件清单如下LPC55S36 Cortex-M33 微控制器最高运行频率 150 MHz片上 256 KB Flash 与 112 KB SRAMLPC-Link2 高速 USB 调试探针自带 VCOM 串口通过 LPC-Link2 探针实现的 I2C/SPI USB 桥接MikroElektronika ClickmikroBUS扩展接口兼容 Arduino UNO 的 LPCXpresso 扩展连接器兼容 PMod 的扩展/主接口Reset、ISP、Wake、User 四个按键三色 LED全速FSUSB 设备/主机口、高速HSUSB 设备/主机口外接 USB 转串口线的 UART 排针CAN 收发器带线路输入/输出的立体声音频编解码器。在 Zephyr 中板卡身份由 boards/nxp/lpcxpresso55s36/board.yml 声明板名为lpcxpresso55s36厂商nxpSoC 为lpc55s36。这与文档中硬件核心为 LPC55S36 SoC的描述一一对应也是west build -b lpcxpresso55s36时传入的板级标识。二、在 Zephyr 生态中的定位LPC55(S)3x 家族超集板板级文档中特别强调了一段战略定位NXP 将 LPCXpresso55S36 视为 LPC55(S)3x 整个 MCU 家族的超集superset评估板。这意味着 NXP 的全平台支持策略是优先在此板上启用 Zephyr 的新特性从而惠及整个 LPC55(S)3x 家族。同系列的另一块超集板 lpcxpresso55s69LPC55S69功能更多其已支持的特性可以复用到 lpcxpresso55s36 上。从源码结构看这一定位体现在板级 YAML 元数据 boards/nxp/lpcxpresso55s36/lpcxpresso55s36.yaml 中它声明了架构为arm、112 KB RAM、246 KB Flash256 KB 总量扣除末尾保留区后可用部分并列出当前已验证的子系统能力adc、dac模数/数模转换canCAN 总线配合板载收发器comparator模拟比较器counter硬件计数器flash、gpio、watchdog、crc存储与基础外设gint通用中断控制器pwm脉宽调制usb_device/usbdUSB 设备端arduino_gpioArduino UNO 兼容排针 GPIO 映射。这一能力清单可以直接作为选型依据如果你的项目需要上述任意子集lpcxpresso55s36 都可直接复用 Zephyr 的通用驱动框架无需自行编写 BSP。三、引脚复用IOCON 与 pinctrlLPC55S36 SoC 通过 IOCON 寄存器配置引脚功能。板级文档给出了核心引脚的官方分配表引脚功能用途PIO0_17GPIOUSR SW3 按键PIO0_22GPIO绿色 LEDPIO0_28GPIO红色 LEDPIO0_29USART控制台 RXPIO0_30USART控制台 TXPIO1_11GPIO蓝色 LEDPIO1_18GPIOWakeup SW1 按键PIO1_20 / PIO1_17FLEXPPWM0_PWM0_A/BPWM 输出PIO1_6 / PIO1_22FLEXPPWM0_PWM1_A/BPWM 输出PIO1_8 / PIO1_4FLEXPPWM0_PWM2_A/BPWM 输出PIO1_21 / PIO0_3FLEXPPWM1_PWM0_A/BPWM 输出PIO1_23 / PIO0_21FLEXPPWM1_PWM1_A/BPWM 输出PIO1_25 / PIO0_31FLEXPPWM1_PWM2_A/BPWM 输出PIO1_2CAN0_TXDCAN 发送PIO1_3CAN0_RXDCAN 接收PIO0_22USB0_VBUSUSBFS 电源检测这些引脚分配在 Zephyr 中有两份对应的源码实现板级 DTS boards/nxp/lpcxpresso55s36/lpcxpresso55s36.dts 中声明了 LED 与按键。三色 LED 分别挂在gpio1 28红、gpio0 22绿、gpio1 11蓝并提供led0/led1/led2别名两个按键btn_wkWakegpio1 18低电平有效编码INPUT_KEY_WAKEUP与btn_usrUSRgpio0 17低电平有效编码INPUT_KEY_0与 IOCON 表中 PIO1_18、PIO0_17 完全吻合。引脚复用配置集中在 boards/nxp/lpcxpresso55s36/lpcxpresso55s36-pinctrl.dtsi由gen_board_pinctrl.py基于LPC55S36.mex自动生成。例如控制台 USART 的复用组pinmux_flexcomm0_usart: pinmux_flexcomm0_usart { group0 { pinmux FC0_RXD_SDA_MOSI_DATA_PIO0_29, FC0_TXD_SCL_MISO_WS_PIO0_30; slew-rate standard; }; };即 FlexComm0 的 RX/TX 分别路由到 PIO0_29/PIO0_30与上表一致。CAN0 复用组同样明确CAN0_RD_PIO1_3与CAN0_TD_PIO1_2。该文件还包含 I2CFC2、HS-SPI、LPADC0含nxp,analog-mode模拟属性、FLEXPPWM0/1 各通道、USBFS VBUS 检测、DAC0、高速比较器 HSCMP0 等复用组模拟引脚ADC/OPA/DAC/HSCMP统一标注了模拟模式便于按需在 DTS 中引用。此外DTS 中通过arduino_header节点compatible arduino-header-r3将 Arduino UNO 排针的 A0–A5、D0–D15 逐一映射到具体 PIO如 A0→gpio0 15、D0→gpio2 0等并通过mikrobus_header节点compatible mikro-bus暴露 Click 扩展的 AN/RST/CS/SCK/MISO/MOSI/PWM/INT/RX/TX/SCL/SDA 引脚二者都实现了 GPIO 透传gpio-map-pass-thru 0 0x3f用户可以直接用标准device_get_binding(arduino-header)/gpio_dt_spec方式访问扩展排针。四、系统时钟文档明确了时钟方案LPC55S36 默认使用PLL1由外部 24 MHz 晶振驱动锁频至 144 MHz 作为系统时钟源。需要注意一个关键约束当 Flash 控制器XIP 方式执行使能时内核时钟会降为 96 MHz其余系统时钟源则可按需求在 SoC 内切换。这个约束对性能敏感的应用有实际意义如果你计划把代码放在 SRAM 中运行配合 DMA 访问 Flash需要重新评估主频与功耗的取舍反之默认 XIP 配置下 96 MHz 已经是稳定可用的上限。五、串口与设备树关键配置5.1 串口LPC55S36 SoC 内置8 个 FLEXCOMM 接口用于串行通信。板级 DTS 中仅 FlexComm0 被启用为 USART 控制台其余未分配flexcomm0 { status okay; compatible nxp,lpc-usart; current-speed 115200; pinctrl-0 pinmux_flexcomm0_usart; pinctrl-names default; };current-speed 115200与后文串口终端配置参数一致。chosen节点中zephyr,console、zephyr,shell-uart与zephyr,uart-mcumgr全部指向flexcomm0并提供了usart-0别名——即 Zephyr 控制台、Shell 与 MCUmgr 管理通道共用这一个 USART。5.2 设备树总览chosen、别名与外设使能lpcxpresso55s36.dts 的chosen节点还声明了zephyr,sram sram0、zephyr,flash flash0、zephyr,flash-controller iap内存布局与片上 IAP Flash 控制器zephyr,canbus can0CAN 总线设备别名zephyr,crc crc硬件 CRC 计算单元。同文件中被使能status okay的 SoC 外设包括adc0LPADCCH0A 引脚带模拟模式、dac0、opamp0、hscmp0高速比较器、crc、wwdt0窗口看门狗、powerquadCortex-M33 的 PowerQuad 指令集加速、dma0、gint0/gint1、ctimer0~4、usbfs全速 USB 设备端别名zephyr_udc0以及 CAN0can0 { pinctrl-0 pinmux_mcan_can0; pinctrl-names default; status okay; can-transceiver { max-bitrate 5000000; }; };CAN 收发器的max-bitrate属性标定为 5 Mbps与板上高速 CAN 收发器相符。5.3 Flash 分区表DTS 中flash0定义了完整的固定分区布局Flash 以 32 KB 子区为粒度可在安全 AHB 控制器中按区配置安全级别分区标签起始地址大小boot_partitionmcuboot0x0000032 KBslot0_partitionimage-00x00800096 KBslot1_partitionimage-10x02000096 KBstorage_partitionstorage0x03800020 KB未分区PFR 保留区末尾12 KBchosen中zephyr,code-partition slot0_partition指向 image-0。该布局天然适配 MCUboot 双槽升级场景mcuboot-button0别名已指向btn_wk按键便于手动触发安全启动行为若不需要 Bootloader直接整片烧录应用同样可行因为west flash默认处理整块镜像。六、编程与调试Runner 与工具链文档给出的编程/调试模型是板载 LPC-Link2MCU-Link探针同时承担烧录与调试且默认工作模式为 CMSIS-DAP宿主侧使用 NXP LinkServer 工具。Zephyr 中对应的 runner 配置在 boards/nxp/lpcxpresso55s36/board.cmakeboard_runner_args(linkserver --deviceLPC55S36:LPCXpresso55S36) board_runner_args(jlink --deviceLPC55S36 --reset-after-load) board_runner_args(pyocd --targetlpc55s36)三条 runner 参数分别对应三种可选方案LinkServer默认设备串LPC55S36:LPCXpresso55S36精确指定芯片与板子。使用前提是安装 LinkServer 调试宿主工具并确保其位于PATH。这也是 Zephyr 调试文档中mcu-link-onboard-debug-probe CMSIS-DAP 模式的标准用法。J-Link板载 MCU-Link 硬件在刷入特定固件后可作为 J-Link 探针使用此时改用SEGGER J-Link工具链Zephyr 侧通过--deviceLPC55S36 --reset-after-load参数接管设备选择与下载后复位。pyOCD以--targetlpc55s36参数接入作为开源探针方案的备选。板级默认配置 lpcxpresso55s36_defconfig 打开了一组基础能力CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy CONFIG_GPIOy CONFIG_ARM_MPUy CONFIG_RUNTIME_NMIy其中UART_INTERRUPT_DRIVEN保证控制台在多线程/中断环境下可靠收发ARM_MPU默认启用 MPU 内存保护RUNTIME_NMI使运行时能感知不可屏蔽异常。Kconfig.lpcxpresso55s36则固定选择SOC_LPC55S36与封装LPC55S36JBD100。七、串口控制台配置按下文档操作用 USB 数据线将 PC 连接到板上J1LINK2接口LPC-Link2 的 VCOM 口打开任意串口终端minicom、putty 等参数如下参数值波特率115200数据位8校验位无None停止位1即 115200-8-N-1与 DTS 中current-speed 115200一致无需额外修改。八、烧录示例hello_world以最典型的 samples/hello_world 应用为例构建并烧录west build -b lpcxpresso55s36 samples/hello_world west flashwest flash会经由 LinkServer runner见上文 runner 参数将镜像写入板载 MCU-Link 探针目标芯片。烧录完成后打开串口终端按下 RESET 按键复位板卡应看到***** Booting Zephyr OS v2.2.0 ***** Hello World! lpcxpresso55s36注意终端输出中的 OS 版本号会随你构建时的 Zephyr 版本变化Hello World! lpcxpresso55s36中的板名则来自 DTS 的model属性与板级标识可作为烧录成功的直接判据。九、调试示例对同一 hello_world 应用执行交互式调试west build -b lpcxpresso55s36 samples/hello_world west build -t debug-t debug目标会启动 GDB 后端经 LinkServer 与板载探针通信进入调试会话后在 GDB 中逐步执行next/step随后在串口终端观察输出***** Booting Zephyr OS zephyr-v2.2.0 ***** Hello World! lpcxpresso55s36由于调试会话会停在断点控制台消息只有在继续执行后才会打印这是预期行为。若切换到 J-Link 固件模式使用同一颗 MCU-Link 硬件则调试宿主工具换成 SEGGER 工具Zephyr 侧无需改动板级配置runner 参数已在board.cmake中就绪。十、小结与延伸阅读板级文档主体boards/nxp/lpcxpresso55s36/doc/index.rstOverview、Hardware、Supported Features、Connections and IOs、System Clock、Serial Port、Programming and Debugging 全量内容板级元数据与能力清单boards/nxp/lpcxpresso55s36/lpcxpresso55s36.yaml、boards/nxp/lpcxpresso55s36/board.yml设备树与引脚复用boards/nxp/lpcxpresso55s36/lpcxpresso55s36.dts、boards/nxp/lpcxpresso55s36/lpcxpresso55s36-pinctrl.dtsiRunner 与默认 Kconfigboards/nxp/lpcxpresso55s36/board.cmake、boards/nxp/lpcxpresso55s36/lpcxpresso55s36_defconfig同家族超集板功能更多可交叉参考boards/nxp/lpcxpresso55s69/doc。综合来看LPCXpresso55S36 在 Zephyr 中不仅是一块能点亮 LED 的开发板更是 NXP 对 LPC55(S)3x 全家族能力承诺的载体时钟方案24 MHz 晶振 → PLL1 → 144 MHz / XIP 96 MHz、Flash 双槽分区、FLEXCOMM0 控制台、FLEXPPWM 双实例 PWM 阵列、CAN USB 模拟外设全开配合 LinkServer/J-Link/pyOCD 三种调试链路覆盖了从原型验证到安全启动、CAN 通信、USB 设备端等真实产品特性的完整开发路径。【免费下载链接】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),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →