目标为实物排线 HINK-T037A02-A1 / EPD037A02、驱动IC JD7601。原生720×480,观看480×720竖屏、排线下、标记左上。GDEH037E01是佳显料号,只作交叉参考,不直接混用校色参数。
OSPTEK原厂资料给出六色、32pin、JD7601与2MHz示例;示例时钟不是最大频率证明。PDF有TBD及BUSY说明矛盾,需结合源码和本机日志。佳显资料机械图与函数的IC命名不一致,关闭的water-ripple分支不证明47fps。
用户提供的同型号项目截图描述64码及512/4096码扩展,尚未取得附件源码;不据此承诺有效色数。本地仅保留epd-color-lab的5个核心文件,并非完整clone;其中波形文件注明源自FrameFilm,9份数组与当前Ark相同,不能作为独立的字段说明。
串口诊断由默认关闭的 CONFIG_ARK_EPD_PROFILE 启用,记录MonoFast/ColorFast/ColorQual的INIT、LUT、RAM、REF、PON、POF及总耗时。SPI错误、BUSY超时或忽略BUSY的调用不计成功。
同屏测试生成器输出两种彩色各两页32码色卡、12帧Mono基准、PNG和manifest。全部0..63直接入文件,不经RGB重新量化;预览只是当前Web RGB估计。本轮不修改LUT、PLL、电压、40MHz SPI或刷新延时,不新增编码格式。显示版本保持3.2.5。
Mono源图43200B展开成172800B全屏传输。40MHz线速至少34.56ms,47fps预算21.28ms,当前路径不满足47次完整更新/秒。这是传输下界,不是实测帧率;RAM含编码/SPI事务/BUSY,REF含命令/BUSY/固定延时。历史410ms/帧和3.35s首帧只作历史记录。
分段结果再决定是否优化批量SPI、同LUT免重载或调度。未知轻量传输、窗口命令、PLL映射须有同控制器依据再验证。分别记录编码数、候选数、不同RGB数、实屏可分辨色数,不以512/4096编码代替有效色测试。通行证继续ColorFast快刷,Film保留ColorQual和已有实测色板。
设备ELF指纹 d3f01f59a098ef6055df89d812eb4b4bd59c7b6b55a7060f84482443c3ab551c,显示3.2.5。波形/SPI未变,只开启诊断。本机环境温度未另行测量;以下不外推到其它屏幕或温度。
| 路径 | 样本 | 驱动耗时 | RAM | REF | 说明 |
|---|---|---|---|---|---|
| MonoFast稳态 | 192 | 平均196.72ms | 平均72.49ms | 平均123.84ms | LUT平均0.38ms,保持上电,无PON/POF |
| MonoFast首次准备 | 1 | 3.260s | 123.84ms | 2.660s | 包含准备清屏,不能与稳态混算 |
| ColorQual | 1 | 12.695s | 130.81ms | 12.204s | 3次REF,单帧64码色卡 |
| ColorFast | 1 | 4.560s | 246.74ms | 3.745s | 准备清屏加两相,共3次REF |
稳态Mono起点间隔中位数220.00ms,约4.55次调用/秒,含调度与诊断输出;驱动耗时倒数约5.08不是端到端FPS。上述样本均无BUSY超时或SPI错误。完整驱动耗时不包含app切换排队、SD读取和驱动外的POF。
实机新增MN26A001.film、CQ26A001.film、CF26A001.film,已确认目录提交和原文件保留。实际色准尚未测量,不能把RGB预览当成本屏实测值。跨app显式显示时观察到旧v1图片任务占用队列,因此命令回包和当前ID都不代替刷新完成日志;此项单独记录,不在本轮诊断插桩中改写调度。
本阶段通过 ForFilm 网页 BLE OTA 升级,设备回读 ELF 指纹与产物一致:
6b7376726bd9b9c9759d1555539a2798d40fd96f7ce7fa5e5bdd3552b090a924。
显示版本仍为 3.2.5。同一台设备、同一 SD 文件 MN26A001.film(四帧 Mono;SHA256 b21970472f6fcef929f5270dfd8b9f4eea16a04c872e79596bbf2a01c593a86f)对比,未改 LUT、PLL、SPI 40MHz 或刷新延时。
Mono RAM 从每行 360B 一次改为四行 1440B 一次,使用静态 DMA 缓冲,不增加任务栈。每个稳态帧仍完整发送 172800B;RAM SPI 事务由 480 次减为 120 次。首次准备中的旧清屏路径未改,不能把稳态事务数套到冷启动。
| 指标 | 修改前 | 修改后 | 结果 |
|---|---|---|---|
| 稳态采样 | 192 | 192 | 全部成功,无 BUSY 超时或 SPI 错误 |
| RAM 平均耗时 | 72.49ms | 63.98ms | 减少 11.73% |
| REF 平均耗时 | 123.84ms | 130.37ms | 波形未改;本次存在刷新等待差异 |
| 驱动平均总耗时 | 196.72ms | 194.77ms | 减少约 0.99% |
| 实际起点间隔中位数 | 220.00ms | 220.00ms | 约 4.55 次/秒,端到端帧率未提升 |
温度未测量,两轮不是受控的 REF 对比,不能把 REF 差异归因于分段优化。不能将驱动耗时倒数或 RAM 降幅宣传为动画帧率提升,也未达到 47Hz。
跨应用开图旧路径先进入图片 app 恢复历史图,再发送显示下标,目录事件还可能重复提交首帧。现在通过扩展 0x4B 一次传入目标文件名,app 任务同步解析实际播放目录中的下标,再选择本次首帧;普通 LEN=1 进入仍恢复上次图片。目录事件不重复提交已经安排的首帧。协议与能力位见 BLE 协议。
本机使用真实网页控件勾选并“选择显示”验证:
CF26A001.film:仅一次文件 6 任务,未加载旧的文件 5;屏幕驱动 4.560s,点击至完成记录约 5.61s。CQ26A001.film:此前记忆为文件 6,日志仅有一次文件 5 任务,没有文件 6 或其它旧图任务;驱动 12.695s,点击至完成记录约 14.08s。此前旧路径同目标图的诊断记录曾为 71.18s,包含两次旧 v1 图任务;两轮前一画面不同,不能用该差值衡量波形提速。0x4B 成功回包仅代表目标请求已提交,不代表刷新完成;实测耗时以驱动完成日志为界。已经执行中的屏幕波形仍正常完成,本阶段不强行中断它。Web 与 Android 桥接均使用能力位协商该开图路径,旧固件提示升级,不退回会先刷旧图的组合命令。
验证范围:旧/新真实 C 编码流对照 3 项、目标首帧 C 宿主检查、Web API 4 项与诊断汇总 5 项通过;Ark 固件构建与上述网页实机测试通过。Android Kotlin 编译因离线 Gradle 缺少 Flutter debug engine 依赖而在资源合并阶段中断,未进入 Kotlin 编译;本轮未构建或安装 APK,不能据此声称 Android 客户端已实机验收。原始日志与汇总保存在本机 .output/ark/epd-ram-20261026/,不提交设备数据。
先把 Mono 稳态逐帧串口输出改为内存聚合,在退出时只输出一条会话记录。播放仍由原 FRAME_DONE 事件推进,不改任务优先级、tick 或帧间隔语义。两轮均使用同一设备、同一 MN26A001.film(上述 SHA256 不变)和临时 100ms 帧间隔,各保留 192 个稳态样本。
| 指标 | 原等待顺序、内存聚合 A | 前移等待候选 B(拒绝) |
|---|---|---|
| RAM 平均 | 63.99ms | 63.99ms |
| REF 平均 | 125.56ms | 14.62ms |
| 驱动平均 | 189.95ms | 79.01ms |
| 相邻调用起点平均间隔 | 190.016ms | 100.278ms |
| 驱动调用率 | 5.263次/秒 | 9.972次/秒,不是有效屏幕帧率 |
| 实体观察 | 恢复 A 后持续播放,用户确认动画连续变化、画面正常 | 用户反馈画面完整但不播放动画 |
两轮日志均有 192 个成功采样、零 SPI 错误/零 BUSY 超时。B 的实体失败说明这些指标不能替代显示验收;它只证明软件调用没有检测到这两类错误。采样容量之外的调用仍统计失败,不是动画丢帧。
A 的平均驱动与调用起点间隔仅相差约 0.06ms,没有发现原先猜测的固定 25ms 调度空档。历史 4.55次/秒同时受逐帧串口输出及 200ms 设置影响,不能将它与本轮 100ms、内存采样结果的差值宣传为生产固件提速。
B 仅把已上电 Mono 稳态 REF 后的 10ms 等待移到命令后、BUSY 检查前,但 REF 减少约 111ms,远超该尾延时可能解释的范围。现有 wait_cycle 只识别一次忙电平到空闲电平,未证明该信号就是完整的有效波形完成;日志无法区分恢复窗口不足、多个 BUSY 子阶段或命令未接受等假设。GDEH037E01 示例顺序不能据此当作 EPD037A02 的已验证依据。没有继续猜测缩短等待,也没有忽略 BUSY。
恢复操作通过 ForFilm 网页完成,实际设备 ELF 回读为 46e3fcc7e6160c01e9e74d057a8fa4f4e907024bc4d4d21d70a0b4b20813820e,显示版本仍为 3.2.5。恢复后持续循环播放直到用户确认,随后返回菜单;原 200ms 参数整包回读与测试前完全一致。源码也已撤回 B,只保留低干扰聚合诊断,原 LUT、SPI 与 REF 等待顺序均保留。
当前结论:没有取得可接受的新刷新提速结果,9.972次/秒候选不发布、不保留到默认构建。下一阶段应先取得本屏 BUSY/CS/DC 与 REF 命令的对应边沿证据;若使用 GPIO ISR 软件 trace,应限定样本、结束后输出并说明测量扰动,它也不能单独证明光学帧率。RAM 的 64ms 也包含编码、事务及等待,需细分后才决定是否优化。
聚合器原生 C 生命周期检查、会话解析的三项检查及固件构建通过。失败候选及原始记录保存在本机 .output/ark/epd-fps-20261026/ 并明确标为拒绝;记录不提交到仓库。默认构建目录重新构建已回退的源码,避免以后误刷失败镜像。
在不改变 REF、wait_cycle、原尾延时或电源顺序的诊断固件上,使用同一 MN26A001.film、临时 100ms 间隔采样。设备回读 ELF 为 3555b9b433ddae9a9da951d028bf1f595c80e34fc65d19c609d0f6ec1cbd2e01,显示版本 3.2.5;用户确认动画连续变化、方向正确、无明显异常。GPIO11 ISR 注册成功,四帧及下一帧 begin 记录完整、未溢出。
| 帧 | REF 后拉低 | BUSY 低电平宽度 | 上升沿至 wait 返回 | 原尾延时实耗 | 尾延时后至下一帧 begin | DTM1 后等待 |
|---|---|---|---|---|---|---|
| 1 | 29µs | 121.118ms | 1µs | 4.090ms | 105µs | 7µs |
| 2 | 29µs | 121.094ms | 8µs | 4.419ms | 64µs | 3µs |
| 3 | 29µs | 121.111ms | 3µs | 4.386ms | 52µs | 3µs |
| 4 | 24µs | 121.109ms | 5µs | 4.392ms | 65µs | 3µs |
这四帧的 REF 前 BUSY 为高;REF 命令期间转低,约 121ms 后转高;wait 返回时已为高,直到下一帧 begin 未观察到再次拉低。可靠的已验证软件路径仍为 REF → 忙 → 空闲 → 原恢复等待 → 下一帧。不能仅见一次 high 就跳过忙周期,也不能因四帧未见重入就删除此前已被实屏证明必要的恢复顺序。
这是一条 GPIO ISR 与软件 marker 对应的时间线,不是逻辑分析仪捕获,也不是光学稳定时间。微秒级边沿与 marker 差值包含 ISR 延迟;本次证据确认控制器握手与当前有效显示路径,不把它外推为任何温度下的绝对光学完成时刻。
192 个稳态样本全部成功,RAM 平均64.065ms、REF平均125.513ms、driver平均189.963ms,起点平均间隔190.016ms(约5.263次调用/秒)。DTM1 后等待只有3–7µs,随后到 RAM done 仍约63.85–63.97ms,所以本轮额外耗时不是 DTM1 BUSY 等待;再优化应优先减少编码与 SPI 发送开销,而不是猜测缩短 REF。
原始 JSON、日志及时间线 PNG/SVG 保存在本机 .output/ark/epd-busy-20261026/。离线解析命令与 marker 表见诊断工具说明。
随后只替换 Mono writer 内部的四字节展开为64B只读表、32bit packed与4B memcpy;原位反转、prev、SPI API、四行批次及REF/等待函数均保留。native clang -O0 的真实新旧C完整字节流、prev以及全部65536种(old, raw)组合通过;这不代表ESP Xtensa -Os 下实际发送数据已做目标机比对。
| 起始192帧指标 | 原编码 | 未通过候选 |
|---|---|---|
| RAM 平均 | 64.065ms | 58.573ms |
| REF(含尾等待)平均 | 125.513ms | 130.945ms |
| driver 平均 | 189.963ms | 189.909ms |
| 调用起点平均间隔 | 190.016ms | 189.963ms |
| 起始四帧尾等待平均 | 4.322ms | 9.716ms |
起始片段的RAM下降约5.492ms,而REF区间增加约5.432ms;整帧周期几乎未变,不能称为实际提速。该片段的候选BUSY仍有约121.17ms的连续低电平,wait返回时为高;用户随后反馈“画面能显示,但是动画不会动”,因此候选不通过、未保留。
必须区分起始采样与整个运行过程。 实际主机播放窗口约871.1s和820.5s,两个会话累计调用分别4563和7936次,粗略约5.238和9.672次/秒。后者不可能全程保持起始片段约190ms周期;但容量外只保留计数与错误,不保留时间/边沿,所以不能知道停画时的BUSY状态,更不能把后段调用增多视作显示提速。用户补充没有观察起始过程,只在后来看到静止,因此停画起点仍未知,不能判为从开始就失败。
该轮观察窗口对齐不充分,已经停止缺少末尾采样的长运行。需要的下一项证据是停画前后最近几次调用的周期、REF/BUSY边沿和wait返回时点;不是再次重跑host穷举或猜测缩延时。若末尾证据仍不足以解释,再在目标ESP32端比对实际发送payload与旧encoder,必要时核验SPI线上数据。现有证据不足以把根因归为packed内容、编译器或某个具体硬件时序。
源码及默认构建均恢复原编码,仅保留诊断工具。网页恢复回读ELF为3555b9b433ddae9a9da951d028bf1f595c80e34fc65d19c609d0f6ec1cbd2e01,显示3.2.5;已停止持续动画、返回菜单,原200ms完整参数回读一致。用户已确认此次回刷后动画恢复连续变化、画面正常。
本轮没有保留新的提速实现。失败镜像已标记并隔离,完整原始记录只保存在本机输出目录;本节报告的是诊断结果与候选撤回,不是发布更新。
已有恢复会话记录的补充:再次回刷后的持续窗口约774.47s、累计4056次调用,约5.237次/秒,与原编码基线计数口径一致;用户随后完成实体复核,确认恢复正常。
补充 PROFILE-only 的末段记录:保留原 early 四帧,增加最近四个完整调用的 BUSY ring、最近八次调用和不受192样本容量限制的全会话汇总。原编码、REF/wait/尾延时和硬件电源命令顺序不变;IRQ 在 POF 前停止,日志在原 POF 后输出,不把关电边沿纳入 REF。正常 PROFILE-off 构建不增加采样。
只为定位此前退化,临时构建相同的16项展开候选,设备回读 ELF 为 0aae67ad67656be9f92c818a33b4f202208f1a59b35a715e160d29153783934a。 该候选未回到主线源码或默认构建;显示版本仍3.2.5。同一台设备、原 SD 文件 MN26A001.film(SHA256 不变)、临时100ms设置,在用户准备好后执行限时120秒观察,自动回菜单并整包还原原200ms参数。
| 指标 | 本次结果 |
|---|---|
| 稳态调用 | 617,全部成功 |
| 全会话 driver 平均 | 189.918ms |
| 全会话 RAM 平均 | 58.529ms |
| 全会话 REF(含原尾等待)平均 | 130.992ms |
| 全会话起点间隔平均 | 189.989ms,约5.263次调用/秒 |
| early 4帧 BUSY 低宽度 | 121.284–121.324ms |
| tail 4帧 BUSY 低宽度 | 121.211–121.237ms |
| tail 4帧原尾等待实耗 | 9.495–9.850ms |
| 整个会话最小 REF(含尾等待) | 124.028ms |
| SPI错误 / BUSY超时 | 0 / 0 |
| 实体观察 | 用户确认持续正常,直到自动返回菜单 |
early 的 call_id 为3–6,tail为615–618;call_id含准备调用,不是四帧动画的帧下标。两端采样均见 REF 后 BUSY 拉低、约121ms后释放,wait 返回点为高,随后保持原尾等待;没有记录到 wait 返回后再次拉低。上升沿与 wait 时间差含ISR延迟,不按数微秒先后推断完成条件。全会话最小 REF 说明这120秒内没有发生此前计数暗示的异常短调用,但只有两端保留完整GPIO边沿,不能声称每帧波形都逐一采集。
这次没有复现此前长运行后的静止,也没有实际提速。RAM减少仍被REF区间增长抵消。此前失败候选的开始过程未被观察,而本次观察窗口仅120秒,不能据此推翻长测失败或宣称已经修复。仍保留原刷新顺序;不能凭本次数据缩短恢复等待、提高PLL或把调用率当作光学FPS。
首次受控启动在参数核对时停止,没有开始动画;恢复设置后才开始正式计时。退出后菜单自己的首次Mono绘制另成短UI会话,原始记录保留,但按单调时间及steady count与动画会话分开,不混入以上统计。完整日志和产物在本机 .output/ark/epd-busy-tail-20261026/。
本次保留的是后段观测能力,不是新的提速实现。聚焦C诊断生命周期检查、BUSY/recent解析6项、诊断固件构建通过;后续若调查更长时间退化,应使用有结束点且有末段记录的运行,不再仅观察启动四帧。
有界复测后已通过网页恢复原编码镜像,回读 ELF 为 3555b9b433ddae9a9da951d028bf1f595c80e34fc65d19c609d0f6ec1cbd2e01, 显示版本3.2.5,停在主菜单。保存的完整动画参数与测试前一致,200ms,最终核验没有发送参数写入命令;串口采集已结束并释放端口。这次恢复没有再启动额外动画,实体依据为此前对该完全相同镜像的正常确认。
同时记录一项旧固件已有边界:重启后若动画参数尚未载入,直接0x4A可返回帧间隔0;进入设置触发app_manager_param_get载入后,0x4A回读为原200ms。首次受控启动的参数核对因此停止。该现象也出现在已恢复的原固件,不是本次采样造成;本轮未扩展修改参数路由。
用户将目标限定为:允许降低《Bad Apple!!》视频分辨率,但要求实体画面至少25fps。25fps预算40ms,不能以文件的帧率标记、完成回包或函数调用数代替可辨别的有效显示帧率。用户视频短链 https://b23.tv/RYeFfWu 本次访问返回HTTP412,未下载或转换视频;以下不假定该资源的实际分辨率、时长和编码。
BLE GET路由原先直接调用owner->on_param_get,未载入的动画RAM状态会返回frame_ms=0。现在统一走已有app_manager_param_get,按原NVS槽载入或套默认值后再回包。0x46/0x48/0x4A共用该路径;SET、参数结构、state_ver、NVS布局和已保存值均不变。检查脚本 tools/epd-profile/check_app_param_get.py 编译实际C路由及load/save函数,验证冷/重复GET、无保存/进入app、冷/重复SET和默认值回落;NVS/BLE/参数回调是接口fixture,不等于硬件验证。
如果只是把160x120或320x240内容放到720x480画布,现路径仍完整编码与发送全屏,刷新时间不会按小图面积下降。真正减少传输需要已验证的硬件RAM窗口/起止地址、较窄数据格式,或已验证的缩短扫描模式。即使RAM窗口有效,扫描波形也可能仍是全屏时长;必须分别测RAM和REF,不能按面积直接推算BUSY。
下表只计算假设控制器确实接受该4bpp窗口时的40MHz线速,不包含命令、编码或刷新,不是功能承诺:
| 发送区域 | 4bpp字节 | 理想线速 | 25fps余下预算(含波形等) |
|---|---|---|---|
| 720x480 | 172800 | 34.56ms | 5.44ms |
| 320x240 | 38400 | 7.68ms | 32.32ms |
| 240x160 | 19200 | 3.84ms | 36.16ms |
| 160x120 | 9600 | 1.92ms | 38.08ms |
本次重新读取OSPTEK EPD037A02原厂示例,仓库tree仍为33d6c5468578a11f16d2c42dff835390c768498d。它演示全帧4bpp DTM1与PON/REF/POF,未提供RAM窗口/局部扫描API或25fps测量,不能照搬其它控制器的0x90/0x91/0x92。EPD037A02产品PDF也不是完整JD7601寄存器手册。
GDEH037E01官方例程的water-ripple测试分支默认关闭,并含测试模式及未解释寄存器;它只能作为待核实线索,既不能证明与HINK-T037A02-A1所有批次等价,也不能证明25/47fps。已保留的epd-color-lab快照不是完整clone,其已比较9份波形与本项目相同;本次公开GitHub API访问该仓库返回404,不能宣称已查到新的高刷实现。
实际优先顺序为:先完成参数修复的构建/冷启动查询验收;再取得本屏JD7601的RAM窗口、扫描行数、LUT时间字段与有效高速黑白模式的说明或同屏源码。取得依据后,先对单一小区域测量完整写入+REF+恢复是否能稳定小于40ms,并核对区域外保持、残影和停止恢复,再改播放器40ms调度、制作短片,最后验收整段《Bad Apple!!》。目前可以研究25fps,但没有足够依据承诺已能实现;现有全屏同波形路径确定达不到。
参数修复实机验收已通过:网页OTA后回读ELF 702c1f5a18f26151f57df9cfcac232b0370aabc09738358d0498633c6c58d561, 显示版本3.2.5;没有进入设置或动画,也没有发送参数写入命令。设备重启后曾进入图片页,首次验收因菜单前置条件不满足而停止(尚未发0x4A);返回主菜单后,首次及重复0x4A均读到原完整17B TLV,其中frame_ms=200,查询前后app均为5。固件构建、真实C宿主检查和此项硬件查询验证通过,未为25fps改波形/窗口/时钟/动画调度。本机证据保存在 .output/ark/param-get-20261026/;采集已停止。
为验证局部内容是否必须完整重传,使用独立四帧文件 PX26A001.film: SHA256 351969bd07c44db0168c39789f86317c4baabe0791820ce24d11e99585c9915f, 172832B、MonoFast、原生720x480。只有前120个原生行变化(对应480x720竖屏左侧120列),右侧文字、大叉、近边界与远端标记在四帧中逐字节一致。此文件追加到原动画后,原MN26A001.film及用户图片未覆盖。
本实验没有尝试其它控制器的窗口命令,也没有改未知寄存器、电压、PLL、LUT、40MHz SPI、REF/wait/尾延时。诊断候选仅改变DTM1后的发送长度:先用原encoder完成全帧与下一次全帧差分,使区域外成为old==new码,再允许从RAM起点只发720x120/2=43200B;区域外变化则重新全帧,已有SPI/BUSY错误会禁用短写。old==new仅表示逻辑差分码,不据此证明物理完全无驱动;区域外是否稳定由实体观察验收。
原固件与候选各播放同一文件30秒、临时100ms帧间隔;开始前均等待用户准备,结束自动回菜单并恢复完整原参数(200ms、原文件下标0)。两轮用户均确认左侧按1、2、3、4连续变化,右侧文字、大叉及边界稳定完整。仅能确认这组短时条件,未验证长时间循环或任意窗口。
原固件ELF:702c1f5a18f26151f57df9cfcac232b0370aabc09738358d0498633c6c58d561。 实验ELF:0d03930ea4eebd0f82d1faf8271c5384c8a39e5fa384d55d4e95002801a85321。 两者均为3.2.5,通过网页OTA并核对实际回读。
| 指标 | 原全帧 | 截短DTM1候选 |
|---|---|---|
| 稳态成功调用 | 143 | 181 |
| RAM平均 | 63.961ms | 22.737ms(含1次全帧写入) |
| 末8次RAM平均 | 63.953ms | 22.502ms |
| 全会话起点平均间隔 | 190.020ms | 150.239ms |
| 末段起点平均间隔 | 189.998ms | 149.999ms |
| 末段BUSY低宽度 | 121.264–121.295ms | 121.309–121.333ms |
| SPI错误/BUSY超时 | 0/0 | 0/0 |
候选181个稳态调用中,成功RAM累计7948800B、事务5520,恰好对应1次172800B/120事务与180次43200B/30事务,证明短写路径实际执行;首个冷准备调用单独记录。早期call_id3–6与末段179–182均记录完整REF BUSY低→高及原尾等待,没有wait返回后再次拉低。菜单后续的短UI会话按首末单调时间分离,原始记录保留。
判定:这块实物在当前初始化、LUT和重复DTM1序列下接受了从起点开始的短写,30秒内未观察到地址累进或区域外覆盖。它不是任意x/y硬件窗口,也没有证明扫描行数减少。调用节奏从约5.26到6.67次/秒,实体连续运动;没有逐帧光学采样,因此不将此称为精确光学FPS。BUSY仍约121.3ms,说明本轮只减少编码/传输开销,没有突破波形刷新阶段,未达到25fps。
本阶段按预定边界到此结束,不继续缩短数据、猜测窗口或测试模式值。下一项要取得的是同屏短黑白波形的时间字段或明确的gate扫描控制依据;单纯进一步缩小内容/发送范围不足以绕过此次仍保持的121ms周期。
实现只存在于本机独立诊断快照,未并入默认驱动。原源码与默认构建在生成候选后已完全还原,并核对恢复产物与702c镜像的SHA256一致。真实C宿主9项检查覆盖短写与原encoder字节一致、上一帧状态、被省略尾部的逻辑中性码、区域外变化后的全帧回落与会话重置;不代替硬件协议验证。候选构建通过,所有原始源码快照、图像、计时、UART和meta在 .output/ark/mono-prefix-20261026/。
实验完成后已通过网页恢复带冷启动参数查询修复的正常702c镜像,回读完整ELF与预存产物一致,显示版本3.2.5。设备停在主菜单,首次和重复查询的完整动画参数均与测试前一致(200ms、原文件下标0);恢复验收没有进入设置或动画,也未发送参数写入命令。串口采集已结束并释放端口。测试文件PX26A001.film保留为专用对照,原有文件未覆盖。当前主线驱动仍为原完整写入实现,此次只提交实验记录。
本轮沿用先前短片已确认的经典影绘源(公开存档),取完整219.07秒视频,每6个源帧取1帧,共1096帧。480x360画面按原比例居中于480x720竖屏,不叠加标题、帧号或提示文字;原生720x480、MonoFast 1bpp,总47347232B,设备文件名为animation/BadApple_full.film。文件SHA256为f5846f8a47c356f60936e01b26502ab963a2e6819a5938dec5f51e404fae52e2。
为实际完成整片传输,修复了以下边界:
通过ForFilm Web Serial只写0x30000应用分区,最终镜像Flash MD5回读为41cdf7e6c7789d34d5294cca1314d98e,与本地文件一致;实际运行ELF经0x56核验为18bae7d272678e25eff8cc5d58d0b3dfc0a908b93eced8dc3b8911c72400b316。显示版本均保持3.2.5。最终应用镜像1937664B,SHA256为bb72caabc327425c4ca345524735b8d732516303f36a4d11000884935bd6a338。
手机App实机通过WiFi Direct完成47347232/47347232B,设备提交文件并返回state=4、error=0;下载至完成695.130秒,约68113B/s。开始时DMA free=8523B、largest=5888B,未再出现512B bounce无法分配。此前一轮在30927776B处由TCP对端重置(errno104),与SD保存错误分开记录。
随后从菜单启动指定文件,临时100ms帧间隔、60秒轮间停顿,只播完整一轮后自动回菜单。当前目录重排后按文件名恢复此前选中的VA26A001.film(新下标1),并恢复原100ms、单文件循环、0秒轮间停顿。用户确认整片播放至菜单、画面正常。
| 完整受控轮次指标 | 结果 |
|---|---|
| 完成驱动调用 | 1096 |
| SPI错误 / BUSY超时 / 调用错误 | 0 / 0 / 0 |
| 稳态调用 / 起点间隔数 | 1095 / 1094 |
| 全稳态起点平均间隔 | 227.254ms |
| 全稳态调用节奏 | 4.400次/秒 |
| 驱动平均 / RAM平均 / REF平均 | 191.504ms / 64.085ms / 126.939ms |
| 含启动与恢复的控制耗时 | 254.652秒 |
统计采用EPD_MONO_RECENT的无容量上限累计值;EPD_PROFILE_SESSION仅容纳192个样本,其dropped_samples表示诊断样本未存入,不表示丢弃动画帧。1096次完成与整轮结束标记独立核对。实体观察通过,未做逐帧高速光学测量,也未达到25fps。full-frame MonoFast编码、LUT、SPI时钟与REF等待顺序保持原实现。
本轮证明完整文件可保存并连续播放;全片调用节奏还包含SD逐帧读取和调度,不能拿短片全缓存的约5fps直接代替。后续可测量读取及反复fopen/fseek的开销,再判断预读或顺序读取的收益;本轮未引入未知短波形或扫描寄存器。原始产物、UART、meta及统计位于本机忽略目录.output/ark/badapple-20261026/,视频与构建产物不提交。
目标仍为实物 HINK-T037A02-A1 / EPD037A02(JD7601),设备显示版本保持3.2.5。本轮只做资料、源码与来源核验,没有构建、烧录或新增实体刷新测量;上一节的4.400次/秒与约121ms BUSY均为此前实测,不能当成本轮取得的提速。
| 线索 | 本轮核查结果 | 可用于新实测 |
|---|---|---|
| OSPTEK EPD037A02完整历史 | 仅main;初始提交至33d6c5468578a11f16d2c42dff835390c768498d的驱动变化只是移动目录,screen_driver.c/h代码无增删;当前公开issues为空、forks为0 | 没有新候选 |
| OSPTEK EPD037A02示例 | E9=01初始化、10整帧4bpp、04→12=00→02=00刷新;未提供自定义LUT或扫描窗口 | 无 |
| 本地EPD037A02.pdf(21页) | 模组规格书,第4页仅提及SRAM/LUT/timing control;没有主IC命令表、799B LUT布局或扫描范围字段 | 无 |
| Good Display示例 | GDEH037E01代码的water-ripple默认关闭;B4/B0/C0注释含“试”及240×240中心行示例;EF/DC/DD/DE的PWM/CPCK注释无单位与bit定义 | 不作为本屏短LUT或窗口依据 |
| 其他JD7601项目 | lanyangyin的3.7寸Python驱动仍为标准彩色路径;a6914219723-commits仓库文档提及experimental_lut_not_enabled,但实际树只有README_CN.md与index.html | 未公开可核查的候选实现 |
| 旧epd-color-lab本地材料 | .output/research-48/provenance.json明确complete_clone=false、原始上游SHA未知;5个核心文件缺waveforms.h与epd370_wave实现,main_waveforms.c注明源自FrameFilm | 可核对表字节,不可独立解释LUT字段 |
补查Good Display官网JADARD、IST主IC手册目录,公开列表未列出JD7601/IST7601手册。其他型号IC的LUT结构只作参考,不能据此解释799B表、试写同号命令。Gitee官方镜像索引可见,但本轮未成功读取其仓库内容,尚未证明与GitHub一致或存在不同附件。
向屏幕厂商索取时应明确以下信息,而不只索取模组规格书:
实物为HINK-T037A02-A1 / EPD037A02,3.7寸480×720六色,JD7601。现有自定义黑白MonoFast每次REF后BUSY低电平约121ms,目标研究更短黑白更新。请提供JD7601 command table及waveform/LUT format:0x20的799字节字段布局、时间单位、重复计数、结束/跳过条件;是否存在适用于该面板的更短黑白参考LUT;是否支持gate/source扫描起止或扫描行数限制,其命令、合法范围、RAM写入步进及BUSY完成条件分别是什么?若JD7601/IST7601为不同标记或修订,也请说明本FPC适用的IC版本。
取得明确候选后沿用同一四帧基准,逐项改变波形时间或已定义扫描范围,保留REF→BUSY断言/释放→原尾部等待;分别记录RAM、BUSY、REF和帧间隔,并核对连续运动与区域外保持。随后再测Bad Apple。短写DTM1或裁剪视频本身不算缩短硬件扫描;本轮没有确认25fps能力。
资料不完整不等于只能停止研究:可以通过现有波形、控制总线和实测电气行为建立字段对应关系,再设计候选。但不能把未经解释的799字节表直接当作时间数组,也不能将备用屏视作无风险验证条件。本阶段仅离线分析,未修改驱动、构建或烧录;显示版本继续保持3.2.5。
直接从当前 hal_epd_370.c 提取9份799字节数组,实际8份互异;mono_fast与mono_clear有31个不同字节。偏移采用从0开始:
10, 96, 98, 99, 184, 185, 186, 187, 190, 193, 272, 273, 274, 275, 278, 281, 360, 362, 363, 448, 450, 451, 536, 538, 539, 624, 626, 627, 712, 714, 715。
799 = 7 + 9×88 = 7 + 9×8×11 与重复字节结构相容,但只是分组假设,不证明9块的用途或11字节内部含义。首7字节为0;0xFF/0xFD等数值的极性、时间、跳过或结束语义仍未知,不能将0xFD取反为2后解释为“两帧”,也不能直接减半。
| 当前DTM编码中,面板黑码0、白码1,像素状态组合为(old « 1) | new,因此黑→黑、黑→白、白→黑、白→白分别对应0、1、2、3。这是现有发送代码的结论,不代表已知LUT块顺序,也不证明保持状态码在物理上完全无驱动。 |
完整逐字节差异、各表SHA256与分块十六进制保存在本机忽略目录:
.output/ark/waveform-research-20261027/lut-analysis.json,复算脚本同目录 analyze_lut.py。脚本只读驱动并生成报告,不生成候选LUT或固件。
EPD037A02原厂规格书第11页将特性保证限定于厂商配套控制器与波形;第16页说明超出绝对最大额定值可能造成永久损伤,长期处于极限条件会影响可靠性。它没有给出本实验可用的允许直流偏置、未知LUT脉冲时限或安全试验次数。因此不能量化损伤概率,也不能保证“只试几帧就安全”。
Good Display通用FAQ说明波形是与材料批次和温度匹配的电压脉冲序列。该说明支持谨慎区分时间与电压字段,但其中其它屏幕的刷新时间、寿命和电压不能套到本屏。残影可能可恢复;永久损伤不能靠重新刷回固件保证恢复。BUSY变短或黑白外观正常也不能证明电气驱动正确。
用户有DS100示波器及自制测量仪器;自制仪器类型、采样能力和探头配置尚待核对。备用同型号屏曾拆卸损伤排线,需要飞线修复,尚不是健康对照样本。先核对连接、绝缘与供电,再用原固件/原波形确认完整显示和正常BUSY;连接故障与波形实验不能同时引入,否则无法可靠归因。当前主用屏不用于未知字段试写。
候选设计以原MonoFast为基线。先用已有表之间的差异提出可检验假设;没有证据区分时间和电平选择时,不做自动字节遍历、不将不认识的字节清零或填0xFF。
字段确认后一次只改一个时间或重复计数字段,保留已知初始化、电压、PLL、温补、REF→BUSY断言/释放→原恢复等待。检查该修改是否改变极性顺序或累计驱动;仅正负时间看似对称仍不等于已满足面板要求。扫描范围作为独立实验,不能与新LUT同时修改,也不把DTM短写当作扫描缩短。
实验先做单次受控更新,核对电气波形、BUSY和实体画面,再决定是否做少量状态往返和有结束点的短循环;这些是逐步发现问题的措施,不是安全次数承诺。遇到异常电压、持续驱动、异常发热或新出现的条带/停画,停止追加刷新并使用预先核对的关断办法;软件超时、复位或回刷不能代替实际断电能力。
通过后才用同一MN26A001.film做前后对照,再播放短Bad Apple,最后考虑整片。记录RAM、REF、BUSY、实际显示变化、残影和恢复情况,不能只报告调用率。需要量化光学帧率时使用能分辨目标帧间隔的光学采样;示波器/BUSY本身不等于光学测量。当前全片约4.400次调用/秒、BUSY约121ms仍是旧实测,没有新帧率结果,25fps尚未证明可行。
本轮先查开源来源,再准备本地候选。OSPTEK 当前 canonical 仓库 的 ESP-IDF 示例 examples/esp32s3-jd7601-spi-bringup/main/screen_driver/screen_driver.c 与 versions/EPD037A02/code/3D7_E6_480x720_7601(2).c 提供标准六色 DTM1→REF 路径;该仓库代码许可为 CC BY 4.0。旧官方链接已同步 canonical,前述历史结论仍保留。OSHWHub 同屏项目本次可见附件区为“暂无数据”,没有取得可直接复用的 512 色扩展源码。这里的结论限于本次实际可访问来源,不能推断不存在其他实现。
本实验不移植原厂 C,也不修改现有九份 LUT。独立 CONFIG_ARK_EPD_ABC_DIAG 默认关闭,仅作用于 ColorQual。实验固件从 Format2 的 native 帧主体首字节读取 (mode << 3) | B(都在合法 0..63 内);mode 0 复用第二相 RAM,mode 1 在第二相前重写 A,mode 2 在第二相前写常量 B。mode >2 在 spectra 初始化及新增清屏/Qual 刷新前拒绝(上层已有显示初始化仍会执行)。ColorFast 与其他正常路径保持现有行为;这不是公开协议或正式 film 格式扩展。普通 Format2 图片可能恰好匹配合法标记,实验固件只用于明确列出的诊断文件,完成后恢复正常固件。
各次都先执行同一个 full_clear,再使用原有 qual_phase1/2/3 和 PON/POF、BUSY 逻辑,合计 1 次 clear REF + 3 次 Qual REF。mode 1/2 多写 172800 字节 RAM,增加传输和等待时隙,不能称“完整时序不变”。mode 1 是额外 RAM 写入的控制组;新增常量函数只写 DTM1,不调用带 REF 的 epd_spectra_fill()。清屏操作一致也不代表已测得完全相同的光学初态。
tools/epd-panel-lab/abc_diag.py 默认生成四个单帧 Format2:原序列、rewrite A、B0、B7;每页相同位置保留全部 64 个 A/C 原始码块和原有 X 标记,页头写 mode/B。标记位于 file offset 32、native body[0],对应 portrait (0,719),不是左上方向圆点。采样避开该像素、文字、边框和 X。PNG 仍使用原 ColorQual A/C RGB 估计,仅帮助定位;不能预测独立 B 响应,不生成虚构 512 RGB 色板,不覆盖任何 profile。--all-b 可额外生成完整八种 B 页及两个控制组,只生成、不自动上传。512 个驱动组合候选不等于 512 个稳定、可分辨颜色。
正常固件回滚基线由设备实读 ELF b7120217633972e13facafba93bf7140f12ed214b4826fce590516be1126d41c 对应的归档 BIN 核实,未使用旧构建目录。诊断 BIN 为1934320字节,SHA256 b315edf3b21e8641e06a432bef4688a4c16e851f2ea85167d00c9a2bdc17ecb9,设备升级后实读 ELF 51edb6f3de3512fc1ed6b0ee75fe538bffa946f5053354b32fe22fb822d20409 一致。相对该正常基线的有效配置仅新增 ARK_EPD_ABC_DIAG=y,bench/profile均关闭,显示版本仍为3.2.5。独立 D 盘构建目录与 sdkconfig 副本保留,正常 sdkconfig、分区及用户资料不改。
四份各345632字节的诊断文件通过电脑BLE静默保存;目录确认文件出现,串口同时确认文件提交、按名加载完整长度及对应mode/B。未做SD整文件回读哈希。逐张显示并等待HAL完成、POF后,由固定位置的25053RP5CC平板相机拍摄,每种模式仅一次,没有连续循环:
| 文件 | 第二相操作 | HAL诊断入口至完成 | 实屏定性观察 |
|---|---|---|---|
| AB29R000.film | 复用A | 15.538秒 | 完整、方向正确,原A/C色块分布 |
| AB29R100.film | 重写同一A | 15.608秒 | 与复用A的色块分布肉眼基本一致,无明显条带/错位 |
| AB29B000.film | 写常量B=0 | 15.587秒 | 明显变为深色、棕色背景,原有色彩/明暗层次压缩 |
| AB29B700.film | 写常量B=7 | 15.592秒 | 黄色占据大部分画面,许多码块与文字失去可见对比 |
上述耗时包含统一清屏和三次Qual刷新,不是单个REF或纯光学耗时。相机保留原始JPEG,另生成仅做透视整理的并排图;没有锁定或标定色度,不据照片RGB生成新色板或宣称颜色数。两张控制组只支持“没有明显肉眼差异”,没有证明逐色相等或长期可重复。
本轮确认第二相RAM数据能改变最终实屏结果,但B0/B7明显压缩原有A/C层次,尚未取得可用的512色显示。不能将三相简单当作三个独立、线性的色彩位,也不能由两端点推断B1..6的结果。后续需检查中间B值、同组合的重复性及各组合可分辨程度,再决定是否存在值得标定的新颜色;在获得有效色板与稳定性证据前,不增加公开9bit格式、不替换Film算法或通行证ColorFast路径。原始JPEG、设备日志、指纹与文件manifest留存在本地忽略目录 .output/ark/abc-20261029/ 及 .output/ark/hq-resize-20261029/。
实验结束后已通过OTA恢复归档的正常固件,0x56实读完整ELF重新匹配 b7120217…126d41c,显示版本3.2.5。使用平板App再次按名打开本轮原生端生成的 N2A900A1.film,串口确认加载172832字节并完成显示;相机实拍确认白底、原色块、方向和画面完整性恢复,没有观察到持续的棕/黄覆盖或新条带。该恢复观察不等于长期屏幕寿命或色度测试。平板相机已退出,本轮临时USB保持亮屏设置恢复为原值;未改设备个人档案,未发布或推送实验固件。
复用上轮同一诊断 BIN(ELF 51edb6f3…d20409),没有再次修改或构建固件。补生成并静默提交 AB29B100.film~AB29B600.film,每份345632字节;设备逐份确认提交到SD。电脑实验脚本复用现有192字节、8ms节奏和每16包0x42队列barrier,通过同一支持WRITE_NR的特征发送数据,不改App的WiFi上传实现。文件头、合法索引和目录提交确认不等同SD整文件回读哈希。
同一屏幕、平板与固定位置下,先显示原序列控制组,再显示B=0~7各一页,覆盖512个A/B/C驱动组合;最后在B=7之后复刷完全相同的B=5文件,并回到原序列控制组。共11次单次显示,每次沿用统一full clear及原Qual三相,没有持续循环,没有新增LUT、电压或REF。串口逐次确认对应文件、mode/B、显示完成及power off,入口至完成15.543~15.595秒,包含统一清屏与原Qual三相,不是单个REF或光学刷新时间;未发现BUSY超时、诊断标记拒绝或队列满。
| B | 此轮实屏定性观察 |
|---|---|
| 0 | 深色、偏棕,许多A行外观趋同 |
| 1 | 蓝色至浅色;较多C列与背景接近、对比消失 |
| 2 | 蓝色深浅层次,保留部分A行差别 |
| 3 | 蓝绿、青色层次,背景偏浅绿 |
| 4 | 红橙色为主,原多色分布被压缩 |
| 5 | 紫色、灰粉与暗色层次,保留部分A行差别 |
| 6 | 绿色、黄绿层次,背景偏黄绿 |
| 7 | 黄色覆盖大部分区域,较多码块与文字对比消失 |
各页为了标定而把B固定为同一个值,因此呈现集中色系;未来完整图片需要每个像素独立选择A/B/C,不能把单页全局色偏直接当作最终照片效果。这八页用于寻找可用的三元组响应,不是完整照片出图验收。
B=5的首次前一画面为B=4,复刷前一画面为B=7,两次都执行同一清屏。两张照片中色系与码块分布肉眼基本一致,最后的原序列控制组也恢复原多色分布,未见持续黄色覆盖、新条带或错位。该结果只支持本次两次短期外观检查,不代表全部512组合的重复性、跨温度一致性或长期稳定性通过。
相机UI明确提示自动曝光/自动对焦已锁定,但JPEG EXIF仍显示曝光1/25~约1/17秒、ISO1000~1250发生变化,白平衡为自动;因此不能宣称各张曝光完全相同。原始JPEG、仅做透视整理的并排图,以及512行逐码取样CSV保留在本地忽略目录 .output/ark/abc-mid-20261029/。CSV明确为未校准的相机RGB,不是屏幕sRGB/反射色度或正式palette。两张B=5的64格RGB逐通道平均绝对差约1.98/255,原序列前后约3.65/255;这些只作照片差异诊断,不是DeltaE、光学重复性阈值或有效色数。
结论:第二相数据有可控的实屏作用,中间B值可作为继续筛选颜色的候选;但固定B时许多不同A/C组合外观近似或失去对比,本轮仍未证明512个稳定、可分辨的有效颜色。现有三相也不是独立、线性的RGB三个通道。后续应先在固定光源、可核实的固定拍摄参数/色度标定下筛选有价值的三元组,比较其相对现有ColorQual色板的增益,再确定有效色数。此轮不把相机RGB写入正式色板、不新增9bit文件格式或App“512色”选项,通行证ColorFast路径不变。
本轮结束再次恢复归档正常BIN,0x56实读完整ELF为 b7120217633972e13facafba93bf7140f12ed214b4826fce590516be1126d41c、版本3.2.5。App重连后按名显示 N2A900A1.film,日志核对172832字节加载、显示完成和power off;相机确认白底、色块与方向恢复,照片左下存在局部反光,仅作恢复观察,不作色差或细纹测量。已退出相机并恢复本轮临时保持亮屏设置。个人档案、正常固件配置、App上传/UI与正式色板未改,未推送或发布。
八页色卡可以作为候选响应资料使用。固定 B 时集中显示某个色系是测试构造的结果;整张图片需要每个像素独立选择 A/B/C,不能把八页当作八张可直接用于任意照片的全局滤镜。本轮增加默认关闭的私有实验通道验证这种逐像素组合,不把候选数当成有效颜色数。
仅在 CONFIG_ARK_EPD_ABC_DIAG=y 时接受私有 Format 0x7F:32B 头、720×480、单帧、文件 offset12..15 为 ABC9,主体为每像素 uint16 little endian 的低9位 (A<<6)|(B<<3)|C,主体691200B、总计691232B。HAL 在任何新增显示初始化/清屏前检查全部高位;随后沿用原 full clear、原 Qual 三份 LUT 和原 REF/BUSY/PON/POF,只将 A/B/C 分别写入各相 RAM。没有新波形、电压或公开 App 能力。正常固件不接受该私有格式;不能把实验 BIN 用于任意普通 Format2 文件。
本轮实验 BIN 为1935408B,文件 SHA256 023dbf0d7729d6326da7d05954222fa11c874c071b00ab95a1d352355456fbec,实读 ELF 57c915fc58e01ba132a80b1a2f0200979595d5a7f9847bf3654ae08448f3f1d9,设备显示版本仍3.2.5。正常配置与依赖锁未改。独立构建通过;私有头/LE16/方向/越界合同测试通过。静态检查确认原九份 LUT 和相关刷新辅助函数未变化。
相机专业界面实际提供手动录像参数,使用同一段1080p/30连续录像采集控制页、B0..7、B5重复页及结束控制页。UI前后均显示 WB5800K、ISO1250、快门1/100,防抖关闭,开始时看到对焦锁图标。每页在串口显示完成并关屏后保留稳定区间,取区间中心附近1.6秒的9帧中位数,再按同一内屏四角透视整理。保留原始MP4、设置截图/XML、视频SHA、串口和host/video取样时间;时间对齐约有2秒不确定度,取样后到下一条显示命令及实际刷新仍有余量。
这些是界面设置证据,不是独立传感器校准:视频没有逐帧曝光EXIF,编码、降噪、色调处理和镜头/光照仍会影响RGB。工具明确记录 sensorParametersIndependentlyVerified=false 和 camera-relative/uncalibrated-colorimetry。不是屏幕sRGB、反射色度或正式palette。
所有页共用 rewrite-A 控制页的白/暗锚和同一线性两点归一化,不逐页拉伸。采样避开X线、文字和边框。单个通道落在0或255附近只记截断警示,不能据此删除饱和色;全通道黑/白、低信号、过大空间离散及重复不一致参与候选筛选。被截断的控制黑/白锚只作baseline,不能区分被压没的暗部或高光。
512个组合中本次保留477个临时候选,35个被过滤;这不是477个有效颜色。用顺序相关的近重复启发式,近似DeltaE76阈值3/5/8时分别保留217/127/75个代表,结果明显依赖阈值和相机处理,不能作为可辨色数。B5重拍64格的近似色差中位数0.93、90分位1.89、最大4.35;控制页前后逐通道绝对RGB差的中位数2、90分位8、最大17。只重复了B5,且仍有暗部压黑和漂移,未验证全部组合、跨温度或长期稳定性。
从同段录像右侧的彩色键帽截取同一内容,统一LANCZOS缩成480×720,以nominal sRGB目标对相机相对palette做近似Lab最近色匹配,关闭抖动,以便观察色板本身。源图不再套用面板白/暗锚拉伸,避免把普通图像高光额外裁白。A/A/C对照采用 mode1 rewrite-A,与ABC组都写三份RAM;它比原始mode0多一次phase2 RAM写入,不能称为原时序完全相同的ColorQual基准。
最终文件 CA29C002.film(345632B)和 CA29N002.film(691232B)逐份静默上传,确认SD提交与文件名可见;没有整文件回读哈希。串口分别确认对应长度加载、完成及power off。相机实拍确认两张都完整、方向一致,无明显错位或缺块;ABC组灰色区域较中性、蓝灰过渡与SHIFT字样更易保留,原A/A/C组部分灰部偏绿。粉色仍偏棕、色域和阶调有限,未达到准确还原。该单张照片只支持新增B数据对照片有实际增益,不能据此宣布稳定512色,正式接入前仍需更多图像、暗部/中性灰和重复性验证。
实验原始数据、相对palette、完整实拍与同尺度并排图在本地忽略目录 .output/ark/abc-cal-20261029/。两份私有ABC9实验文件及未使用的第一份照片控制文件已按精确文件名/当前ID从SD删除并核对其余文件集合不变;本地生成物和录像保留。通行证ColorFast、个人档案、正式色板和App均未改。
结束时通过BLE OTA恢复1933952B的归档正常BIN(SHA256 038a8114551159c880ff202bbc82cccdd2110276a3cf446ec4eeeb3f73ed3642)。第一次连接在擦除完成、等待数据时断开;日志确认未收数据后重新连接继续已擦除会话,传输1933952B,完成重启,0x56再次实读ELF b7120217633972e13facafba93bf7140f12ed214b4826fce590516be1126d41c、版本3.2.5。按名打开 N2A900A1.film,确认172832B加载、显示完成及关屏,相机核对原测试图白底、色块、方向和完整性恢复。该恢复检查不代表长期屏幕寿命验收;实验代码保持默认关闭,未推送或发布。
平板App最后已重新连接同一Ark并恢复明日方舟主题,实际读到SD图片16个、动画1个(相对开始多一张保留的普通控制照片),临时USB保持亮屏恢复原值0,串口监听已结束。相机专业参数的截图和录像作为本轮证据保留。
新摄像头为 Gsou UVC Camera,PnP VID0AC8/PID3450,驱动实际只枚举YUY2 640×480及更低分辨率,没有软件对焦控制。OBS未响应时查询控制成功、采流EC_ERRORABORT且buffer为0;用户关闭OBS后原始采图恢复。Windows设置/OBS UI本次不可用,改用pygrabber的DirectShow source filter与标准IAMCameraControl/IAMVideoProcAmp的GetRange/Get/Set。参数范围和auto/manual状态来自驱动读回,不等于独立sensor或色度校准。
固定参数为exposure=-3(标准接口定义为1/8秒)、whitebalance=6500 K、gain=32、brightness=0、contrast=6、gamma=130、saturation=4、sharpness=1、backlight=0,全部manual。接口定义参照 Microsoft CameraControlProperty 和 VideoProcAmpProperty。单一source filter连续采流,主线程在BLE/EPD等待期间pump COM消息,采集前、逐帧和结束时读回一致。
先拍rewrite-A控制、B0..7,再按2/5/0/7/3/6/1/4顺序将八页全部重拍,最后拍控制,共18页。每页HAL完成及关屏后再等5秒,保存9帧解码RGB PNG与中位数图,共162帧。覆盖512个驱动组合、每个组合两次。没有视频再编码,但仍有摄像头处理、YUY2转换及低分辨率/失焦限制,不是sensor RAW;仅用平坦色块做相对比较,不能验收细纹/字体。
控制暗锚cameraRGB=72/68/91、白锚205/209/204,512个初次样本都没有原始通道高低端截断。完整复刷的未裁剪camera近似Lab差异如下;采用nominal sRGB换算,不是校准DeltaE:
| B | 重复差异中位数 | 最大值 |
|---|---|---|
| 0 | 1.50 | 5.14 |
| 1 | 1.35 | 8.08 |
| 2 | 2.06 | 5.72 |
| 3 | 1.96 | 4.49 |
| 4 | 1.65 | 11.61 |
| 5 | 1.14 | 2.97 |
| 6 | 1.57 | 4.89 |
| 7 | 0.76 | 2.64 |
发现报告中必须分离的两层:出图用控制黑白锚拉伸会使315组至少一个通道低于黑锚、52组被裁为全黑。未裁剪cameraRGB有508个不同三元组,裁剪后只剩401个;两者都不是有效色数。B0的裁剪后重复距离中位数为0,许多原始响应却不同,不能据此断言面板颜色相同。
工具保留旧出图映射和候选筛选,新增 measurementDiagnostics,对全部512组未裁剪cameraRGB单独报告近似Lab、逐B重复误差与近重复诊断;明确原 usableCandidateCodes/nearDuplicateDiagnostics 属于render-normalized空间、不是物理上限。新增“不同原始响应被预览裁成同黑”的合成检查,通过。raw-camera顺序相关greedy阈值3/5/8分别保留207/113/60个代表,仅为阈值诊断,不能作为稳定色数。两个未过曝固定背景ROI前后近似差异约1.19/1.14;控制64格前后中位数2.01、最大8.56,还可能混有面板历史、局部反射和定位,不把变化单归因相机/光源。
沿用上一轮相同键帽源图、裁剪、LANCZOS和无抖动,生成 UC29C001.film(345632B,A/A/C rewrite-A)和 UC29N001.film(691232B,逐像素ABC9)。静默提交与长度加载、HAL完成/关屏均确认,没有SD整文件回读哈希。两图各保存9帧实拍,方向和整图正常,实验组有不同的蓝灰/粉灰分配;出图映射仍合并部分暗色,不称完整释放512色。该实验确认可测响应和整图链路,仍不能证明512种稳定可辨色或其上限。
完整证据在本地忽略目录 .output/ark/uvc-cal-20261029/:acquisition-e3原始帧/参数/HAL记录,palette-e3-report-v2分层报告,diagnostics-e3.json背景与裁剪诊断,pair-e3同图实拍。两份本轮照片已按精确名字/当前ID清理并核对其余文件集合不变,SD恢复图片16个、动画1个。本地原始数据保留。
结束恢复归档正常BIN,0x56实读ELF重新匹配 b7120217633972e13facafba93bf7140f12ed214b4826fce590516be1126d41c、版本3.2.5;按名打开 N2A900A1.film,核对172832B加载、HAL完成/关屏,UVC重新拍摄恢复图。实验/恢复两次BLE OTA均在擦除导致断连后,按明确的“擦除完成且零数据”日志继续原会话并核验实际构建,未把100%或断连当成功。没有改LUT、电压、正式palette、App、通行证ColorFast或个人档案,没有推送/发布。
复用全部512重复数据,补充大色块同页混合B、整页置换及全新连续精确成对互换;新增共享白点、不减黑锚、受限蛇形FS的实验渲染器。完整方法、量化证据与“本轮未做出可验收512稳定色”的原因见 ABC9实验结果。没有把码数、预览差异或空间抖动当作512个稳定单像素颜色。