zhomen/C-Embedded-System-Simulator

GitHub: zhomen/C-Embedded-System-Simulator

一个基于宿主机的 C++ 嵌入式中断驱动传感器系统模拟器,配合 Python 自动化测试框架,无需硬件即可练习和验证中断处理、环形缓冲区及事件驱动架构。

Stars: 0 | Forks: 0

# C++ 嵌入式系统模拟器 (C++ + Python 测试) ## 概述 本项目是一个使用现代 C++ 编写的**基于宿主机的嵌入式中断驱动传感器系统模拟**。它专为以下目的而设计: - 练习嵌入式系统概念 - 演示 ISR(中断服务程序)的最佳实践 - 无需硬件即可测试中断驱动设计 本项目模拟了: - 多个中断源 - ISR 行为(最小工作量) - 使用环形缓冲区的延迟处理 - 事件驱动架构 - 用于 C++ 代码的基于 Python 的单元测试 ## 演示的关键概念 ### 中断处理 - ISR 仅执行**最少的工作** - ISR 内部没有阻塞、内存分配或 I/O 操作 - 工作被延迟到主循环中处理 ### 环形缓冲区(ISR 安全) - 使用原子操作的无锁设计 - 单生产者(ISR)/ 单消费者(主循环) - 溢出检测 ### 多种中断类型 - 数据就绪 - 阈值超限 - 传感器错误 - 定时器节拍 ### 可测试性 - 硬件通过 `InterruptController` 进行抽象 - 完全可在宿主机上测试 - Python 测试可编译并验证行为 ## 项目结构 ``` sensor-interrupt-sim/ ├── include/ # Public headers ├── src/ # Implementation files ├── tests/ # Python tests ├── CMakeLists.txt ``` ## 构建说明 ### 依赖条件 - C++17 编译器 (g++, clang) - CMake >= 3.16 - Python 3 - pytest ### 构建 ``` mkdir build cd build cmake .. cmake --build . ``` ### 运行模拟器 ``` ./sensor_sim ``` ## 运行测试 安装 pytest: ``` pip install pytest ``` 运行测试: ``` pytest tests ``` Python 测试将会: - 构建项目 - 编译小型 C++ 测试程序 - 执行并验证其行为 ## 架构 ### 数据流 ``` SensorSimulator ↓ InterruptController ↓ ISR (SensorDriver::onXISR) ↓ Ring Buffer (InterruptRingBuffer) ↓ Main Loop / Consumer ``` ## ISR 设计示例 ``` void SensorDriver::onDataReadyISR(uint32_t value) { pushEventFromISR(InterruptType::DataReady, value); } ``` 遵循的 ISR 规则: - 无日志记录 - 无动态分配 - 常数时间执行 ## 环形缓冲区行为 - 固定大小的循环缓冲区 - 溢出时丢弃事件 - 跟踪溢出计数 ``` bool pushFromISR(const InterruptEvent& event); bool pop(InterruptEvent& event); ``` ## 可能的扩展 - 添加 RTOS 风格的任务处理 - 模拟中断优先级 - 添加 DMA 风格的批量传输 - 使用队列 + 互斥锁替换环形缓冲区(比较性能) - 添加时序约束 / 延迟测量
标签:Bash脚本, C++, CMake, Python, 中断服务程序, 中断驱动, 事件驱动架构, 单元测试, 单生产者单消费者, 回归测试, 固件逻辑, 安全规则引擎, 嵌入式系统, 开发框架, 故障注入, 数据擦除, 数据管道, 无后门, 现代C++, 硬件抽象, 系统级验证, 跨平台开发, 软件工程, 逆向工具