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

C6678 PCIe如何实现多次boot

Hi,各位专家好!

我使用EVM6678L(PG1.0)+AMC转PCIe板卡+PC,实现了C6678的PCIe boot,上电第一次是可以boot成功的。后面我可能需要再次更新DSP上运行的代码,这时候可不可以不断电EVM板卡和PC就能够实现PCIe boot呢?

比如仅仅是把EVM板复位,让其重新进入PCIe boot模式,再从PC侧接收代码。但是这种方式下,PC会报出“检不到PCIe设备”的错误,因此无法完成重新加载。原因可能是C6678的PCIe不支持热插拔。

而如果不复位DSP,仅仅重新加载代码是可以的,但是DSP不知道去跳转到BOOT_MAIGC_ADDRESS所指向的地址执行程序。

请问大家有没有同样的需求 或者 能否给予合适的解决办法?

先谢谢了!

tthnny:

自己先顶一下~

请问关于PCIe boot可以不断电反复加载的问题,大家有什么好的建议没?

Andy Yin1:

您好,

你使用PCIe加载应该是通过host向DSP写了MAGIC_ADDRESS并触发IPC,然后才能加载并跑起来吧?

请问你的PC是跑的linux系统下检测到PCIe板卡么?请共享一下你使用AMC2PCIe板卡接到PC上的经验吧,现在有客户想在winXP下使用,但是我们目前没有这方面的驱动,不知你是否有相应的经验共享一下,谢谢!

tthnny:

回复 Andy Yin1:

Hi, Andy

1、“PCIe加载通过host向DSP写了MAGIC_ADDRESS并触发IPC,然后才能加载并跑起来”,不需要触发IPC中断,我使用的EVM6678L,PG1.0版本,I2C EEPROM中的IBL代码会不断检测MAGIC_ADDRESS,直到不为0就跳转执行用户加载的应用程序。Host PC只负责发送boot table,并最后写入MAGIC_ADDRESS。详细参考..\mcsdk_2_00_05_17\tools\boot_loader\examples\pcie\docs下的readme文档。(文档中关于拨码开关的设置有一个错误,SW9-1应为off)

2、我的PC是WindowsXP系统,需要安装Windriver软件,驱动可以自己生成。

首先,PC上电检测到PCIe板卡时,在设备管理器中显示是“多媒体控制器”,驱动生成方法是:

打开windriver工具,查看到TI PCIe设备,然后按照软件提示步骤生成.INF文件,即生成了PCIe驱动。这时候就可以为新扫描到的TI PCIe设备安装驱动,加载该文件,就完成驱动的安装。

然后就可以仿照开发包中pciedemo.c的做法来进行PCIe boot了。

如果大家对Windriver工具不太熟悉的话,可以先了解一下基本的功能,对调试PCIe boot帮助很大。有问题欢迎继续交流,谢谢!

 

Andy Yin1:

回复 tthnny:

tthnny,

非常感谢您的共享!

关于多次PCIe加载,按我的理解,如果不复位DSP,不会重新执行bootloader,程序应该加载不起来才对。但是按您的测试结果来看,不复位DSP,程序可以加载起来,但是不能正常运行起来,那么此时的MAGIC_ADDRESS中的值是否正确呢?

tthnny:

回复 Andy Yin1:

Andy,

关于多次PCIe加载,如果复位DSP,会出现PCIe设备不识别的问题。

如果“不复位DSP,程序可以加载起来,但是不能正常运行起来”,

是的。后面再次加载时,我连接过CCS查看过memory,发现boot table都已经加载成功,且MAGIC_ADDRESS也已经更新。只是DSP当前运行的程序不会去检测该地址,通过手动修改PC指针可以运行程序。(让所有已经加载过的DSP程序运行时都去检测magic address这个值也不太靠谱)。

不知道达人们有没有别的办法?

mathslee:

回复 tthnny:

你好tthnny!  

  1、 “Host PC只负责发送boot table”,我想问下这个boottable是怎么生成的?

  2、已经用windriver生成了INF文件,之后是将pciedemo.c按照windriver的函数改写吗….继而发布成.sys吗?

  非常期待你的帮助….谢谢…..

tthnny:

回复 mathslee:

你好,

1、关于boottable格式在mcsdk_2_00_05_17\tools\boot_loader\examples\pcie\linux_host_loader下有很多实例,和I2C boot下的数据格式一致(见bootloader文档),我的转换方法是使用mcsdk_2_00_05_17\tools下的bttbl2hfile、hfile2array工具,你可以看下对应工具的使用说明。

2、是仿照pciedemo.c的方法在windriver下改写,最后在VC6.0下开发。

祝你好运~

Andy Yin1:

回复 tthnny:

tthnny, 您好

可否分享一下WinXP下PCIe boot的相关资料,如基于V6.0开发的bootloader程序工程,谢谢

tthnny:

回复 Andy Yin1:

Hi,all

       继续该问题的提问~ 请大家关注,共同探讨这个问题。

谢谢!

spann spann:

回复 tthnny:

Hello tthnny~

我的電腦是win7 64bits ,想要照您之前所提的用windriver產生*.INF檔,讓PCIe可以在Windows的環境下驅動~

可是我目前沒有windriver的軟體,不知道您方不方便將您產生的.INF提供給我使用~

非常感謝您的幫忙!!!

赞(0)
未经允许不得转载:TI中文支持网 » C6678 PCIe如何实现多次boot
分享到: 更多 (0)