RZ T2H PCIe裸机程序开发和Linux下的配置介绍

瑞萨电子最新推出RZ/T2H工业专用MPU,单芯片提供强大应用处理性能,多协议工业网络及高达9轴高精度实时控制,支持Linux,RTOS及baremetal操作。除了强大CPU性能和9轴控制外设外,还提供2个PCIe Gen3通道等高速外设。本文主要介绍PCIe外设的功能、裸机下EP模式的程序开发、以及在Linux下,如何编译网卡的流程。

RZ/T2H产品简介

框图

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第1张

特性

CPU:Arm Quad Cortex-A55,最高工作频率1200MHz

CPU:Arm Dual Cortex-R52,最高工作频率1000MHz

内存:每个R52内核拥有576KB紧耦合内存(带 ECC),内置2MB RAM(带ECC)

LPDDR4 SDRAM内存接口

三角函数加速器

3端口千兆以太网交换机搭载TSN和3个以太网 GMAC

工业以太网:EtherCAT、PROFINET RT/IRT、EtherNet/IP等。

编码器接口:16ch(支持A-format、EnDat、BiSS、HIPERFACE DSL、FA-CODER)

多达9轴的电机控制

Octa/Quad SPI支持

ADC:12位4ch x 2个单元+6ch x 1个单元

ΔΣ I/F: 30ch

封装:729引脚FCBGA

电压:0.8V内核;1.1V DDR;1.8V PLL、OSC、USB I/O;3.3V GPIO、xSPI、RMII、MII

PCIe外设介绍及开发

1. PCIe外设的功能

RZ T2H的PCIe支持PCIe 3.0接口。如下图所示,在RZ/T2H的开发板中,预留了PCIe X4和X1接口

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第2张

其中有两条lane,通过拨码盘的设置,可以让T2H扮演RC,也可以扮演EP,也可以同时扮演RC和EP模式:

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第3张

用户可以根据使用场景,通过拨码盘来配置EP和RC。

2. 作为EP的实际用例和代码实现

某A客户将RZ T2H作为EP,接入Windows。由于RZ T2H有强大的性能,例如4个A55的核和2个R52的核,有3个GMAC等强大的外设功能。所以客户将主控制程序放在Windows端,通过PCIe与RZ T2H通信,RZ T2H作为EtherCAT主站来组建工业网络。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第4张

客户的主要业务逻辑在Windows工控机端,希望通过PCIe设备快速的组建工业以太网络,并希望RZ T2H不跑任何操作系统。根据RZ T2H的用户数据手册,我们根据以下流程编写了无操作系统的PCIe EP程序。再加上瑞萨强大的FSP配置软件,用户可以快速的实现自己的业务逻辑。

以下是RZ T2H的EP初始化流程。

1)设置EP模式和Channel

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第5张

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第6张

因为T2H有两个channel,每个channel可以单独配置成EP或RC,所以根据用户手册可以去配置PCIE_MODE。

而对于linkmode,T2H有2lanes X 1channel或1lane X 2 channels的选项。对于multi-link,选择1 lane X 2channels。Channel 0/1是相互独立的。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第7张

2)发出reset(ARESETn)

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第8张

3)释放模块停止状态

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第9张

4)释放从停止功能

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第10张

5)释放reset(RST_LOAD_B,RST_CFG_B)

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第11张

6)设置PHY的参数,这里用固定值

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第12张

7)设置硬件寄存器组

硬件寄存器组包括PCIe的Device ID,Vendor ID,Revision ID,Class Code等。相当于配置PCIe Type 0的64字节header。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第13张

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第14张

8)允许ASPM L1的状态转换

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第15张

9)中断设置。以下均为常规中断设置,直接引用即可。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第16张

10)释放reset(RST_PS_B,RST_GP_B,RST_B,RST_OUT_B),等500us,再释放RST_RSM_B。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第17张

对于EP的初始化流程,在以下链接中有更详细的介绍。

当以上流程完成后,再根据AXI总线配置AWBase,ADest,将PCIe的BAR基地址映射到SRAM地址。

瑞萨电子同时也基于Windows Drive Framework,开发出了T2H的Windows端驱动。当该烧录了如上固件的T2H插入PC,并装入Windows驱动后,会看到:

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第18张

除了基于WDF的驱动程序外,瑞萨电子还在Windows的驱动层作了效率分析。由于Windows是非实时操作系统,对于应用层调用驱动层的读取/写入函数,延时不可预测。所以在Windows的驱动层做了数据的收发测试,可以达到PCIe3.0的效率。

下图是T2H与台式机的PCIe X1接口的连接:

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第19张

同时,瑞萨还提供了T2H作为RC的裸机代码。下图是一台T2H作为RC,另一台T2H作为EP的连接和通信(注意PCIe连接线的RX与TX需要交换方向)。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第20张

3. 在Linux下使用BCM5751 PCIe网卡的流程

本文以此PCIe网卡为例,实现T2H在Linux下使能该网卡。

T2H采用YOCTO构建嵌入式Linux系统,对于BCM5751,需要将Tigon3模块编译进image。

1)通过menuconfig来built in Broadcom Tigon3 support。

其具体路径是:

Linux Kernel Configuration

└─>Device Drivers

└─>Network device support

└─>Ethernet driver support

└─>Broadcom Tigon3 HWMON support

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第21张

注意:通过MACHINE=rzt2h-dev bitbake virtual/kernel -c menuconfig打开menuconfig

2)编译完BSP并烧录镜像文件后,插入PCIe网卡并重启T2H开发板

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第22张

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第23张

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第24张

可以看到,该PCIe设备已经生成了网络设备。并且外设PC已可以与enp1s0进行ping了。

RZ T2H PCIe裸机程序开发和Linux下的配置介绍 (https://ic.work/) 技术资料 第25张

文章推荐

上一篇

已是最后文章

相关推荐