Rockchip BOX 以太网开发指南 - v2.2(2)

2019-08-30 23:27

福州瑞芯微电子有限公司2以太网PHY芯片由于在RK系列的SoC中内置了以太网MAC控制器,所以只需要搭配一颗以太网PHY芯片,即可实现以太网卡功能。按照规范,即使是不同厂家的PHY,仍然有一部分寄存器的定义是通用的,只要配置了这些通用的寄存器,基本上PHY就可以正常工作。因此,在Linux驱动中有通用的PHY驱动,3288之前的芯片所配套的SDK中使用的都是通用驱动,当然SoC中的MAC驱动是需要实现的。所以理论上,如果不需要使用PHY厂家提供的自定义的寄存器配置实现一些个性化的功能,那么PHY的驱动就不需要修改。从3288之后的SDK开始,打开了各个PHY厂家在Linux上提供驱动的配置,但是基本上,各家的驱动差异很小,基本上也是调用通用驱动的接口。

2.1接口

10/100M以太网PHY与MAC之间的接口主要有MII和RMII。10/100/1000M以太网PHY与MAC之间的接口主要有RGMII。RK系列的各个SoC支持的PHY接口列表如下:

SoCRK2918RK2908RK3066RK3188RK3288RK3036RK3128MII√√RMII√√√√√√√√√RGMII(注:2918/2908虽然硬件上有MII接口,但驱动上并不支持)

内部资料,不得扩散Page6of28福州瑞芯微电子有限公司2.2Kernel配置

SoCRK2918RK2908RK3066RK3188RK3288RK3036RK3128控制器VMACVMACVMACVMACGMACVMACGMACKernel版本2.6.x2.6.x3.0.363.0.363.103.103.102.2.1RK30662.2.1.1基本配置

以太网在kernel中的menuconfig配置如下所示,可以根据产品需求开关此配置,SDK中下述配置默认打开

DeviceDrivers--->

Networkingsupport--->

[*]Ethernet(10or100Mbit)--->

<*>RK29VMACethernetsupportMAC驱动代码位于kernel/drivers/net/rk29_vmac.c

此外,由于各个平台对PHY进行上下电操作使用的控制管脚或PMU会有所不同,同时各款RK芯片的一些和以太网相关的通用寄存器地址也会有所不同,所以和平台相关的操作和驱动代码是分开的,一般存放于arch/arm/mach-rkxx文件夹中,因不同芯片而异,如3066的上述操作位于文件arch/arm/mach-rk30/board-rk30-sdk-vmac.c中。该文件中的接口最终会被驱动代码所调用,需要特别注意的就是对PHY的上下电的操作,有可能不同产品所选用的PMU与SDK不同,或者使用的PMU的LDO口与SDK

内部资料,不得扩散Page7of28福州瑞芯微电子有限公司不同,所以需要根据实际情况修改这个文件。

2.2.1.2时钟配置

根据规范,RMII接口需要50M参考时钟来保证MAC和PHY之间数据传输的同步。50M时钟,可以由MAC来提供,也可以由PHY来提供。50M时钟必须是精确的,且必须保证尽可能小的jitter,太大的jitter会导致较大的传输的错包率。SDK默认使用MAC,也就是RK芯片内部的MAC控制器来提供时钟。一般情况下,并不需要使用PHY来提供参考时钟,因为这样需要额外增加一颗晶振来实现。除非由于分频的原因,MAC无法给出符合要求的50M参考时钟,RK3188T上即存在这样的问题,所以需要由PHY来提供参考时钟。需要在kernel上增加如下配置,并相应修改电路,即可实现(该配置目前只在3188相关的SDK中有效)。DeviceDrivers--->

Networkingsupport--->

[*]Ethernet(10or100Mbit)--->

<*>Selectthevmacsourceclock(RK29_VMAC_EXT_CLK)

2.2.1.3MAC地址

通常,每个以太网设备只有唯一的MAC地址,所以需要有一个地方用来存储这个唯一的地址,同时在打开以太网时读取出这个地址,并写入PHY寄存器。SDK提供了四种获取以太网MAC地址的方法:1)存储在NAND的IDB中

首先要保证kernel中的配置CONFIG_ETH_MAC_FROM_IDB已打开其次要使用烧写工具将地址写入,烧写工具在SDK中有提供。2)存储在EEPROM中

首先要保证kernel中的配置CONFIG_ETH_MAC_FROM_EEPROM已打开

其次EEPROM的驱动见drivers/staging/rk29/eeprom,根据不同型号请自行作相应修改

内部资料,不得扩散Page8of28福州瑞芯微电子有限公司3)使用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

classmainoneshot

以太网驱动读取地址的代码存于drivers/net/eth_mac,请根据实际需求修改此代码。由于不同的网络设备的MAC地址必须是唯一的,所以请考虑使用这种方法的风险性。4)使用随机地址

若上述三种方法均未采用,驱动中会在每次打开以太网时随机生成MAC地址由于不同的网络设备的MAC地址必须是唯一的,所以请考虑使用这种方法的风险性。

2.2.2RK3188同RK3066,见2.2.12.2.3RK32882.2.3.1基本配置

以太网在kernel中的menuconfig配置如下所示,可以根据产品需求开关此配置,SDK中下述配置默认打开

DeviceDrivers--->

Networkingsupport--->

[*]Ethernet(10or100Mbit)--->

RockChipdevices--->

RockChip10/100/1000Ethernetdriver

内部资料,不得扩散Page9of28福州瑞芯微电子有限公司由于3.10kernel的驱动架构与3.0.36相比有较大改动,引入了devicetree的概念,许多配置改为在dts文件中进行修改。所以,相应地,对以太网相关的一些配置的修改也需要在dts文件中进行。以3288boxsdk板为例,相应的dts文件为arch/arm/boot/dts/rk3288-box.dts.GMAC驱动代码位于drivers/net/ethernet/rockchip/gmac/&gmac_clkin{

clock-frequency=<125000000>;-->PHY供给GMAC的时钟大小

};

&gmac{//pmu_regulator=\--->给PHY供电的PMU上的ldo//pmu_enable_level=<1>;//1->HIGH,0->LOW--->ldo有效电平//power-gpio=<&gpio0GPIO_A6GPIO_ACTIVE_HIGH>;--->电源控制IO及有效电平

reset-gpio=<&gpio4GPIO_B0GPIO_ACTIVE_LOW>;--->复位IO及有效电平phy-mode=\--->PHY接口clock_in_out=\--->时钟方向tx_delay=<0x30>;--->TX线上的延时值rx_delay=<0x10>;--->RX线上的延时值

};

一般情况下,控制供电方式或者为PMU,或者为IO控制,若使用其中一种,则屏蔽另外一种。还有一种情况,是对PHY长供电,这时候可以考虑把二者都屏蔽。

PHY接口的配置:根据板上所使用的PHY的接口进行配置,一般千兆PHY为RGMII,百兆PHY为RMII。

时钟方向:input表示由PHY提供,output表示由GMAC提供。关于时钟,请参考2.2.3.2的说明。

TX/RX线上的延时值:请参考2.2.3.3

PHY供给GMAC的时钟大小:这个值只有在时钟方向为input时才会使用到,RMII接口时,设为50000000,RGMII接口时设为125000000100MPHY配置

&gmac_clkin{clock-frequency=<50000000>;};&gmac{//power-gpio=<&gpio0GPIO_A6GPIO_ACTIVE_HIGH>;reset-gpio=<&gpio4GPIO_B0GPIO_ACTIVE_LOW>;phy-mode=\内部资料,不得扩散-->修改成50M--->修改成rmiiPage10of28


Rockchip BOX 以太网开发指南 - v2.2(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:创设互动情景,促文言文教学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: