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 MaintenanceThis 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:
好的,帮忙催紧一点吧,
也不需要他们 给出特别准确的答案,可以逐步给出建议,但是不能这样总拖着,谢谢。