(1)以太网PHY芯片驱动及接口
瑞芯微在设计RK 系列主控芯片时,有内置以太网MAC 控制器,通常只需要搭配一颗以太网PHY芯片,即可实现以太网卡功能。
根据规范,不同厂家的PHY芯片,一般有一部分寄存器的定义是通用的,只需配置了这些通用的寄存器,基本上PHY 就可以正常工作。对应Linux 系统,一般驱动中会自带有通用的PHY 驱动。特另是RK3288之前芯片所配套的SDK 中使用的都是通用驱动,如果不需要使用PHY 厂家提供的自定义的寄存器配置实现一些个性化的功能,那么PHY 的驱动就不需要修改。从RK3288 之后的SDK 开始,原厂则带有各个PHY 厂家在Linux 上提供驱动的配置,但基本上,各家的驱动差异很小,基本上也是调用通用驱动的接口,像目前10/100M 以太网PHY 与MAC 之间的接口主要有MII 和RMII,而10/100/1000M 以太网PHY 与MAC 之间的接口则主要为RGMII。从这个角度来讲,RK主控基本上是支持大部分PHY芯片。如需获取PHY驱动移植更多设置信息,欢迎随时交流:QQ:2335804557,手机:18576699326,孙生。
(2)RK3288常配合的以太网PHY芯片
10M/100M网络PHY芯片:LAN8720(SMSC,目前属于MicroChip)、RTL8201F (REALTEK)、AR8032(Atheros)、IP101GR(ICPLUS)、DM9161(Davicom);
10M/100M/1000M网络PHY芯片:RTL8211E(REALTEK)、RTL8211F(REALTEK);
(3)MAC地址设置问题
每个以太网设备只有唯一的MAC 地址,所以需要有一个地方用来存储这个唯一的地址,同时在打开以太网时读取出这个地址,并写入PHY 寄存器。SDK 提供了四种获取以太网MAC 地址的方法:
a.存储在NAND的IDB中
首先要保证kernel中的配置CONFIG_ETH_MAC_FROM_IDB已打开其次要使用烧,写工具UpgradeDllTool将地址写入,烧写工具在SDK 中有提供。
b.存储在EEPROM中
首先要保证kernel中的配置CONFIG_ETH_MAC_FROM_EEPROM已打开,其次EEPROM 的驱动见drivers/staging/rk29/eeprom,根据不同型号请自行作相应修改
c.使用WiFi的MAC地址
该种方法的原理是在系统启动时自动加载一次Wi-Fi驱动,同时将Wi-Fi 的MAC 地址
读出并存储在/data分区的一个文件中,以太网打开时,读取该文件中的地址。首先要保证kernel中的配置CONFIG_ETH_MAC_FROM_WIFI_MAC已打开,其次要保证Android 上wlan_mac 程序存在,且已在init.rc或init.rkxx.rc中已添加如下
脚本
servicewlan_mac /system/bin/wlan_mac
classmain
oneshot
以太网驱动读取地址的代码存于drivers/net/eth_mac,请根据实际需求修改此代码。
由于不同的网络设备的MAC 地址必须是唯一的,所以请考虑使用这种方法的风险性。
d.使用随机地址
若上述三种方法均未采用,驱动中会在每次打开以太网时随机生成MAC 地址
由于不同的网络设备的MAC 地址必须是唯一的,所以请考虑使用这种方法的风险性。
(4)关于引脚复用问题
对于RK3288,在使用以太网PHY时,还需注意主控GMAC RGMII IO引脚与其它功能的复用,常见的复用包括RMII与sdmmc, Flash与sdio1复用,,需要确认IOMUX 状态是否正确,可通过io命令直接查看GRF 寄存器确认。
欲了解更多PHY芯片调试信息,欢迎随时交流:QQ:2335804557,手机:18576699326,孙生。
(以上信息由深圳桑尼奇科技有限公司提供)
评论列表: