Ralink SDK NVRAM和WIFI配置的关系
380939960@qq.com
简单来说,Ralink SDK中的NVRAM机制提供了以下功能:
* 将WIFI配置持久化在flash中,保证用户设置的SSID,KEY等WIFI参数掉电后仍然有效;
* 第三方程序通过“nvram_set ”命令设置新的WIFI参数,并将它保存到FLASH中;设置完WIFI参数后,还需要使用其他命令才能让WIFI driver使用到新的WIFI参数。
* 第三方程序通过“nvram_get ”命令获得当前“nvram”中的WIFI参数。注意:这个参数可能并不一定是WIFI driver当前使用的参数。
* 第三方程序通过“ralink_init gen ***”命令,根据NVRAM机制中WIFI参数生成WIFI driver使用的配置文件(例如” /etc/Wireless/RT2860/RT2860.dat”); 生成新的WIFI配置参数后,通常还需要重新打开WIFI设备才能让新配置生效(例如:ifconfig ra0 down; ifconfig ra0 up);
* 通过“ralink_init renew 2860 [<file>]”命令恢复出厂设置。
如果 是C代码的话,就使用lib_nvram中提供的函数来操作;
个人觉得不太建议将 lib_nvram提供的函数和"iwpriv"这个命令提供的功能混合使用,混合使用时,操作流程互相交叉,很容易出一些奇奇怪怪的问题。
修改WIFI参数
可以通过类似如下的命令设置当前NVRAM中的某个WIFI参数;需要指出的是nvram_set命令实际上是ralink_init命令的符号连接。
# nvram_set HT_BW 1 # |
当然如果是C程序的话,最好还是使用SDK中libnvram提供的函数来实现,例如:
if(!strlen(ntpServer)){ // user choose to make NTP server disable nvram_bufset(RT2860_NVRAM, "NTPServerIP", ""); nvram_bufset(RT2860_NVRAM, "NTPSync", ""); }else{ if(check_semicol |