注册

非易失性随机访问存储器NVRAM在路由器中的应用

来源:       

NVRAM 全名是 Non-Volatile Ram ,在 OpenWrt 里是用了 Flash Rom 最后的 64K 区块,用来储存一些环境参数,OpenWrt 通过这些参数来配置网络,DHCP,DNS和记载硬件版本等。如果通俗地解释非易失性存储器,那就是指那些断电后数据仍然能保留的半导体存储器。对这类存储器,业界统称为非易失性随机访问存储器(NVRAM,Non-Volatile Random Access Memory),看看我们身边处处可见的U盘,数码相机、可拍照手机、PDA、以及其中的存储卡,如CF、SD等等,无一例外地仰仗着NVRAM技术的支持。

常用的 nvram 指令有以下 4 种:

1. nvram show

列出 NVRAM 内所有参数,我们亦可以用 grep 命令来抽取部份资讯,例如

nvram show | grep lan_

这命令列出了所以用 lan_ 开头的参数,结果如下:

lan_gateway=192.168.1.254

dr_lan_rx=0

lan_netmask=255.255.255.0

lan_lease=86400

lan_stp=1

lan_hwaddr=00:12:17:E1:56:F5

lan_dns=211.152.179.7 202.96.128.86

lan_ifnames=vlan0 eth1

size: 12567 bytes (20201 left)

lan_ipaddr=192.168.1.1

lan_proto=static

lan_ifname=br0

lan_wins=

lan_hwnames=

2. nvram set 参数=数值

用来添加或修改一些参数,例如我想把 LAN 的 IP 由 192.168.1.1 改为 192.168.1.2,可执行:

nvram set lan_ipaddr=192.168.1.2

nvram commit

reboot

第 1 行是修改 IP 地址,第 2 行是保存,第 3 行是重新启动 OpenWrt ,因为更改 IP 地址后要重启才能生效。

3. nvram unset 参数

用来删除一些参数,不过这个功能很少用到,因为 NVRAM 的 64K 容量足够保存大量参数,大部份人都赖得去删。

例如我想删除 “dr_lan_rx=0” 这个参数,请执行:

nvram unset dr_lan_rx

4. nvram commit

当你对 NVRAM 做了一大堆修改后,你需要把这些修改保存起来,否则你的路由器 RESET 后,这些修改便没有了,和上面一样,这时你要执行:

nvram commit

在易失性存储器中,DRAM从EDO、SDRAM进化到了DDR SDRAM, DDR-II也即将来临,后面还有DDR-Ⅲ。SRAM方面也迎来DDR、QDR时代,那么同为电子存储元件的非易失性存储器呢?在技术日新月异的今天,新的市场与新的需求都在对闪存的发展提出了更多的要求,这也促进了当仿闪存的进步,当我们把眼光投向NVRAM的未来发展时,可以发现前面已经有三位主要的接班人在等候着,它们就是MRAM、FeRAM和OUM……