TIwilliam hill官网
直播中

崔映芬

7年用户 890经验值
私信 关注
[问答]

C6678通过PCIe与windows xp主机连接及设备资源分配的问题!!!

我现在尝试让C6678与运行windows xp系统的计算机连接。共尝试了两种方法,遇到如下问题:
1.利用PCIe的exampledesign工程,把6678设置成EP模式,主机进入windows后,用仿真器把代码下载进6678并运行,则可以正常连接上,在winndows里用pcie tree也可以扫描到设备,但是我重启windows后,就找不到6678这个pcie设备了,为什么?难道计算机重启的时候会和6678断开物理连接?6678这个例子程序是否有重连机制呢?
2.改用 pcie boot模式,则在计算机进入windows的情况下,我给6678上电让其完成pcieboot,这时在计算机上是可以找到6678这个设备的,但是重启计算机后就找不到6678了,必须重新复位6678让其重新boot才行,和情况1的情形一样!
我尝试让c6678先上电后运行exampledesign的代码,则其等待在link training那个步骤,当计算机一旦上电,6678马上显示link is up,但是当我进入windows后,仍然找不到设备啊!!!
求大神指点!!!有谁成功让6678与windows主机连接并获得windows系统分配的资源?

回帖(10)

杨娟

2018-5-25 02:54:34
您好,
如果要让PC枚举到C6678设备,不需要运行你所谓的exampledesign工程,只需要C6678配置成EP,PC作为RC,将EVM配置为PCIe boot之后,在Windows下就能找到C6678设备。如果windows系统复位后,如你所说,对C6678进行下电复位或者进行local reset即可让C6678被枚举到。
不太明白你最后“让6678获得windows系统分配资源”,PC枚举到C6678后就能获取C6678作为EP的memory资源映射。你可以查看C:timcsdk_2_00_09_21toolsboot_loaderexamplespcielinux_host_loader下的pciedemo.c.
                                                                          

举报

王玲

2018-5-25 03:09:34
引用: zbb9612 发表于 2018-5-25 02:54
您好,
如果要让PC枚举到C6678设备,不需要运行你所谓的exampledesign工程,只需要C6678配置成EP,PC作为RC,将EVM配置为PCIe boot之后,在Windows下就能找到C6678设备。如果windows系统复位后,如你所说,对C6678进行下电复位或者进行local reset即可让C6678被枚举到。
不太明白你最后“让6678获得windows系统分配资源”, ...

PC重启后,会有PCI复位过来啊 这时候复位DSP 如果PCIe配置的代码烧写的程序或者IBL中就可以完成枚举了
举报

崔映芬

2018-5-25 03:24:28
引用: 随行者011011 发表于 2018-5-25 03:09
PC重启后,会有PCI复位过来啊 这时候复位DSP 如果PCIe配置的代码烧写的程序或者IBL中就可以完成枚举了

感谢您的解答,通过把6678配置成pcieboot,成功与windows链接上了,但是Windows重新启动的时候,我观察到地址是0x21800004的寄存器CMD_STATUS的最后一位ltssm_enable位(链路训练使能)变成了0,即链路训练被关掉了。并且不会自动再变成1。这样导致了重启连接不上。
计算机重新启动的过程中,一共会有两次把这个寄存器改变,从而不使能链路训练,我通过jtag手动修改这个寄存器来使能链路训练,则计算机就能成功枚举并给6678分配资源。
1.我想知道为什么使能有效位会被改变,是不是6678这边的其他什么寄存器设置不正确?
2.6678如何能知道计算机进行了重新启动呢??
3.另外1.0版本的pcieboot是不是需要进行i2c的二次引导修复bug呢?我现在没有做这一步,但是pcieboot也成功了啊?
举报

崔映芬

2018-5-25 03:36:06
引用: zbb9612 发表于 2018-5-25 02:54
您好,
如果要让PC枚举到C6678设备,不需要运行你所谓的exampledesign工程,只需要C6678配置成EP,PC作为RC,将EVM配置为PCIe boot之后,在Windows下就能找到C6678设备。如果windows系统复位后,如你所说,对C6678进行下电复位或者进行local reset即可让C6678被枚举到。
不太明白你最后“让6678获得windows系统分配资源”, ...

感谢您的解答,通过把6678配置成pcieboot,成功与windows链接上了,但是Windows重新启动的时候,我观察到地址是0x21800004的寄存器CMD_STATUS的最后一位ltssm_enable位(链路训练使能)变成了0,即链路训练被关掉了。并且不会自动再变成1。这样导致了重启连接不上。
计算机重新启动的过程中,一共会有两次把这个寄存器改变,从而不使能链路训练,我通过jtag手动修改这个寄存器来使能链路训练,则计算机就能成功枚举并给6678分配资源。
1.我想知道为什么使能有效位会被改变,是不是6678这边的其他什么寄存器设置不正确?
2.6678如何能知道计算机进行了重新启动呢??我的6678与计算机之通过pcie差分线相连啊,没有其他单端控制线。
3.另外1.0版本的pcieboot是不是需要进行i2c的二次引导修复bug呢?我现在没有做这一步,但是pcieboot也成功了啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分