声明:本篇文章只是个人笔记,因为涉及商业上的某些原因,带"xxx"的名称不会公开,所以不要随便对号入座,以免误导读者。
vlan部分:rtl81xxe 的交换机部分并没有提供工具或者编程接口来控制交换机的vlan,而且手里资料有限,最后测试最优化的改代码方式为:
1. 启用rtk_vlan_support配置,禁用rtk_vlan_new_feature。
2. 修改dxxxxx/nxx/rtk_vlan.c, 中vlan收发函数进行处理,对发出去并且是网内网设备发的包进行脱vlan标签操作,相应的对从内网来的数据进行加标签操作.
3. 由于上cpu的需要,所以在vlan_dev.c中要修改,支持对相应vid的内网数据包和外网数据包对上cpu需求的处理. 这里并不借助vconfig机制,也不该借助,我们的目标是快速有效的,而不是该变动配置.
4.缺陷lan口的vlan有问题无法上cpu,暂时不解决,用iptables+no_tag的方式替代.
gpio部分: cpu是小端的, 因为涉及到了管脚复用,所以直接操作gpio是不可以达到目的的,先设置2个复用寄存器,偏移地址分别是0x40和0x44,设定好后再设定gpio,
注意的是,在本版中,rtl把2组,共64根gpio管脚分为了8组,每8根为一组,注意寄存器命名的方式, gpio输出模式下写0为高.另外中断采用轮询.