面向 MIMXRT1052DVL5B 的 FreeRTOS 学习与工程模板仓库。
这个仓库的目标不是一次性生成完整量产 BSP,而是把 FreeRTOS 内核机制、常用对象、ISR 到任务通信模型,以及车载 MCU / TBOX / 诊断相关 RTOS 经验沉淀成可持续演进的工程骨架。
- 理解 FreeRTOS 内核机制:调度、上下文切换、临界区、Tick、任务状态、优先级反转。
- 掌握 Task、Queue、Semaphore、Mutex、Software Timer、EventGroup。
- 实现
UART ISR -> Queue/StreamBuffer -> Parser Task通信模型。 - 构建可复用的嵌入式软件模板:BSP、平台抽象、应用任务、服务模块分层。
- 沉淀车载 MCU / TBOX / 诊断场景中的 RTOS 使用经验。
- MCU: NXP i.MX RT1052,
MIMXRT1052DVL5B - IDE: MCUXpresso IDE 或 VS Code + CMake
- SDK: MCUXpresso SDK for EVKB-MIMXRT1050 / MIMXRT1050 系列
- Toolchain: Arm GNU Toolchain
- RTOS: FreeRTOS Kernel
仓库默认不提交 MCUXpresso SDK 和 FreeRTOS Kernel 源码。请通过环境变量或 CMake 参数指向本机路径:
$env:MCUX_SDK_PATH="D:\SDKs\SDK_2_x_MIMXRT1052"
$env:FREERTOS_KERNEL_PATH="D:\SDKs\FreeRTOS-Kernel".
|-- docs/ # 学习路线、内核机制、移植笔记、车载场景
|-- firmware/
| |-- app/ # 应用任务和业务服务
| |-- bsp/ # 板级适配入口
| |-- include/ # 公共配置和接口
| |-- platform/ # 平台抽象层,例如 UART、时钟、日志
| `-- tests/ # 后续补充 host 单测或仿真测试
|-- scripts/ # 构建、检查脚本
`-- third_party/ # 外部依赖说明,不提交大体积 SDK
- 阅读 docs/00-roadmap.md,按阶段学习。
- 准备 MCUXpresso SDK 和 FreeRTOS Kernel。
- 配置 CMake 路径。
cmake -S firmware -B build `
-DMCUX_SDK_PATH="$env:MCUX_SDK_PATH" `
-DFREERTOS_KERNEL_PATH="$env:FREERTOS_KERNEL_PATH"
cmake --build build当前工程是模板骨架,bsp/board_init.c 和 platform/imxrt1052_uart_port.c 中保留了与 MCUXpresso SDK 对接的明确位置。移植时优先从官方 SDK 示例工程提取启动文件、链接脚本、clock/pinmux 配置。
UART 接收路径建议采用如下结构:
flowchart LR
UART["LPUART RX IRQ"] --> ISR["Minimal ISR"]
ISR --> Q["RTOS Queue or StreamBuffer"]
Q --> Parser["Parser Task"]
Parser --> Router["Protocol Router"]
Router --> App["Diagnostic / TBOX Service"]
原则:
- ISR 只做极短路径:读硬件寄存器、投递字节或事件、必要时触发上下文切换。
- Parser Task 持有协议状态机,避免在中断里解析复杂协议。
- 队列满、帧错误、溢出都必须有计数和日志入口。
- 诊断、TBOX、CAN/LIN/Ethernet 等业务通过 Router 与底层收包解耦。