mirror of
https://github.com/MCKero6423/uv-k5-v3-emulator.git
synced 2026-10-07 05:27:21 +00:00
Round 38: a hand-run carries the measurement; the panel probe has a 40000-transfer cap
With a hand-started emulator on a copy of the working image, the page stayed untouched and healthy. Two of my own call signatures were wrong: uvk5_apps.install takes (image: bytearray, slot, blob: bytes, force) and edits the image in memory, so a path string is read as a blob, and key.py's Qmp wants a bare host:port -- the tcp: prefix fails getaddrinfo, the very trap the socket section records. The useful find: the panel probe stops after 40000 transfers (panel_probe_n < 40000 in st7565_xfer) and a hand-run reaches that within about forty seconds, so a launch measured after that looks like an app sending nothing -- the same mistake this file records twice about capping a diagnostic. Raise the cap (or make it a knob), rebuild qemu-system-arm with the page's job stopped first, and re-run the launch on a hand-copy.
This commit is contained in:
1 parent
11286a3817
commit
6045de09b1
2 files changed
+40
No files matched your search
@@ -1202,6 +1202,28 @@ seconds, 28416 of them pixel data, so the panel path is being driven exactly as
|
||||
instrument is sound. Comparing the two cases puts the fault in one narrow place: uvk5_supervisor.py builds
|
||||
QEMU's environment as dict(os.environ), which does inherit, yet the page's own emulator never sees the
|
||||
variable, so it is lost between the shell that starts the page and the server process it becomes. The fix is
|
||||
|
||||
**Round 38: a hand-run can carry the whole measurement, and the panel probe has a cap of its own.**
|
||||
|
||||
Round 37's discovery pays off: a hand-started emulator against the page's working image boots and draws, so
|
||||
the measurement no longer needs the page at all. This run used a copy of the working image and left the page
|
||||
untouched and healthy (485). It also needed no key tooling beyond tools/key.py and its QMP client.
|
||||
|
||||
Two of my own call signatures were wrong and are worth writing down. uvk5_apps.install takes (image: bytearray,
|
||||
slot: int, blob: bytes, force) -- it edits the image in memory and reads the blob itself -- so passing a path
|
||||
string is read as a blob and fails with "only 53 bytes" or "the image is too small for slot 0" depending on
|
||||
which argument landed where. And key.py's Qmp wants a bare host:port: with the tcp: prefix getaddrinfo fails,
|
||||
which is the very trap this file records in the socket section, hit again by its own author.
|
||||
|
||||
The useful find is about the instrument. The panel probe stops after 40000 transfers (panel_probe_n < 40000 in
|
||||
st7565_xfer), and a hand-run reaches that within about forty seconds of boot: the log ended at exactly 40000
|
||||
lines while keys were still going in, with the last eight thousand almost all byte 00. So a launch measured
|
||||
after that point would have looked like an app that sends nothing at all -- the same shape of mistake this file
|
||||
already records twice under capping a diagnostic before knowing the shape of the data. The cap has to go up (or
|
||||
become a knob) before the app measurement can be believed.
|
||||
|
||||
Next: raise the cap, rebuild qemu-system-arm (stopping the page's job first, since it holds the binary), restart
|
||||
the page, and run the launch again on a hand-copy with the probe watching.
|
||||
to pass it the way the other launcher options are passed rather than relying on inheritance.
|
||||
|
||||
Two corrections to this file, both of which have been costing time. The probe prints s->selected, not the raw
|
||||
|
||||
@@ -959,6 +959,24 @@ st7565.c uses SPI1"),并把 `st7565_xfer` 接到 `s->soc.spi[0]`。因此**
|
||||
它在「启动页面的那个 shell」与「页面变成的服务进程」之间丢掉了。修法应当**像其它启动参数那样显式传进去**,而不是依赖继承。
|
||||
|
||||
两条更正,都一直在消耗时间。探针打印的是 `s->selected`,**不是**原始片选电平 —— 所以它的 `cs=1` 表示面板**已被选中**、
|
||||
|
||||
**第 38 轮:手工运行就能承载整个测量;而面板探针自己也有一个上限。**
|
||||
|
||||
第 37 轮那个发现立刻兑现了:**用页面那份工作镜像手工启动的模拟器能开机、能作画**,所以整个测量**不再需要页面**。
|
||||
这一次用的是工作镜像的**副本**,页面从头到尾没被碰过、且健康(485)。除了 `tools/key.py` 和它的 QMP 客户端,也不需要别的工具。
|
||||
|
||||
我自己有两处调用写法是错的,值得记下。`uvk5_apps.install` 的签名是 `(image: bytearray, slot: int, blob: bytes,
|
||||
force)` —— 它**在内存里改镜像**、自己接收 blob —— 所以传路径字符串时,它按 blob 去读,报的是「only 53 bytes」
|
||||
或「the image is too small for slot 0」,取决于哪个参数落在了哪里。而 `key.py` 的 `Qmp` 要的是**裸 `host:port`**:
|
||||
带上 `tcp:` 前缀就 `getaddrinfo failed` —— 正是本文件在 socket 那节记下的坑,**又栽在写它的人手里**。
|
||||
|
||||
有价值的发现是关于仪器的。**面板探针在 40000 次传输之后就停止**(`st7565_xfer` 里的 `panel_probe_n < 40000`),
|
||||
而手工运行在开机约四十秒内就会打满:日志正好停在 40000 行,而按键还在继续,最后八千行几乎全是字节 `00`。
|
||||
**因此在那之后测一次启动,看起来就会像「应用什么都没送」** —— 与本文件已经记过两次的、
|
||||
「在还不知道数据形状时给诊断加上限」是同一种错误。**必须先把上限提高(或做成旋钮),应用的测量才可信。**
|
||||
|
||||
下一步:提高上限、重编 `qemu-system-arm`(先停掉页面的任务,因为它占着那个二进制)、重启页面,
|
||||
然后在手工副本上带着探针再跑一次启动。
|
||||
字节**确实被存下来**;把这个字段当成电平去读、进而断定面板忽略一切,会是错的。而「手工启动的模拟器从不作画」这条旧笔记,
|
||||
对「用页面那份工作镜像手工跑」并不成立:这一次它开机了、作画了、并持续输出像素数据。这条笔记已经左右了很多轮的测量方式,
|
||||
它应当被**重新推导**,而不是继续被相信。
|
||||
|
||||
Reference in new issue
Block a user