请解释我是如何误解这两个命令的:
root@DD-WRT:/tmp/var/log# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00020000 "boot"
mtd1: 00180000 00020000 "nvram"
mtd2: 01e00000 00020000 "linux"
mtd3: 01c60000 00020000 "rootfs"
mtd4: 05000000 00020000 "ddwrt"
root@DD-WRT:/tmp/var/log# nvram show >/dev/null
size: 52341 bytes (78731 left)
我路由器上的闪存页面为 128 kB (0x20000),并且有 12 个页面 (0x18/0x02) 专用于 NVRAM。那么,为什么我的可用 NVRAM 总量只有一页 (52341+78731 B)?
由于缺乏答案,我得出结论,这些额外的页面永远不会被写入,所以是的,NVRAM 可以做得更大。
需要明确的是,这也意味着没有闪存磨损均衡(即,虽然循环遍历 12 个页面将闪存寿命延长 12 倍,但同一页面正在被覆盖),所以我猜我的路由器可能会在 100,000 次 NVRAM 覆盖后发生故障。另外,我发现巨大的mtd4也完全是空的,所以mtd1只是冰山一角。请查看我在下面使用的简单命令来确认这些要点(除了 mtd1 的前半页之外,所有闪存读取都是空的)如果我错了请纠正我。
当然,开发人员很慷慨地编写了这段代码,而且我知道为每个系统优化东西会更复杂,所以我没有抱怨(老实说,除了磨损均衡,我不确定我会做什么更多内存,即使我有编写固件的技能)。