之前说通过将数据固化到block ram的方式作为一个临时的解决方案,不过不幸的是也正是我之前所担心的FPGA的block ram资源并没有我想象中的那么多,V5的LX155T的distributed ram与blockram加起来不到10Mb,注意是小b,也就是1M多B。所以我想起了beecube技术支持刚开始说的那种方式就是通过网口传送,在bps的安装路径下会有参考设计。于是我按照参考设计生成了针对bee3板子的和XUPV5板子的bit流,参考了bps的user guide,根据需要修改了host上的程序,用于跟FPGA通信,一切准备就绪后开始测试,结果很块就跑通了,也就是说我现在可以通过网口,在主机上运行程序读取主机上的文件然后发送给XUPV5板子的ddr了,我只测试了ddr,其他的没有测试,但是这已经足够了。而且做适当的修改就可以把shader的相关数据发送到ddr中。

  改完c代码之后,我打算着手在bee3板子上试试,我觉得应该不出意外的话就通了。在我更改生成的LX155T工程的时候发现它的ES工程中怎么又mdm模块呢?而且我测试了一下,通了!也就是说,bee3也可以通过mdm进行软件调试,我了个去了,我忽然意识到之前做了好多白费力的工作。我之前通过手动的方式也自己添加过mdm模块,但是没添加成功,但是我还是不确定bee3上能不能添加mdm模块,因为很可能是我添加时没做正确的设置。后来询问了一下beecube的技术支持,说添加了mdm,但是没调通。他说,那可能bee3就不支持mdm调试吧!他自己也没做过这方面的工作。所造成的后果就是,我竟然完全相信了。通过自己的错误经验已及他的确认于是我就认定bee3不支持mdm调试,于是剩下的时间就在寻找其他的方式将数据放到ddr中。。。于是就饶了一个又一个弯。最后不得不寻求网络的帮助,哎。。。

  不过从另一个角度上来说,我又学会了另一种与FPGA通信的方式,而且这种方式有很大的扩展性,因为我可以异地操作呀。也就是说我现在有两种可行的方案来解决我之前碰到的难题了。一个是网口,另一个是mdm调试。我打算两种方式都试一试。

  昨天通过网口试了一下,主机能发送数据到FPGA的ddr中,但是不能发送数据到shader的block ram中,原因可能出在原本我以为往ddr中传数与往block ram中传数是相同的,于是就用了同一个API操作,原因可能出在这,当然也不排除其他方面的原因,因为问题可能出现在任何地方,你想到的或者你想不到的。还有就是就算数据正确放到ddr了,我也能把shader需要的指令数据和cmem数据放到shader的block ram中了,但是启动shader后发现VF并没有将数据从DDR中取回来,由于VF通过mpmc从ddr中取数,而网口的一些功能也要通过MPMC跟ddr打交道,我怀疑是这方面的原因。具体原因不详,有待寻找。

  转向mdm吧,先跑通了再说,别让老师等的太着急了。今天搜了一下如何添加mdm,没有找到添加mdm时需要做的工作,但是找到了删除mdm时需要做的工作,于是逆向去考虑我就知道怎么去添加我的mdm模块了,现在正在产生bit流,等待着奇迹的发生吧...

ps:xilinx AR #38353

12.2 XPS/EDK - How do I build a MicroBlaze processor system without the debug module?

Solution

To remove the debug module, perform the following:

  1. Clear the parameter C_DEBUG_ENABLED to 0 in the MB instance of the MHS file.
  2. Remove or comment out "BUS_INTERFACE DEBUG = microblaze_0_mdm_bus" in the MB instance of the MHS file.
  3. Remove or comment out "PORT MB_Debug_Sys_Rst = Debug_SYS_Rst" in the proc_sys_reset instance of the MHS file.
  4. Remove or comment out the MDM instance of the MHS file.
  5. Remove or comment out the MDM driver instance of the MSS file.
Posted on 2012-12-26 11:27  clp510  阅读(191)  评论(0编辑  收藏  举报