硬汉嵌入式论坛

 找回密码
 立即注册
查看: 216|回复: 2
收起左侧

[其它] 逆向EMK850+ 低功耗分析仪 · 串口驱动 + MCP 服务器

[复制链接]

8

主题

12

回帖

36

积分

新手上路

积分
36
发表于 昨天 07:54 | 显示全部楼层 |阅读模式
本帖最后由 CacheRivulet 于 2026-8-10 08:59 编辑

EMK850+ 低功耗分析仪 · 串口驱动 + MCP 服务器

逆向英加 EMK850+ 低功耗分析仪串口协议,提供 Python 命令行工具与 MCP 服务器(Streamable HTTP + REST),实现 µA/µW 级功耗自动采集与可编程电源控制,打通 AI 自动化低功耗优化闭环。

emk850_photo.jpg

项目亮点
原厂 EMK850+ 低功耗分析仪存在极大的自动化使用局限,设备仅提供 Windows 可视化操作界面,无官方开放 API 接口,无法对接脚本、程序、AI 自动化平台,不能实现功耗测试、设备控制的自动化闭环操作,极大限制了设备在批量测试、智能调试、低功耗优化迭代场景的应用。

针对以上痛点,本项目完成协议逆向与功能优化升级,完美适配自动化场景:

  • 协议逆向:复现设备 64 字节定长帧、0x33 帧头、0x40 分片机制的串口通讯协议
  • 优化帧解析:采用逐字节流式帧同步状态机机制,替代原厂上位机整块读取数据的方式,有效解决了因字节错位引发的程序卡死、数据解析异常等问题,显著提升系统鲁棒性
  • 轻量化开箱即用:提供 命令行工具 + HTTP 服务双模式,支持脚本调用、CI 集成、AI 自动化
  • 可编程外部电压:支持可编程电源断电重启操作,可唤醒进入深度休眠、调试器断连的 MCU,解决低功耗调试场景下的核心痛点
  • 标准化采集:支持 µA/µW 级精密功耗采集,搭配空载基线清零功能,可剔除设备空载偏移误差,输出纯净、精准的电压、电流、功率测量数据


快速上手

命令行读取功耗
  1. uv sync
  2. python emk850_analyzer.py power COM19
复制代码
  1. 电压: 4.202 V 电流: 6.940 uA 功耗: 29.20 uW
复制代码


启动服务(REST + MCP)
  1. python emk850_mcp_server.py --port COM19 --http 37749
复制代码
启动后同一进程同时提供 REST 接口MCP 服务器 两套接入方式:

  • REST:访问 http://localhost:37749,任何 HTTP 客户端均可调用
  • MCP:连接 http://localhost:37749/mcp(MCP Streamable HTTP 传输),支持 Claude / Cursor / MCP Inspector 等 MCP 客户端
REST 端点:

端点方法说明
/power?sample_s=0.8GET读功耗(V/I/P,自动 启动→采样→停止)
/outputPOST设输出:{"state":"on","voltage":3.3} 设 3.3V,{"state":"off"} 设 0mV
/clearPOST空载清零,需 {"confirm":true}
/version · /config · /healthGET版本 / 校准参数 / 服务与设备状态
/start · /stopPOST手动开始 / 停止采样
MCP 工具(REST 路由自动转换,工具名 = 路由 operationId):

工具参数说明
read_powersettle_s, sample_s读功耗(V/I/P)
read_version读设备版本
read_config读校准配置
start_sampling / stop_sampling手动开始 / 停止采样
set_outputstate, voltage设输出电压 / 切断供电(掉电重启休眠芯片)
clear_counterconfirm, wait_s空载清零(需 confirm=true
get_port_info / open_port / close_portport串口管理
health服务与设备状态


用 MCP 客户端连接
MCP 端点:http://localhost:37749/mcp

  • MCP Inspector / MCP 调试工具:连接类型选 Streamable HTTP,地址填 http://localhost:37749/mcp,即可 initialize 握手、tools/list 列出上述工具、tools/call 调用
  • Claude Desktop / Cursor:把该 URL 注册为远程 MCP 服务器即可


典型实战:唤醒休眠 MCU
低功耗场景下 MCU 进入深度休眠后调试器断连,可用仪器断电复位唤醒:

1. 关闭输出:POST /output {"state":"off"}

2. 等待电容放电 10~15 秒

3. 恢复 3.3V 输出:POST /output {"state":"on","voltage":3.3}

4. 芯片复位,调试器可重新连接

注:"off" 通过设 0mV 间接拉低输出(协议无直接关断命令)。实测 0mV 时测量端约 2.6V,是否真正断电请用万用表确认,别只靠这个判断芯片已掉电。



协议关键信息
  • 串口:115200 / 8N1
  • 帧结构:固定 64 字节,帧头 0x33,支持 0x40 延续帧分片
  • 避坑:摒弃原厂整块读取方式,采用流式状态机保证同步可靠性
完整命令表、数据换算公式详见:docs/EMK850_PROTOCOL.md



注意事项
  • 串口资源独占,HTTP 服务运行时不可与原厂上位机同时使用
  • 空载清零需断开所有负载,否则会引入测量误差
  • 设备自动换挡,未校准档位电流数据将被自动跳过


免责声明
本项目协议通过逆向原厂上位机实现,与英加厂商无关、未获官方认可。固件或型号升级可能导致不兼容,使用风险自负。






build 10 August 2026 07:53 (UTC+8)

回复

使用道具 举报

8

主题

12

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 昨天 07:59 | 显示全部楼层
如何安装:把仓库链接丢给你的AI工具(CodeX、Claude)
回复

使用道具 举报

6

主题

371

回帖

389

积分

高级会员

积分
389
发表于 昨天 13:34 | 显示全部楼层
如何实现的?厉害呀。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-8-11 19:36 , Processed in 0.406049 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表