mirror of
https://github.com/MCKero6423/uv-k5-v3-emulator.git
synced 2026-10-02 03:15:36 +00:00
Record the restore loop that ate the installs
A real image whose 0x100000 marker held FMP3 next to a committed slot 0 made the factory bootloader reflash the internal flash from that slot on every power-on: the serial banner reappeared once a cycle (7 -> 8 in 25 s) while the screen never changed. Clearing the two marker sectors (0x100000..0x101FFF, stopping just before the app region at 0x102000) ended it, and the radio booted once and stayed. It also explained why page-side installs vanished: the emulator writes its in-memory image back on exit, and the looping guest's copy was older than the file, so powering it off overwrote the installs. With the loop gone the same installs survive a power cycle -- installed, powered off, still listed, powered on, still listed, and 0x0730 answered with all three. Both notes are in AGENTS.md and AGENTS.zh-CN.md; work/app-template/ got a starter app, its README and the upstream api/ld it needs (git-ignored).
This commit is contained in:
1 parent
dcf9dc00f5
commit
2b3222155f
2 files changed
+27
No files matched your search
@@ -641,6 +641,22 @@ the multiboot menu reads firmware slots rather than apps. **The answer was writt
|
||||
the flasher's own translation file**, not in the firmware source I had been reading -- so
|
||||
when a feature's entry point is missing, the host tool that installs it is the document.
|
||||
|
||||
**"Init ... DO NOT POWER OFF" that never ends is a pending multiboot state marker.** Measured
|
||||
on a real image: `0x100000` held `FMP3` next to a committed slot 0, so the factory bootloader
|
||||
reflashed the internal flash from that slot on every power-on and reset again -- a restore loop.
|
||||
The firmware's own banner reappeared once a cycle in the serial log (7 -> 8 in 25 s) while the
|
||||
screen never changed. Clearing the two marker sectors (`0x100000..0x101FFF`, which stops just
|
||||
before the app region at `0x102000`, so installed apps are untouched) ended it: the banner count
|
||||
stopped rising and the radio booted once and stayed.
|
||||
|
||||
That loop explained a second surprise: edits made through the page vanished. The emulator writes
|
||||
its in-memory image back when it exits, and the looping guest's copy was older than the file, so
|
||||
powering it off overwrote what had just been installed. With the loop gone the same installs
|
||||
survive a power cycle -- verified by installing, powering off, seeing them still listed, powering
|
||||
on, seeing them still listed, and having the radio answer `0x0730` with all three. **A stale
|
||||
write-back is worth suspecting whenever an edit "does not stick"**, and a guest that is quietly
|
||||
rebooting is exactly how one happens.
|
||||
|
||||
## The keypad: two real bugs, both fixed
|
||||
|
||||
The old note here said "keys reach the firmware but the UI does not react" and
|
||||
|
||||
@@ -520,6 +520,17 @@ UVStudio 的 `locales/en.js` 原文是 "launch them from the F + 7 menu" ——
|
||||
app 区被读过 —— 而多系统菜单读的是**固件槽**,不是应用。**答案写在刷机工具自己的翻译文件里**,
|
||||
不在我一直在读的固件源码里 —— 所以当一个功能的入口找不到时,**安装它的那个主机工具就是文档**。
|
||||
|
||||
**永远停不下来的 "Init ... DO NOT POWER OFF" 是一个待执行的多系统状态标记。** 在真实镜像上量到:
|
||||
`0x100000` 里是 `FMP3`,而槽 0 已提交 —— 于是出厂引导**每次开机都从槽 0 重刷内部 flash 再重启**,
|
||||
成了恢复循环。串口日志里固件横幅**每个周期出现一次**(25 秒里 7 → 8),而屏幕一直不动。清掉那两个
|
||||
标记扇区(`0x100000..0x101FFF`,正好停在应用区 `0x102000` 之前,所以**已安装的应用不受影响**)
|
||||
之后循环结束:横幅数不再增长,电台启动一次就稳定了。
|
||||
|
||||
这个循环还解释了第二件怪事:**通过页面装的东西会消失**。模拟器退出时会把内存里的镜像写回文件,
|
||||
而循环中的客人手里那份比文件更旧,于是"断电"这一下就把刚装进去的覆盖掉了。循环消失后,同一批安装
|
||||
**扛得住断电重上电** —— 实测:装上、断电仍在、上电仍在,并且电台用 `0x0730` 确认了三个都在。
|
||||
**每当"改了不生效",都值得怀疑一次过期的写回**,而一个在悄悄重启的客人正是它发生的典型方式。
|
||||
|
||||
## 键盘:两个真 bug,都已修复
|
||||
|
||||
这里原来的笔记写的是"按键到达了固件但界面不反应",并且归咎于机器模型。结果发现有**两个
|
||||
|
||||
Reference in new issue
Block a user