最近一直在调试TMS320C6655(EP)和linux(RC)用PCIe通信的项目,一直被这个MSI中断困扰。
查阅了各种资料,大体都是STK_PCIE的例子,移植起来实在繁琐,我也没有硬件验证这个例程。
请问谁有做过SYS/BIOS下C66X的MSI项目?
有例程的最好,没有例程的帮忙讲解一下大体步骤,比如RC先做哪些寄存器的初始化,EP需要做哪些初始化,等等。
不胜感激。
Andy Yin1:
带不带bios对于PCIE的配置流程都是一样的,只是中断路由有所区别,PCIE bios例程参考C:\ti\pdk_C6657_1_1_2_6\packages\ti\drv\exampleProjects\PCIE_exampleProject
Gery xia:
回复 Andy Yin1:
感谢回复。
这个例程我之前已经参考了,根据这个例程可以调试完成数据读写操作,但是例程中没有关于MSI的操作可以参考,所以现在MSI操作还没有成功。
目前现象是这样的:
linux做RC;c6655做ep
1. 初始化等都成功,数据能正常收发。
2. MSI_CAP : 0X00497005
MSI_lOW32 : 0X01FF8000
MSI_DATA : 0X00003D01
3.按照要求,要将MSI_DATA 发送到RC端的MSI_IRQ,才能实现RC端进入中断函数
即*((volatile uint32_t *) (MSI_ADDRESS)) = 0x00003d01;
就是不知道MSI_ADDRESS这个地址怎么算,和MSI_lOW32 有什么的函数关系,需要哪些寄存器信息?
谢谢
Gery xia:
回复 Andy Yin1:
感谢回复。
这个例程我之前已经参考了,根据这个例程可以调试完成数据读写操作,但是例程中没有关于MSI的操作可以参考,所以现在MSI操作还没有成功。
目前现象是这样的:
linux做RC;c6655做ep
1. 初始化等都成功,数据能正常收发。
2. MSI_CAP : 0X00497005
MSI_lOW32 : 0X01FF8000
MSI_DATA : 0X00003D01
3.按照要求,要将MSI_DATA 发送到RC端的MSI_IRQ,就能在RC端进入中断子程序
即*((volatile uint32_t *) (MSI_ADDRESS)) = 0x00003d01;
就是不中断MSI_ADDRESS这个地址怎么算,和MSI_lOW32 有什么的函数关系,还需要哪些寄存器的值?
谢谢