TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6657: Endpoint bar空间读写问题

Part Number:TMS320C6657

我们目前是在调试c6657 PCIE 接口,用TI自带的pcie的例子调试,例子如下图:

这段时间使用我上面用的pcie的例子工程,调试PCIE EP端的读写,碰到问题如下:

c6657工作在rc模式下,连接1个EP设备;

初始化时,可以看到EP有1个64位的bar空间,长度为16KB,使用bar0和bar1,然后软件给bar0 和bar1 分配了pcie空间地址;

分配的地址空间从 #define PCIE_NONFETCH_BASE_ADDRESS 0x10000000 开始的地址分配;

对应的region为 outbound region0,相关的3个寄存器也都做了配置,都是按照例子程序的流程走的,没有做改动。

配置完成后,在最后的PCIE_Test函数中,将ep端的bar0 bar1通过remote 寄存器读出打印出来,region 0的3个寄存器值也读出来打印出来:

ulData = *(volatile uint32_t *)(CSL_PCIE_CONFIG_REGS + 0x2010); // bar0
uart_printf ("EP configuration register bar0 = %x\n\n",ulData);
ulData = *(volatile uint32_t *)(CSL_PCIE_CONFIG_REGS + 0x2014); // bar1
uart_printf ("EP configuration register bar1 = %x\n\n",ulData);

//outbound region 相关寄存器
ulData = gpPCIE_app_regs->OB_SIZE;
uart_printf ("rc app register OB_SIZE = %x\n\n",ulData);

ulData = gpPCIE_app_regs->OUTBOUND_TRANSLATION[0].OB_OFFSET_HI;
uart_printf ("rc app register OB_OFFSET_HI 0 = %x\n\n",ulData);

ulData = gpPCIE_app_regs->OUTBOUND_TRANSLATION[0].OB_OFFSET_INDEX;
uart_printf ("rc app register OB_OFFSET_INDEX 0 = %x\n\n",ulData);

打印结果如下,感觉值都是对的:

EP configuration register bar0 = 10000004

EP configuration register bar1 = 0

rc app register OB_SIZE = 3

rc app register OB_OFFSET_HI 0 = 0

rc app register OB_OFFSET_INDEX 0 = 10000001

此时,软件再通过访问0x60000000,测试是否可以读这个ep的bar空间,

// 测试bar mem空间读写
unsigned int value = *((volatile Uint32 *)0x60000008);

执行到这一句时,软件会触发异常,执行到pcie_vector.asm中的 NMI/Exception 这一句,感觉是

interrupt vector table
.sect "vecs"
.align 1024

vectors:
VEC_RESET _c_int00 ;RESET
VEC_ENTRY NMI_ISR ;NMI/Exception
VEC_DUMMY ;RSVD
VEC_DUMMY ;RSVD
VEC_ENTRY PCIE_MSI_ISR ;interrupt 4
VEC_ENTRY PCIE_ERR_PMRST_ISR ;interrupt 5

对端的EP设备,这一段bar空间,是nvme设备自身的配置寄存器,是可以读的,不知是不是我的方法有问题,请帮忙看一下,谢谢。

user3766729:

另外还有一个问题,在看文档 “PCIe Use Cases for KeyStone Devices.pdf”时,在3.2.3 PCIe Inbound Address Translation Examples这一节,有这样的描述:

这是说,ep端发起对rc的inbound 读写,RC端的EDMA是不参与的?

如果没有dma,这样的读写是不是效率很低?或者是由ep端设备的dma来实现?

另外关于outbound和inbound的理解,不知道我理解是不是对的:

outbound : c6657作为rc,发起对ep的读和写,使用outbound做地址转换;

inbound:  c6657作为rc,ep发起对rc的读和写,使用inbound做地址转换;

,

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛寻求帮助,链接如下,如有答复将尽快回复您:

e2e.ti.com/…/tms320c6657-endpoint-bar-space-read-and-write-issue

,

user3766729:

多谢,翻译的很准确。

,

user3766729:

你好,国外是不是回复比较慢啊,目前还没有答复。

,

Cherry Zhou:

您好,是这样的,今天还是国外的假期,我们等等看明天是否会有回复。支持这条线的工程师人手短缺,所以回复会较慢些,还请您谅解!

,

user3766729:

非常感谢!

,

user3766729:

已经回复了,是问我用的例子工程,有没有更新吗 ?

需要我把例子工程的源码发一份给你吗?

,

user3766729:

您留我一个邮箱吧,我把用的例子工程发给你。

,

Cherry Zhou:

您好,

工程师目前还没有针对该问题的答复,不过正在查看解决方案中。

您方便分享在论坛上吗?不方便的话我们再通过邮箱联系。

,

user3766729:

哦 ,那个例子代码 有好多个文件,在论坛 不太方便吧?

,

Cherry Zhou:

那我先和您确认下,如果分享给工程师的话,目前也是分享到英文公共论坛,这样是否方便?如果您需要保密的话,我们就统一通过邮件与您和工程师沟通。

,

user3766729:

好的,你先问问吧,如果方便邮件就发邮件,

如果不能发邮件,就把代码贴到论坛 还是 以附件的形式放在论坛?代码有好多个源文件, 

,

Cherry Zhou:

好的,英文论坛这边如果有答复,我会尽快给到您。

,

user3766729:

周工,老外 有点慢啊,还没消息

,

Cherry Zhou:

不好意思,可能会回复的慢一些,因为工程师人手比较短缺,周五还没有答复的话我们这边帮您再催一下哈。

,

user3766729:

还是没有消息,帮忙再催一下吧,

,

Cherry Zhou:

您好,我们发邮件给工程师这边了,您请再等下,如果周三前还是没有回复的话我们再来看看。

,

user3766729:

好的,多谢,老外确实有点慢,会和中美贸易冲突有关吗?

,

user3766729:

还没有回消息,并且 上面那个链接 ,我点进去,看不到页面了。

这怎么弄,能够快一点有结果啊,项目耽误的时间太长了,

,

user3766729:

好像是 网站在维护,
Offline for Maintenance

This site will be down for a bit while we make some improvements.We won't be long so check back soon!

,

Cherry Zhou:

Dear,

是这样的,目前英文论坛在进行维护,大概会在10/3日左右恢复正常,到时候您可以先自行查看下,我们会在国庆节后给到您答复,如果还是没有相关答复我们来让上一级负责人看下,给您带来的不便敬请谅解。

,

user3766729:

老外还是没消息,是不是哪里出问题了,好多天了,

他们能不能解决,也不给个确切的消息,帮忙催一下吧,谢谢。

,

Cherry Zhou:

我们再催下哈,最快可能要到下周二给到您答复,因为这几天是国外的休息日,下周二还没有答复的话我们来发个邮件催促下。

,

user3766729:

周工,现在来看,好像还是没有进展吧,你节前不是说 找找他们领导吗,

,

user3766729:

再拖下去,我们这个项目,要黄了,

,

user3766729:

周工,您方便留个电话吗,我想和您电话沟通下,这样效率高一些,谢谢。

,

user3766729:

这里不方便的话,就把电话 发到我的邮箱,51076856@qq.com

,

Cherry Zhou:

我们先发个邮件来沟通下,给您带来的不便敬请谅解!

,

user3766729:

好的,帮忙催紧一点吧,

也不需要他们 给出特别准确的答案,可以逐步给出建议,但是不能这样总拖着,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: Endpoint bar空间读写问题
分享到: 更多 (0)