DD-WRTはNVRAMスペースを無駄にしますか?

DD-WRTはNVRAMスペースを無駄にしますか?

これら2つのコマンドをどのように誤解したかを説明してください。

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)

私のルーターのフラッシュページは128kB(0x20000)で、12ページ(0x18/0x02)はNVRAM専用です。では、利用可能な総NVRAMはなぜ1ページ(52341 + 78731 B)ですか?

答え1

回答が不足しているため、これらの追加ページは決して記録されていないため、NVRAMをさらに大きくすることができると結論付けました。

明確に言うと、これはフラッシュ摩耗レベリングがないことを意味することもあります(つまり、12ページを循環するとフラッシュ寿命が12倍長くなっても同じページを上書きすることになります)。したがって、100,000回の誤動作の後、私のルータはNVRAMを上書きする可能性があると推測します。後で発生しました。また、巨大なmtd4も完全に空なので、mtd1は氷山の一角に過ぎないことがわかりました。以下でこれらを確認するために使用した簡単なコマンドを参照してください(mtd1の前半ページを除いてすべてのフラッシュ読み取りが空です)。私が間違っている場合は、修正してください。

もちろん、開発者はこのコードを書くのに十分寛大であり、各システムの最適化がより複雑になることを知っているので、文句はありません(そして率直に言って、ウェアレベリング以外に何をすべきかわかりません。ファームウェアを書く技術があるにもかかわらず、より多くのメモリ)。

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=0
<REDACTED BUT NOT EMPTY>
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=102
<REDACTED BUT NOT EMPTY>
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=103
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=256
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=3071
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=3072
0+0 records in
0+0 records out


root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=0
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=256
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=183839
1+0 records in
1+0 records out

root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=183840
0+0 records in
0+0 records out

関連情報