Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreeRTOS Lab for i.MX RT1052

面向 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

快速开始

  1. 阅读 docs/00-roadmap.md,按阶段学习。
  2. 准备 MCUXpresso SDK 和 FreeRTOS Kernel。
  3. 配置 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.cplatform/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"]
Loading

原则:

  • ISR 只做极短路径:读硬件寄存器、投递字节或事件、必要时触发上下文切换。
  • Parser Task 持有协议状态机,避免在中断里解析复杂协议。
  • 队列满、帧错误、溢出都必须有计数和日志入口。
  • 诊断、TBOX、CAN/LIN/Ethernet 等业务通过 Router 与底层收包解耦。

About

本仓库用于记录 FreeRTOS 在嵌入式系统中的学习、移植与实战应用。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages