DavidClawson/OpenScope-2C53T

GitHub: DavidClawson/OpenScope-2C53T

针对FNIRSI 2C53T手持三合一仪器(示波器/万用表/信号发生器)的开源替代固件,通过逆向工程原厂二进制文件后以净室方式完全重写,旨在释放廉价硬件的真正潜力。

Stars: 0 | Forks: 0

# OpenScope 2C53T **FNIRSI 2C53T 手持示波器 / 万用表 / 信号发生器的开源替代固件。**

FNIRSI 2C53T

FNIRSI 2C53T 是一款售价 75 美元且功能强大的手持式三合一仪器,但糟糕的原厂固件拖了它的后腿。本项目是在对原厂二进制文件进行逆向工程的基础上,完全通过净室(clean-room)方式重写的固件。 ## 当前状态 **自定义固件已在真实硬件上运行。** UI、按键输入、电池管理和 USB 引导加载程序均可正常工作。目前的积极开发重点是获取来自 FPGA 的实时示波器数据。 ### 当前硬件上的可用功能 - 4 种可导航的 UI 模式:示波器、万用表、信号发生器、设置 - 4 种颜色主题(深蓝、经典绿、高对比度、夜间红) - 4 种尺寸(12/16/24/48px)的可变宽度位图字体 - 带有显示 + 输入任务的 FreeRTOS - 500Hz 频率下的 14/15 按键矩阵扫描 - 电池监控(电量百分比、USB 充电检测、低电量自动关机) - 软电源管理(3-2-1 倒计时关机) - 看门狗与健康监控 - USB HID 引导加载程序(支持不拆机进行固件更新) - FPGA USART 通信(双向通信,仪表数据流通) ## 已实现、已测试,等待真实数据验证 这些算法已编写并经过单元测试,但目前运行在演示波形上。一旦 FPGA ADC 数据通过 SPI3 流入,它们就会被激活。 - FFT 频谱分析仪(4096 点,5 种窗口函数,平均值,最大值保持) - 协议解码器(UART, SPI, I2C, CAN, K-Line/KWP2000) - 数学通道(CH1+CH2, CH1-CH2, CH1*CH2, 反相) - 自动测量(频率、Vpp、Vrms、占空比) - 余辉显示(5 种衰减模式) - Bode 图引擎(对数扫频、增益/相位计算) - 信号发生器(DDS,4 种波形) - 元器件测试仪(电阻、电容、ESR、二极管、通断) - XY 模式、Roll 模式、趋势绘图 - Mask/Pass-Fail 测试 - 带校验和的配置保存/加载 - 截图捕获(BMP) ## 正在进行 - **FPGA SPI3 数据采集** —— 已找到根本原因(需要 PB11 为高电平、完整的启动命令序列、队列驱动的触发)。这是实现可用示波器的关键路径。 ## 硬件 | 组件 | 详情 | |-----------|---------| | **MCU** | Artery AT32F403A — ARM Cortex-M4F @ 240MHz,1MB flash,224KB SRAM | | **显示** | ST7789V 320x240 RGB565 通过 16 位并行总线 (EXMC) | | **FPGA** | Gowin GW1N-UV2 — 处理 250MS/s ADC 采样 | | **ADC** | 双通道,8 位,250MS/s 通过 FPGA SPI3 | | **信号发生** | 2 通道 12 位 DAC | | **Flash** | Winbond W25Q128JVSQ (16MB) — UI 资源和校准数据 | | **输入** | 15 个按键(4x3 扫描矩阵 + 3 个独立按键) | ## 入门指南 ### 前置条件 ``` # macOS (Homebrew) brew install --cask gcc-arm-embedded # ARM toolchain brew install dfu-util # USB DFU flasher ``` ### 首次硬件设置 首次刷写需要打开外壳以访问 DFU 启动焊盘。之后,所有的更新都可以在合上外壳的情况下通过 USB-C 进行。 **所需工具:** 十字螺丝刀、一根跳线或镊子、USB-C 数据线。 1. 拧下背面的 4 颗十字螺丝并打开外壳 2. 找到 USB-C 接口下方排针上的 3V3 焊盘以及 BOOT0 测试点 3. 在将 BOOT0 与 3V3 短接的同时,按下复位孔按钮,然后松开 —— 设备将枚举为 "AT32 Bootloader DFU" 4. 为 224KB SRAM 设置 EOPB0(一次性操作,AT32 默认只有 96KB): dfu-util -a 1 -d 2e3c:df11 -s 0x1FFFF800 -D firmware/build/option_bytes48.bin 5. 刷入引导加载程序和应用程序: cd firmware && make flash-all 6. 合上外壳 —— 您以后无需再打开它 ### 常规开发周期(免开壳) 一旦安装了 USB HID 引导加载程序,更新就变得非常简单: 1. 在设备上:**设置 > 固件更新** (显示 "BOOTLOADER MODE" 界面) 2. 在您的电脑上: cd firmware && make flash 3. 设备将自动重启并进入更新后的固件 ### 构建 ``` cd firmware make # Build for hardware (AT32 @ 240MHz) make emu # Build for emulator (skips hardware init) ``` ### 模拟器(无需硬件) ``` make renode # Run in Renode with LCD display make renode-interactive # Run with keyboard input ``` 需要在 `/Applications/Renode.app` 安装 [Renode](https://renode.io/)。也可使用原生的 SDL3 LCD 查看器(`brew install sdl3 && cd emulator && make`)。 ## 项目结构 ``` firmware/ Custom replacement firmware (C + FreeRTOS + Make) src/main.c Entry point, FreeRTOS tasks, mode switching src/drivers/ LCD, buttons, battery, watchdog, DFU boot src/ui/ Scope, meter, siggen, settings, themes src/dsp/ FFT, math channels, signal gen, Bode src/decode/ Protocol decoders (UART, SPI, I2C, CAN, K-Line) src/tasks/ Measurement engine, component tester, mask test bootloader/ USB HID IAP bootloader (16KB) reverse_engineering/ Hardware analysis and protocol documentation ARCHITECTURE.md System overview (start here for RE) HARDWARE_PINOUT.md Complete MCU pin assignments FPGA_PROTOCOL_COMPLETE.md Full FPGA command/data specification COVERAGE.md 309 functions mapped from stock firmware analysis_v120/ Detailed V1.2.0 analysis artifacts emulator/ Renode platform + SDL3 LCD viewer docs/ Design docs, analysis, planning (see docs/README.md) modules/ JSON procedure files (automotive, HVAC, ham radio) scripts/ Font generation, flash tools, soak testing ``` ## 文档 请从[文档索引](docs/README.md)开始阅读。主要文档包括: - [架构概述](reverse_engineering/ARCHITECTURE.md) —— 硬件工作原理 - [FPGA 协议](reverse_engineering/FPGA_PROTOCOL_COMPLETE.md) —— ADC 采样与命令接口 - [硬件引脚分配](reverse_engineering/HARDWARE_PINOUT.md) —— 所有 MCU 引脚映射 - [路线图](docs/roadmap.md) —— 已完成的工作、下一步计划及未来规划 ## 逆向工程 原厂固件是使用 [Ghidra](https://ghidra-sre.org/) 进行逆向工程的。我们已经识别并命名了 309 个函数,映射了所有约 40 个 FPGA 命令,完整记录了 ADC 数据格式,并追踪了每一个硬件引脚。目前对原厂固件的理解程度已达到约 98%。 本代码库中未分发任何 FNIRSI 源代码。有关方法论和法律依据,请参阅 [reverse_engineering/README.md](reverse_engineering/README.md)。 ## 贡献 这是一个处于积极开发阶段的个人独立项目。核心架构仍在成型中,因此我目前不接受代码贡献。 **如果您拥有一台 2C53T 并希望提供帮助:** - 提交有关硬件观察、错误报告或功能请求的 Issue - 测试固件版本并报告哪些功能可用 / 哪些不可用 - 分享 FPGA 通信的逻辑分析仪抓取数据 一旦数据采集流程稳定下来,可能会接受代码贡献。 ## 相关项目 - [pecostm32/FNIRSI-1013D-1014D-Hack](https://github.com/pecostm32/FNIRSI-1013D-1014D-Hack) —— 1013D/1014D 的原理图、数据手册和 FPGA 文档 - [pecostm32/FNIRSI_1013D_Firmware](https://github.com/pecostm32/FNIRSI_1013D_Firmware) —— 1013D 的替代固件 - [Atlan4/Fnirsi1013D](https://github.com/Atlan4/Fnirsi1013D) —— 最活跃的 FNIRSI 固件分支(471 次提交) - [Gissio/radpro](https://github.com/Gissio/radpro) —— FNIRSI 盖革计数器的自定义固件 ## 许可证 [GNU General Public License v3.0](LICENSE)
标签:ADC数据处理, Bootloader, CAN总线, DDS波形生成, FFT频谱分析, FPGA, FreeRTOS, I2C通信, SPI通信, UART通信, USB HID, 万用表, 二次开发, 云资产清单, 信号发生器, 协议解码, 固件开发, 客户端加密, 嵌入式开发, 嵌入式系统, 底层开发, 开源硬件, 物联网安全, 电子测量仪器, 硬件安全, 硬件调试, 硬件黑客, 示波器, 组件测试, 逆向工程