XMU->九天揽月->五湖抓鳖->DSP->driver->kernel/OpenWRT->ISP/RTOS
分类: LINUX
2014-12-07 22:19:13
记录下在broadcom + openwrt平台的网络配置。目前只限于有线连接。
nvram是某些芯片(一般就是broadcom和cavium)要求的一段重要配置的集合,类似于uboot的env吧。这里面包括了硬件版本信息、gpio、switch配置、vlan划分、lan/wan、ip/mac、wifi参数等。
每次编译出cfe镜像后,必须要打包nvram_file
./nvserial -i cfez.bin -o uboot.bin -s 001 nvramfile.txt
这些作为一个初始设置固化在cfe.bin的0x400~0x1400区间, 魔术字FLSH识别header,除非重新制作升级cfe否则这段初始nvram配置是不会变化的,可把它当作是出厂恢复备份。cfe启动过程中,读取 0x400~0x1400这段空间,转存到flash芯片的最后一个64K空间(通常给它划分成独立的nvram分区)内,同样是”FLSH”的 header,这段空间可以通过nvram工具来get、set、erase、commit。
下次启动时,首先读取nvrma分区的参数,若完整则用这个参数来配置系统,否则就要重新从cfe的镜像中重新读出原始值转存到nvram分区。
53xx的内置switch有port0~5,外加7,共7个port(不过port7实测没有效果,也给不出更多的解释),有效的实际只有0~5。而且 port5是固定作为cpu与switch的连接口的,所以cpu只能有一个eth控制器来连接switch了(eth0),lan/wan都是通过这个 上到cpu内部的,而面板lan/wan划分只能作用于0~4这5个port。
例:
要划分port0/1为wan,vlanid 2;port2/3/4为lan,vlanid 1。nvram的switch配置如下,
vlan1ports=1 2 3 4 5*
vlan1hwname=et0
landevs=vlan1 wl0 wl1
vlan2ports=0 5t /* wan上行报文带tag,故wandevs = vlan2 */
vlan2hwname=et0
wandevs=vlan2
现在openwrt的trunk版本对broadcom的nvram支持看来不是很好,修改uci只能建立起上层的虚接口ethx.x,并不能作用到switch的硬件配置,这应该跟broadcom驱动不开源有关。故必须把nvram中对switch配置的修改同步到uci的network中,config switch_vlan ports option做一致修改。
最理想的结果当然是用户只需要改写文件系统里的/etc/config/network文件,重启一下网络就可以把53xx switch配置好,甚至把修改同步到nvram分区。Long way to go.