Codex gpt-6.1 Sol 做了不到1个小时就成功了。
它如何做的我也不懂,总之就是成功了。
---------------------------------------------------------
开发过程说明:TF Audio Player 1.2 修改版(r3)
01|从官方BIN开始
没有源码,如何增加长按跳10首?
开发对象是 Monitor 09 Mark III 系列的官方 TF Audio Player 1.1 固件。我们只有官方 BIN,没有原始源码。
目标很明确:短按上一首、下一首仍切1首;长按约2秒跳10首,方便在大量歌曲中快速定位。
整个过程由使用者提出需求、提供实机反馈,Codex辅助完成二进制分析、补丁代码编写、离线仿真和镜像生成。
这是在官方1.1基础上制作的非官方修改版,不是取得源码后重新编译,也不是官方发布的1.2。
02|先把程序还原出来
识别格式 → 解压 → 反汇编
首先检查文件头、启动向量和可读字符串,发现 SPI 启动镜像及 ARM Thumb/Thumb-2 代码特征。具体芯片型号没有仅凭这些线索下结论。
播放器主体使用压缩加载。通过分析固件自身的解压函数和加载表,还原了四个内存段,包含程序代码与界面字符串。
随后在 ARM 仿真环境中执行原固件的解压函数,逐字节核对结果:四个段均与分析脚本的输出一致。
反汇编后找到当前歌曲序号、歌曲总数、上一首/下一首函数,以及手动按键和自动切歌的调用路径。
03|设计长按功能
不能简单把“加1”改成“加10”
原固件的手动下一首和自动播放共用切歌函数。直接把加1改成加10,会让正常自动播放也跳10首,因此需要单独增加手动长按处理。
短按在松开时执行切1首;保持按下约2秒后,只跳10首一次。继续按住不会重复跳转,松开后才能再次触发。这样避免先切1首、再跳10首。
计时利用原固件已有的 SysTick 计数和处理器频率信息,不用主循环次数猜测2秒。真实触发时间仍受设备运行情况影响。
跳转一次计算目标歌曲。不足10首时停在列表首尾,不绕回。菜单界面沿用原按键处理,显示版本改为 TF Audio Player 1.2。
04|离线验证与实机纠错
仿真通过,也需要机器验证
补丁写成 ARM Thumb 汇编,加入还原代码段,再重新压缩并更新加载表。重打包后的数据用原固件解压函数验证,确认能够正确还原。
首版离线仿真通过,但实机发现:上一首及长按上10首有效,下一首和长按下10首无效。
检查发现下一首 GPIO 引脚误写成15,原扫描器实际使用24。早期仿真也沿用了错误映射,因此没有发现问题。
先用正确映射复现失败,再修正补丁为r2。新增独立测试:逐个检查32个GPIO位,并让短按事件经过原界面处理和切歌函数。实机反馈是发现问题的重要环节。
05|修正列表显示,完成r3
保留播放逻辑,只补跨页刷新
首版实机还出现切歌后列表旧文字残留,按LIST刷新后恢复正常。分析发现列表每页显示9首,但一处后退翻页判断使用了按8计算的位掩码。
用合成列表执行原渲染代码,复现第19首退到第18首时未清除旧页的条件。r3增加按每页9首比较页码,跨页时清屏后调用原渲染函数。
“歌曲似乎提前切换”的反馈随后被使用者澄清为尚未确认,因此最终r3没有采用实验性的播放时序调整;播放和长按代码保留r2实现。
最终r3通过30项分组仿真检查。使用者实机确认:双向长按跳10首正常,文字显示正常。文件为 Mon09M3_TFP_20261014_r3.bin,显示版本为1.2。
验证说明:离线仿真使用 Capstone、Keystone、Unicorn 等工具;部分音频、文件和显示硬件调用由仿真替代,不能等同于完整硬件测试。当前可用性来自使用者在本人设备上的实测,不代表所有设备与文件组合均已验证。
Monitor 09 Mark III 系列固件更新文件
版主: 客服六号
Re: Monitor 09 Mark III 系列固件更新文件
Monitor 09 Mark III 更新TF播放器1.2固件成功,按住上键或者下键大约2秒可实现跳跃10首选歌,极大的增加了用TF播放歌曲的实用性,感谢作者分享固件。
在线用户
用户浏览此论坛: 没有注册用户 和 3 访客