车联网时代——i.MX6车载以太网移植

电子说

1.3w人已加入

描述

使用以太网技术及架构作为下一代车载网络的发展方向受到了汽车行业内部及通讯业技术人员的广泛关注,娱乐系统和高级驾驶辅助系统(ADAS)对传输带宽的迫切需求推动了以太网介入汽车网络的进程。本文将介绍如何将NXP的TJA1101移植到i.MX6UL上,并测试其性能。

TJA1101

TJA1101是一款高性能单端口、符合IEEE 100BASE-T1标准的以太网PHY收发器。该器件专为汽车应用而设计且符合相关标准,在长达15米的未屏蔽双绞线(UTP)上,每端口提供100Mbit/s发送和接收能力。高集成度的可靠器件设计,节省了外部元件、成本和空间。其功能框图如图1所示:

i.MX6

图1 TJA1101功能框图

硬件设计:

TJA1101支持MII和RMII接口模式,现以RMII接口为例,介绍其硬件设计方案。RMII接口的典型应用电路如图2所示,相比于MII,RMII仅需要4根数据线、最少7根线,参考时钟由PHY提供,频率为50MHz。

i.MX6

图2 RMII典型应用电路

电路设计:

i.MX6

图3 TJA1101原理图

软件移植:

NXP提供了基于Linux的TJA1101驱动源码,可以在如下地址获取,或者点击“阅读原文”获取:

https://source.codeaurora.org/external/autoivnsw/tja110x_linux_phydev

以4.1.15_2.0.0版本的内核为例,将下载下来的源码复制到kernel/drivers/net/phy/目录下,编辑kernel/drivers/net/phy/Kconfig,添加编译选项:

config NXP_TJA110X_PHY  tristate "Driver for TJA110X PHYs"  ---help---    Supports the TJA110X PHYs.

 

    

编辑kernel/drivers/net/phy/Makefile,添加编译内容:

obj-$(CONFIG_ NXP_TJA110X_PHY)  += tja110x.o

 

配置menuconfig:

Device Drivers  --->         [*] Network device support  --->            -*-   PHY Device support and infrastructure  --->                                                            <*>   Driver for TJA110X PHYs  

 

   (左右滑动可看完整代码)

由于i.MX以太网控制器默认配置为MII模式,enet时钟由MAC向PHY提供,与RMII的时钟方向不一致,因此需要修改kernel/ arch/arm/mach-imx/mach-imx6ul.c, 将时钟方向配置为PHY到MAC:

static void __init imx6ul_enet_clk_init(void)                      {            …     if (!IS_ERR(gpr)) {                            regmap_update_bits(gpr, IOMUXC_GPR1, IMX6UL_GPR1_ENET_CLK_DIR, 0);         regmap_update_bits(gpr, IOMUXC_GPR1, (1 << 13), 1);         regmap_update_bits(gpr, IOMUXC_GPR1, (1 << 14), 1);                                                                                                                                    }      … } 

 

(左右滑动可看完整代码)

修改设备树配置:

&fec1 {  …  mdio {    #address-cells = <1>;    #size-cells = <0>;    ethphy0: ethernet-phy@0 {      compatible = "ethernet-phy-ieee802.3-c22";      reg = <0>;    };  };};pinctrl_enet1: enet1grp {  fsl,pins = <    MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0    MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0    MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN  0x1b0b0    MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00  0x1b0b0    MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01  0x1b0b0    MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN  0x1b0b0    MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00  0x1b0b0    MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01  0x1b0b0    MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031  >;

 

(左右滑动可看完整代码)

带宽测试:

利用iperf3进行带宽测试,其带宽最高可达到96.0Mbps,平均为93.0Mbps,测试结果见图4。

i.MX6

图4 TJA1101带宽测试结果

ZLG一直致力于汽车方案的开发与支持。作为NXP的产品代理商,我们在汽车电子应用领域耕耘已久,希望可以帮助您快速、高效地完成产品设计开发。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分