# rtosTbox **Repository Path**: libangqing/rtos-tbox ## Basic Information - **Project Name**: rtosTbox - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rtosTbox ## 介绍 rtosTbox 是一个基于 FreeRTOS 实时操作系统的车载远程信息处理单元(T-Box)固件项目。该项目专为 N32A455 微控制器设计,实现了 CAN 总线数据采集、GPS 定位、4G/5G 移动通信以及车辆数据远程上传等核心功能。 项目采用模块化架构设计,包含完整的硬件抽象层、驱动层、服务层和任务调度层,可快速适配不同车型的车载终端需求。主要应用场景包括车辆远程监控、故障诊断、GPS 定位追踪、车联网数据采集等。 ## 软件架构 整体架构采用分层设计模式,自底向上依次为: ### 硬件抽象层 (STDLIB) 提供 CMSIS 核心库和 N32A455 标准外设驱动,包括 GPIO、CAN、UART、SDIO、RTC、DMA、ADC 等外设的底层操作接口,确保上层代码与具体硬件平台解耦。 ### 驱动层 (CODE/DRIVER) 封装了各外设的初始化和操作函数: - **CAN 驱动** (can_driver):CAN1 和 CAN2 的配置、过滤器初始化、消息收发 - **LED 驱动** (led_driver):LED 指示灯控制 - **RTC 驱动** (rtc_driver):实时时钟配置 - **SDIO 驱动** (SdioSdcard_driver):SD 卡读写操作 - **USART 驱动** (usart_driver):串口通信支持 ### 中断服务层 (CODE/ISR) 处理外设中断事件,包括 CAN 接收中断、UART 接收中断等,将中断事件转换为上层可处理的信号或数据。 ### 服务层 (CODE/SERVICE) 实现核心业务逻辑: - **AT 服务** (at_service):AT 指令解析与发送,支持 4G/5G 模块通信 - **CAN 服务** (can_service):CAN 数据环形缓冲管理 - **DBC 服务** (dbc_service):CAN 信号 DBC 文件解析与解码 - **GPS 服务** (gps_service):NMEA 协议解析,获取位置信息 - **RTC 服务** (rtc_service):时间戳转换与 RTC 操作 - **文件服务** (file_service):车辆信息存储、FATFS 文件系统封装 ### 任务层 (CODE/TASK) FreeRTOS 任务实现: - **AT 任务**:处理模块通信指令 - **CAN 分析任务**:解析 CAN 数据并转换为物理值 - **GPS 任务**:持续采集定位数据 - **上传任务**:将数据打包上传至服务器 ### 系统组件 - **FreeRTOS 内核**:任务调度、队列、信号量、事件组、内存管理 - **FATFS 文件系统**:SD 卡文件读写支持 - **cJSON 库**:JSON 数据解析与生成 ## 安装教程 ### 开发环境要求 1. **Keil MDK-ARM** 版本 5.24 及以上 2. **JLINK 或 STLINK 调试器** 3. **SDCC 或 GCC ARM 编译器**(如使用 GCC 编译) 4. **串口调试助手**(用于日志查看) ### 硬件连接 将 N32A455 开发板连接至以下外设: - CAN1 和 CAN2 接口连接到车辆 OBD 接口或 CAN 总线 - USART3 连接到 GPS 模块 - UART7 连接到 4G/5G 通信模块 - SD 卡槽连接至 SDIO 接口 - LED 指示灯连接至指定 GPIO 引脚 ### 编译步骤 1. 使用 Keil MDK 打开 `PROJECT/MDK/TboxApp.uvprojx` 工程文件 2. 选择对应的目标芯片(N32A455) 3. 配置 JLink 调试器参数 4. 点击 Build 按钮编译项目 5. 编译成功后下载至目标硬件 ## 使用说明 ### 配置文件 在 `PROJECT/MDK/` 目录下可配置以下参数: - `f.dbc`:CAN 信号数据库文件 - `f.ini`:初始化配置文件 ### 运行流程 1. 系统上电后初始化各外设和文件系统 2. 加载 DBC 文件解析 CAN 信号定义 3. 创建并启动 FreeRTOS 任务 4. 持续采集 CAN 数据、GPS 位置信息 5. 通过 AT 指令与通信模块交互 6. 将数据打包后通过 TCP/UDP 上传至服务器 ### 任务说明 | 任务名称 | 优先级 | 功能描述 | |---------|-------|----------| | START_TASK | 4 | 系统初始化任务,创建其他任务 | | UART7_AT_TASK | 5 | AT 指令交互与模块通信 | | CAN1_ANALYSIS_TASK | 3 | CAN1 数据分析处理 | | CAN2_ANALYSIS_TASK | 3 | CAN2 数据分析处理 | | CAN_UPLOAD_TASK | 2 | 数据打包上传 | | GPS_TASK | 4 | GPS 数据采集 | ### 关键数据结构 ```c // 车辆信息结构体 typedef struct { char vin[18]; // 车辆识别码 char plate_number[12]; // 车牌号 // ... 其他字段 } Vehicle_Info; // CAN 解析输出结构体 typedef struct { char name[32]; // 信号名称 float value; // 物理值 uint64_t timestamp; // 时间戳 } DbcDecodeOut_t; // GPS 数据结构体 typedef struct { double latitude; // 纬度 double longitude; // 经度 float speed; // 速度 // ... 其他字段 } GPS_DATA; ``` ## 目录结构 ``` rtosTbox/ ├── CODE/ │ ├── DBC/ # DBC 文件解析 │ ├── DRIVER/ # 硬件驱动 │ │ ├── CAN/ │ │ ├── LED/ │ │ ├── RTC/ │ │ ├── SDIO/ │ │ └── USART/ │ ├── FATFS/ # 文件系统 │ ├── FreeRTOS/ # FreeRTOS 内核 │ ├── ISR/ # 中断服务程序 │ ├── JSON/ # JSON 解析库 │ ├── MAIN/ # 主函数入口 │ ├── SERVICE/ # 业务服务层 │ └── TASK/ # 任务层 ├── PROJECT/ │ ├── BIN/ # 编译产物 │ ├── MDK/ # Keil 工程文件 │ └── OBJ/ # 编译中间文件 ├── STDLIB/ # CMSIS 与外设库 └── README.md ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 许可证 本项目遵循开源许可证,具体信息请查看 LICENSE 文件。