RT-Thread LPC55S69-EVK 板级支持包实战指南:环境搭建、编译烧写与外设驱动配置
操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载LPC55S69-EVK 是恩智浦NXP基于 Cortex-M33 双核架构推出的高性能评估板本指南以 RT-Thread 仓库中 bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk 板级支持包BSP为主线完整讲解从源码下载、ENV 环境配置、menuconfig 裁剪、MDK/IAR/GCC 三种工具链编译到烧写运行与片上外设驱动启用的全流程。读完本文你将掌握 LPC55S69-EVK 在 RT-Thread 下的标准化开发方法并能结合 BSP 的 Kconfig 配置体系与底层驱动源码libraries/drivers自主裁剪、扩展外设功能。1. 板级支持包与硬件特性概览LPC55S69 是恩智浦推出的基于 Arm Cortex-M33 内核的高性能单片机其官方评估板 LPC55S69-EVK 也是 RT-Thread 官方维护的 BSP 之一。本 BSP 位于仓库bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk目录同时提供英文版 README与中文版 README说明文档。1.1 核心硬件特性| 硬件 | 描述 | | -- | -- | | 芯片型号 | LPC556x/LPC55S6x 全系列 | | CPU | Cortex-M33 双核Dual Core带 FPU | | 主频 | 150MHz | | 基本外设 | 8 个 Flexcomm可任意配置为 USART/SPI/I2C/I2S、1 个 50MHz SPI、双 USB1 高速 1 全速支持主从模式 | | 特色 | PowerQuad DSP 协处理器、安全外设PRINCE/PUF/CASPER/AES-256/HASH |从 BSP 的 Kconfig 可见该 BSP 的配置入口会选中SOC_LPC55S69并自动关联ARCH_ARM_CORTEX_M33、ARCH_ARM_CORTEX_SECURE以及PKG_USING_NXP_LPC55S_DRIVER即通过在线软件包拉取 NXP LPC55S 系列底层 SDK 驱动。这解释了为何 README 中反复强调必须pkgs --update拉取必要库否则无法通过编译——SDK 驱动以软件包形式从外部仓库引入而非静态存放在 BSP 目录内。1.2 目录结构解读bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/ ├── applications/ # 应用入口main.c、RTduino、LVGL 示例 ├── board/ # 板级初始化、时钟/引脚配置、链接脚本 ├── figures/ # README 配图 ├── Kconfig # BSP 顶层配置菜单 ├── SConstruct / SConscript # scons 构建脚本 ├── rtconfig.h # 由 menuconfig 生成的配置头文件 ├── rtconfig.py # 工具链与编译参数配置 ├── project.uvprojx/ewp 等 # MDK / IAR 工程模板 ├── flashdebug.ini # Keil 调试初始化脚本 └── ../libraries/drivers/ # RT-Thread 外设驱动实现UART/I2C/SPI/ADC/RTC 等其中board/目录内还包含 MCUXpresso 配置生成的 clock_config.c / pin_mux.c时钟与引脚复用以及三套链接脚本GCC 的.ld、IAR 的.icf、Keil 的.scf分别对应下文三种工具链的编译需求。2. 开发环境准备环境说明PC 操作系统Linux / MacOS / Windows编译器arm-none-eabi-gcc version 6.3.1 20170620 (release) / armcc / iar构建工具scons / mdk5 / iar依赖软件环境Env 工具 /MDK 或 IAR 或 arm-none-eabi-gcc/ git / 调试器驱动从 rtconfig.py 可以看到工具链的切换机制CROSS_TOOL变量支持gcc、keil、iar三种取值可通过环境变量RTT_CC覆盖GCC 平台默认使用arm-none-eabi-前缀工具链编译参数针对 Cortex-M33 指定了-mcpucortex-m33 -mthumb -mfpufpv5-sp-d16 -mfloat-abihard并定义了CPU_LPC55S69JBD100_cm33_core0宏即运行在 CM33 核心 0 上。链接脚本为board/linker_scripts/LPC55S69_cm33_core0_flash.ld。3. 快速开始从源码到可编译工程3.1 下载源码git clone https://gitcode.com/gh_mirrors/rt/rt-thread3.2 配置工程并准备 EnvLinux/Maccd rt-thread/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk scons --menuconfig source ~/.env/env.sh pkgs --upgradeWindows需下载并安装 RT-Thread 官方 ENV 工具包建议使用 v1.3.5 及以上版本见文末注意事项随后在 ENV 终端中操作。3.3 配置芯片型号与软件包Linux/Macscons --menuconfigWindowsENV 环境中menuconfig在 menuconfig 页面中选择对应芯片型号与所需外设后执行以下命令拉取必要的软件包库否则编译会因缺少 NXP SDK 驱动而失败pkgs --update这一点在 SConstruct 中有硬性校验构建前会检查nxp-lpc55s-series-latest软件包是否已拉取若缺失会打印提示并要求先执行pkgs --upgrade再pkgs --update然后直接退出构建。同时SDK 的编译目标类型由rtconfig.py中的BSP_LIBRARY_TYPE LPC55S6X决定。若开发环境为 MDK/IAR则需在配置完成后生成对应工程见 3.4 节。3.4 生成 MDK / IAR 工程Mac/Linux 下请跳过此步骤Windows IARSET RTT_CCiar scons --targetiar -sWindows MDK5scons --targetmdk5 -s该板级支持包不支持生成 MDK4 工程且MDK 与 IAR 在生成工程之后必须手动在工程中重新选择一次芯片信号device否则会产生严重编译错误。AC6 编译器兼容性说明部分版本的 Keil5 对 AC6armclang编译器支持存在问题建议将 Keil 升级到最新版本后再使用。若不升级常见的报错为unsupported option --c99之类的问题Keil 的 AC5/AC6 对 C99 标准的命令行处理方式不同。BSP 在 SConstruct 中针对 armcc 平台也做了特殊处理通过重写CXXCOM覆盖带--C99参数的编译命令避免 C 编译时冲突。4. 编译固件使用 MDK 或 IAR 编译请直接参见对应 IDE 教程此处重点介绍命令行 GCC 编译方式。4.1 设置 GCC 工具链路径Windowsarm-none-eabi-gccSET RTT_EXEC_PATH[GCC路径]Linux/Macarm-none-eabi-gccexport RTT_EXEC_PATH[GCC路径]RTT_EXEC_PATH会被 rtconfig.py 读取并覆盖默认的EXEC_PATH也可以不设置环境变量而直接用scons --exec-pathGCC工具链路径在指定工具链位置的同时完成编译。4.2 执行编译scons -j4出现以下输出即表示编译成功LINK rtthread-lpc55s69.elf arm-none-eabi-objcopy -O binary rtthread-lpc55s6x.elf rtthread.bin arm-none-eabi-size rtthread-lpc55s69.elf text data bss dec hex filename 41596 356 1456 43408 a990 rtthread-lpc55s6x.elf scons: done building targets.编译正确无误后会在工程目录下生成rtthread-lpc55s6x.elf与rtthread.bin两个文件其中rtthread.bin即为可直接烧写的二进制固件。从 rtconfig.py 的POST_ACTION可见GCC 平台在生成 bin 文件时会通过 objcopy 移除.boot_data、.image_vertor_table、.ncache等引导相关段并调用arm-none-eabi-size打印内存占用统计。5. 烧写与运行烧写可以使用仿真器如 CMSIS-DAP/J-Link、ISP 等多种方式BSP 目录下的 flashdebug.ini 是 Keil 调试器用的初始化脚本它从地址0x0读取栈指针SP与程序计数器PC并将向量表偏移寄存器VTOR清零后跳转到 main适用于下载后直接运行的调试场景。5.1 运行结果如果编译与烧写无误会在Flexcomm0 串口默认串口即uart0上看到 RT-Thread 的启动 logo 信息\ | / - RT - Thread Operating System / | \ 4.0.1 build Jul 30 2019 2006 - 2019 Copyright by rt-thread team uising armclang, version: 6120001 msh /msh /提示符出现后即进入 RT-Thread 的 FinSH/MSH 命令行控制台可执行list、ps、help等命令交互验证系统状态。默认控制台设备由 rtconfig.h 中的RT_CONSOLE_DEVICE_NAME uart0指定。5.2 板级初始化与默认示例BSP 的板级初始化集中在 board/board.c 的rt_hw_board_init()中初始化顺序为引脚复用BOARD_InitPins→ 使能 GPIO0/GPIO1 时钟与端口 → 初始化 DMA0/DMA1 → 设置向量表偏移默认 Flash 起始0x00000000若启用 TF-M 安全固件则偏移至0x00020000→BOARD_BootClockPLL150M()配置 150MHz PLL 时钟 → 配置 SysTick 系统节拍 → 初始化串口并绑定控制台 → 堆初始化。默认应用 applications/main.c 会打印当前编译器类型armcc/armclang/iccarm/gcc 之一并将板上蓝色 LEDGPIO1_IO4宏LEDB_PIN配置为输出以 500ms 周期闪烁若启用了 SDIO 外设还会尝试将 SD 卡以 elm-FAT 文件系统挂载到根目录。6. 外设驱动支持情况与配置详解下表为本 BSP 的外设支持现状与 README 一致驱动支持情况备注UART支持UART0/2经 Flexcomm 复用GPIO支持自动根据芯片型号选择引脚布局SPI支持支持 High Speed SPI50MHzUSB Device不支持暂不支持USB Host不支持暂不支持Windowed WatchDog不支持暂不支持ADC不支持暂不支持I2C支持可配合 MMA8562 使用I2C Sensor支持获取板上 MMA8562 加速度传感器数据RTC支持RTC 时钟自动配置SDIO支持操作 SD 卡I2S不支持暂不支持说明README 中暂不支持项如 ADC、WDT、PWM、USB在 Kconfig 层面已预留配置入口且 libraries/drivers 中已有对应驱动源码drv_adc.c、drv_wdt.c、drv_pwm.c、drv_i2s.c等需要按需在 menuconfig 中显式打开并验证README 以官方实测结果为准。6.1 片上外设配置项On-chip Peripheral DriversBSP 的硬件配置全部由 board/Kconfig 组织运行menuconfig后即可逐项勾选常用配置项如下UARTFlexcomm 复用为串口BSP_USING_UART总开关默认开启其下BSP_USING_UART0默认开启默认波特率 115200可选 9600BSP_USING_UART1、BSP_USING_UART2默认关闭。每个 UART 均可独立选择 9600 或 115200 波特率。I2CBSP_USING_I2C默认关闭开启后可分别启用BSP_USING_I2C1Flexcomm1与BSP_USING_I2C4Flexcomm4波特率可选 100kHz 或 400kHz。软件 I2Cswi2cBSP_USING_SOFT_I2C提供不依赖硬件外设的 GPIO 模拟 I2C 总线swi2c1默认 SCLPin16、SDAPin41swi2c2默认 SCLPin19、SDAPin43引脚号可在 Kconfig 中直接修改。SPIBSP_USING_SPI3将 Flexcomm3 配置为普通 SPIBSP_USING_SPI8启用 Flexcomm8 高速 SPI对应 README 中的 50MHz High Speed SPI。软件 SPIswspiBSP_USING_SOFT_SPI1/2分别提供一组 GPIO 模拟 SPI默认引脚为 swspi1SCK44/MISO41/MOSI16、swspi2SCK42/MISO43/MOSI19总线名称为swspi1/swspi2。ADCBSP_USING_ADC默认关闭开启后可逐通道启用BSP_USING_ADC0_CH0/CH1/CH8/CH13/CH26。SDIOBSP_USING_SDIO启用 SD 卡接口会连带选中RT_USING_SDIO、RT_USING_DFS、RT_USING_DFS_ELMFAT设备虚拟文件系统 elm-FAT 文件系统对应 main.c 中的 SD 卡挂载逻辑。RTC / WDTBSP_USING_RTCRTC 时钟自动配置、BSP_USING_WDT看门狗默认均关闭。定时器与 PWMBSP_USING_CLOCK_TIMER下可选BSP_USING_CTIMER0/3/4BSP_USING_PWM下可选BSP_USING_CTIMER1_MAT0、BSP_USING_CTIMER2_MAT0/MAT1/MAT2、BSP_USING_CTIMER3_MAT2作为 PWM 输出通道。6.2 板载外设配置项Onboard Peripheral DriversMMA8562 加速度传感器BSP_USING_MMA8562会强制启用BSP_USING_I2C4并可通过BSP_USING_MMA8562I2C指定三轴传感器挂载的 I2C 设备名默认i2c4对应驱动实现见 libraries/drivers/drv_mma8562.c。Arduino 生态RTduinoBSP_USING_ARDUINO开启后自动联动启用 UART2、GPIO、ADC、PWMCTIMER1_MAT0/CTIMER2_MAT0~MAT2、I2C1 等引脚资源并支持可选挂载 AHT10 温湿度传感器库及其 demo。引脚映射参考 applications/arduino_pinout 目录下的说明与 pinout 图。6.3 扩展模块配置项Board extended module DriversBSP 还预留了 LCD 屏BSP_USING_LCD默认 SPI 总线spi3CS5、RST55、DC3、触摸屏BSP_USING_TOUCH默认 I2C 总线i2c1驱动为 drv_gt911.c、NXP LCD 模块BSP_USING_NXP_LCDM_S以及 LVGL 图形库BSP_USING_LVGL含默认 demo等扩展配置。启用 LVGL 时BSP 的 applications/lvgl 目录提供了显示/输入端口适配lv_port_disp.c、lv_port_indev.c与日历示例 demo。6.4 默认配置快照未做任何裁剪时BSP 的 rtconfig.h 默认开启了RT_USING_MSHFinSH 命令行、RT_USING_SERIAL串口设备框架、RT_USING_PINGPIO 设备、RT_USING_SMALL_MEM_AS_HEAP小内存管理算法作为堆、软件定时器、信号量/互斥量/事件/邮箱/消息队列等内核组件以及PKG_USING_NXP_LPC55S_DRIVER软件包外设侧默认仅启用BSP_USING_PIN、BSP_USING_UART、BSP_USING_UART0115200。系统节拍为RT_TICK_PER_SECOND 10001msmain 线程栈 2048 字节、优先级 10tshell线程栈 4096、优先级 20。7. 注意事项Env 环境需要使用较新版本v1.3.5 及以上避免旧版工具对软件包管理支持不完整。如使用 Keil 开发建议使用 5.30 及以上版本README 中提及需高于 5.3 且推荐升级至最新以规避 AC6 编译器对--c99等选项的兼容性问题。使用 MDK/IAR 生成工程后务必在工程内手动重新选择一次芯片型号否则会产生严重编译错误。首次构建前必须执行pkgs --update拉取nxp-lpc55s-series-latestSDK 软件包若拉取失败可先执行pkgs --upgrade更新软件包索引后再试。本 BSP 不支持生成 MDK4 工程仅支持 MDK5armcc/armclang与 IAR。8. 维护信息该 BSP 由以下人员维护遇到与板级移植、驱动适配相关的问题可参考仓库提交记录联系magicoe163.comalex.yangnxp.com更多源码级细节可继续深入阅读board/board.c板级初始化、board/Kconfig全部外设配置项、rtconfig.py三工具链参数、libraries/driversUART/SPI/I2C/ADC/RTC/SDIO/PWM 等驱动实现。赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐RT-Thread LPC55S69-EVK 板级支持包详解从编译烧写到外设驱动开发RT Thread LPC55S69 EVK 板级支持包详解从编译烧写到外设驱动开发 本篇技术指南围绕 RT Thread 仓库中的 LPC55S69 EVK操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 在 NXP LPC55S69-EVK 开发板上的 BSP 使用指南环境搭建、编译烧写与驱动配置RT Thread 在 NXP LPC55S69 EVK 开发板上的 BSP 使用指南环境搭建、编译烧写与驱动配置 LPC55S69 EVK 板级支持包BS操作系统嵌入式物联网嵌入式OSRTOSRT-Thread LPC55S16-NXP-EVK 板级支持包实战指南Cortex-M33 平台的环境搭建、驱动配置与烧写运行RT Thread LPC55S16 NXP EVK 板级支持包实战指南Cortex M33 平台的环境搭建、驱动配置与烧写运行 LPC55S16 NXP E操作系统嵌入式物联网嵌入式OSRTOS上一篇Go-ShardingMysql 分库分表中间件指南下一篇10分钟掌握BackbonePaginator从0到1实现高性能分页方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考