完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我在斯巴达6 FPGA工作。 我在XPS中使用MPMC控制器与外部LPDDR连接。 我的SDK应用程序的bss段位于LPDDR中。 我已经制作了MPMC区域cachaeble区域,因为代码执行时间必须最小化。 我还没有在micrlaze配置中写回来,所以我相信microblaze配置为直写。 SDK应用程序工作正常。 但是我还必须从VHDL端读取LPDDR以获取SDK应用程序中使用的变量值。 当我读到我从DDR得到错误的值,我怀疑从缓存不会发生外部内存更新。 建议解决这个问题的方法。 带着敬意 Shalini |
|
相关推荐
9个回答
|
|
您必须使您的Microblaze和硬件同步,并且您必须在micrlaze中在适当的时间刷新缓存或使缓存无效。
或者不使用缓存。 另外,请确保在c代码中使用必要的关键字volatile。 ***我们中的许多人都是FPGA爱好者,而不是Xilinx员工。 如果您获得帮助并给予荣誉(明星),您将来可能会继续获得帮助。 如果您有解决方案,请将其标记为解决方案。*** |
|
|
|
你好,
我不太熟悉缓存。 刷新或使高速缓存无效意味着更新到外部存储器? 此外,我认为因为我的bss段被加载,所以无法使用microblaze对缓存进行操作。 我相信自从我做完之后我就开始写了。不要回信。 还为什么没有更新? |
|
|
|
你好,
我知道当我们调用microblaze_flush_dcache()时,dcache数据被写入主内存。我是否正确? 我做了一个程序,其主要部分是: 我的; int main(){init_platform(); microblaze_enable_icache(); microblaze_enable_dcache(); 我的= 0x347; microblaze_flush_dcache(); 而(1){} } 我的bss部分是MPMC控制器和微型BRAM中的所有其他部分。 MPMC通过缓存启用区域进行写入。 我从地图文件中找到了我的地址并读取了该位置。 我得到0而不是0x347。 我相信当我调用microblaze_flush_dcache()时,我的值将在主内存中更新。 但为什么不是这样呢? 欢迎任何建议。 带着敬意 Shalini |
|
|
|
你确定内存地址?
#include“xil_cache.h” #define MINE_ADDRESS(MPMC_BASEADDR + 0x00000000) int main() { unsigned int * MinePtr; #if MICROBLAZE_EXCEPTIONS_ENABLED == 1 microblaze_enable_exceptions(); #万一 #if XPAR_MICROBLAZE_USE_ICACHE == 1 Xil_L1ICacheInvalidate(); Xil_ICacheEnable(); #万一 #if XPAR_MICROBLAZE_USE_DCACHE == 1 Xil_L1DCacheInvalidate(); Xil_DCacheEnable(); #万一 init_platform(); MinePtr =(unsigned int *)MINE_ADDRESS; * MinePtr = 0x347; Xil_DCacheFlush(); 而(1){} } 可以手动选择地址。 你能再试一次吗? 如果值写在正确的地址,您是否尝试过检入内存? debugasm |
|
|
|
你好,
很抱歉延迟回复。 我前一天休假。 我很确定地址是对的。 我也检查了你的示例程序。 没有效果。 我只能读取0.我确信这是因为当我保持整个程序不同于禁用缓存时我可以读取正确的值,地图文件中没有变化但我的代码执行时间更糟,我不想要。 请提出一些建议。 带着敬意 Shalini |
|
|
|
>我不太熟悉缓存。
刷新或使高速缓存无效意味着更新到外部存储器? 当您的cahche具有可能尚未在外部存储器中的内容时,您会刷新。 (例如,您希望外部加速器访问您已写入内存的数据,因此在启动外部加速器之前刷新缓存) 当您的缓存尚未包含外部存储器中的内容时,您将失效。 (例如,您的外部加速器已完成,您希望强制处理器转到外部存储器,而不是缓存)。 https://www.youtube.com/watch?v=ELlnCzKMXns ***我们中的许多人都是FPGA爱好者,而不是Xilinx员工。 如果您获得帮助并给予荣誉(明星),您将来可能会继续获得帮助。 如果您有解决方案,请将其标记为解决方案。*** |
|
|
|
你好,
感谢您的回复。 但是,即使在刷新缓存后我也写了,但是在MPMC控制器中没有更新缓存中的值。 有什么建议?? 除了执行时间之外的所有内容都没有缓存启用。 我使用microblaze_flush_dcache()函数进行刷新,使用microblaze_enable_dcache()进行启用。 我的头文件是mb_interface.h。 如果我错了,请纠正我。 带着敬意 Shalini |
|
|
|
你知道如何使用chipcope吗?
排除故障。 如果没有,请查看chipcope并找出如何使用它来查看哪些数据在何处以及为何被挂起。 ***我们中的许多人都是FPGA爱好者,而不是Xilinx员工。 如果您获得帮助并给予荣誉(明星),您将来可能会继续获得帮助。 如果您有解决方案,请将其标记为解决方案。*** |
|
|
|
你好,
截至目前我公司还没有为我提供调试电缆。 我注意到了另一件事。 当我们点击“打开声明”突出显示SDK环境中的一个函数时,它通常会转到函数定义。 对于我的任何缓存功能都不会发生这种情况。 我只能达到mb_interface.h文件。 是因为这些flush和enable函数是以.asm文件形式给出的。 如何确保工具在正确执行或绕过时正确包含这些内容。 带着敬意 Shalini |
|
|
|
只有小组成员才能发言,加入小组>>
2415 浏览 7 评论
2821 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2292 浏览 9 评论
3372 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2458 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1081浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
579浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
440浏览 1评论
2000浏览 0评论
723浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 13:12 , Processed in 1.603725 second(s), Total 94, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号