发 帖  
[经验] 基于AM57x平台的PCIe通信案例(三)
2018-7-6 10:40:03  722 AM5728 PCIe通信 嵌入式
收藏 0 收藏 推荐 0 推荐
分享
本次PCIe通信案例测试基于AM5728平台,篇幅较长,共分为三部分,分别阐述:AM57x与Artix-7FPGA、AM57x与Kintex-7 FPGA、AM57x与TMS320C66x DSP的PCIe通信测试,供大家参考学习。3  AM57x与TMS320C66x DSP的PCIe通信测试
3.1        实验准备
        介绍说明
PCI-Express是一种高速串行计算机扩展总线标准,由英特尔在2001年提出,属于高速串行点对点双通道高带宽传输。本实验以广州创龙TL6678-EasyEVM开发板为例,主要介绍AM57x开发板与创龙TMS320C66x开发板之间的PCIe通信测试,本次测试使用AM57x开发板作为RC—Root Complex,TL6678-EasyEVM开发板作为EP—Endpoint。
TL5728-EasyEVM是一款广州创龙基于TIAM5728(浮点双DSPC66x +双ARMCortex-A15)SOM-TL5728核心板设计的开发板,它为用户提供了SOM-TL5728核心板的测试平台,用于快速评估SOM-TL5728核心板的整体性能。底板采用沉金无铅工艺的4层板设计,为客户提供丰富的AM5728入门教程,协助客户进行底板的开发,提供长期、全面的技术支持,帮助客户以最快的速度进行产品的二次开发,实现产品的快速上市。除此之外,不仅提供丰富的Demo程序,还提供DSP+ARM多核通信开发教程,全面的技术支持,协助用户进行底板设计和调试以及DSP+ARM软件开发。
 基于TI AM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;
 强劲的视频编解码能力,支持1路1080P60或2路720P60或4路720P30视频硬件编解码,支持H.265视频软解码;
 双核PRU-ICSS工业实时控制子系统,支持EtherCAT、EtherNet/IP、PROFIBUS等工业协议;
 外设接口丰富,集成双千兆网、PCIe、GPMC、USB 2.0、UART、SPI、QSPI、SATA 2.0、I2C、DCAN等工业控制总线和接口,支持极速接口USB 3.0;
 应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。
01.png
TL6678-EasyEVM是一款基于广州创龙TI KeyStone C66x多核定点/浮点TMS320C6678核心板SOM-TL6678设计的高端DSP开发板,底板采用沉金无铅工艺的4层板设计,它为用户提供了SOM-TL6678核心板的测试平台,用于快速评估SOM-TL6678核心板的整体性能。
02.png

        硬件连接
将AM57x开发板PCIe接口连接到TL-PCIE-TC转接板的“PCIE HOST”插槽,将TL6678-EasyEVM开发板连接到转接板的“PCIE SLAVE”插槽。
测试时将AM57x开发板、TL6678-EasyEVM开发板和TL-PCIE-TC转接板通过螺丝和PCIe固定架固定,避免因连接松动造成测试失败的情况。以TL5728-EasyEVM开发板为例,硬件连接如下图所示:
03.png
3.2        案例编译
        编译PCIe驱动
编译PCIe驱动前,需要根据《Linux内核编译方法》文档编译内核,避免内核版本号和PCIe驱动版本号不对应,导致PCIe驱动无法加载的情况。
将光盘资料“Demo\PCIe\C66x_PCIe”整个文件夹复制到Ubuntu上的AM57xx工作目录,进入C66x_PCIe文件夹下的“src\driver”目录,执行以下命令编译生成驱动。
HOST#        make KDIR=/home/tronlong/AM57xx/kernel/Linux-4.4.19/ CROSS_COMPILE=arm-linux-gnueabihf-                //“KDIR=”路径为AM57x内核源码实际所在路径
04.png
编译完成后,会在当前路径路径下生成pcieLoader.ko驱动文件,将该驱动文件复制到开发板文件系统目录下。
        编译测试文件
进入C66x_PCIe文件夹下的“src\pcie-test”目录,执行以下命令编译测试文件。
HOST#        arm-linux-gnueabihf-gcc pcie-test.c -o pcie-test
05.png
编译完成后,会在当前目录下生成pcie-test可执行文件,将该可执行文件复制到开发板文件系统目录下。
为了方便测试,我司提供经过验证的pcieLoader.ko和pcie-test文件位于光盘资料“Demo\PCIe\C66x_PCIe\bin”目录下,将其拷贝到开发板文件系统目录下测试即可。
3.3        PCIe设备连接测试
参照C6678光盘资料《TMS320C6678开发例程使用手册》文档操作步骤,将C6748光盘资料“Demo\SYSBIOS\Binary\SYSBIOS_PCIe_EndPoint_PC.out”文件烧写到TL6678-EasyEVM开发板的NAND FLASH。烧写成功后,将TL6678-EasyEVM开发板拨码开关拨为IBL NAND启动模式,ON为1,相反为0。
参照“硬件连接”步骤连接开发板,使用Micro USB线连接AM57x开发板的调试串口到PC端。分别使用独立电源给TL6678-EasyEVM和AM57x开发板供电,并将AM57x开发板断电,电源开关拨至OFF档。这样是为了让TL6678-EasyEVM开发板DSP端程序先启动,避免出现DSP端的PCIe驱动无法被AM57x识别的情况。
将TL6678-EasyEVM开发板上电,等待DSP端的程序启动,此时开发板的风扇将停止转动。再给AM57x开发板上电,进入开发板文件系统后进行如下操作测试。
Linux系统在启动时会自动扫描并枚举设备,系统内核检测到PCIe设备并为PCIe板卡分配资源。文件系统下执行如下指令,查看PCIe设备详细信息:
Target#                lspci -v
06.png
PICe链路训练时完成各个BAR地址的映射,如下图所示。0x21000000为C6678的DDR映射到AM57x的地址,在AM57x端访问0x21000000相当于访问C6678的DDR的0x80000000地址。


07.png


执行如下指令查看PCIe的连接方式,由下图可见连接方式为“x1”,速率为“5GT/s”:
Target#                lspci -vv
08.png
执行如下指令查看C66x的PCI vendor和device codes:
Target#                lspci -n
09.png
        104c和8888分别为ARM端的PCI vendor和device codes。
        104c和b005分别为C66x DSP端的PCI vendor和device codes。
3.4        基于PCIe的DDR读写测试
在文件系统pcieLoader.ko驱动所在目录,执行如下指令按照驱动,完成地址映射:
Target#                insmod PCIeLoader.ko
10.png
在pcie-test文件所在路径执行如下指令,从0x21000000地址开始,往长度为0x10000(64KB)的空间写入0x5555aaaa的值,即往C6678端的DDR的0x80000000到0x8000FFFF的空间写入0x5555aaaa。
Target#                ./pcie-test -a 21000000 -s 0 -l 10000 -v 5555aaaa
11.png
测试程序中使用CPU读取memory的方式对DSP端的DDR进行读写,测试的速度并不精确,仅作参考。
保持TL6678-EasyEVM开发板不断电,参照《TMS320C6678开发例程使用手册》文档使用仿真器连接TL6678-EasyEVM开发板的CPU。
12.png
点击“View -> Memory Browser”,调出内存浏览器。
13.png
输入DDR3的起始地址查看数据。由图中可以知道TL6678-EasyEVM的DDR从0x80000000开始的64KB的空间的值都变为0x5555AAAA,表示测试正常。
14.png


2018-7-6 10:40:03   评论
3 个讨论
一定非常昂贵
2018-7-6 13:47:15 评论

举报

编辑辛苦了,谢谢
2018-7-6 20:56:29 评论

举报

了解一下
2018-7-6 21:20:57 评论

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

发表新帖
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

电路设计论坛

电子元器件论坛

传感技术

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

Orcad论坛

-

综合技术与应用

电机控制

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

物联网技术

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

高校联盟

西藏民族学院电子设计协会

西安电子科技大学西电实验室

桂林电子科技大学机电工程协会

鉴鹰电子科技协会

广东海洋大学科技创新协会

福建农林大学电子科技创新协会

湖北理工学院电子技术协会

深圳职业技术学院电子精英训练营

浙江科技学院Zuster

湘潭大学电子科技协会

青岛理工大学琴岛学院天宏开发团队

河南理工大学大学生电器开发部

广西科技大学电气信息创新协会

浙江机电职业技术学院电子制作协会

郑州大学西亚斯国际学院爱电工作室

新乡学院电子创新工作室

洛阳理工学院SmartTeam

苏州工业职业技术学院创新工作室

浙江工业大学GC315团队

杭电-微芯大学生科技创新孵化器

西安工业大学电信科协

商洛学院科技创新协会

大连民族学院创新工作室

南京信息工程大学帆木工作室

-

供求信息发布

方案交易

供需广告

芯片求购|供应发布区