极术小姐姐 · 2019年12月17日

原子访问LDR / STR与LDREX / STREX

我正在使用混淆的RTL for Cortex-M3。我有一个可行的设计,可以将3个AHB-lite总线复用为2个AXI3总线。该设计类似于具有代码总线和系统总线的Xilinx designstart设计。处理器从代码总线正确引导,并执行指令(已禁用ITCM)。问题是我认为普通LDR / STR和LDREX / STREX在AXI总线上没有区别。我曾期望可以设置AxLOCK,以便可以根据以下网址实现监视器:http ://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0008a/CJAGCFAF.html

无论我怎么尝试,STREX指令都将失败(返回1)。即使在写后将BRESP设置为2'b01。如果在启用DTCM的情况下正常工作,那么所有这些都会很好,但是那些独占式写入也会失败。

还有什么需要检查的想法吗?

AHB-lite总线如何处理独占访问?也许翻译中缺少一些内容?

1 个回答 得票排序 · 时间排序
棋子 · 2019年12月17日

终于成功了。关键是XHB-400 corelink网桥的TRM。

http://infocenter.arm.com/hel...

我的最终解决方案是将EXREQ / EXRESP带入AHB-lite至AXI3桥接器。EXREQ被转换为AxLOCK信号。全局监视器位于AXI3总线上,并管理事务。如果LDREX和STREX之间没有任何无效的事务,则BRESP = 2'b01 = EX_OKAY。BRESP在适当的周期内传播回以清除EXRESP信号(低电平有效)。不确定这是否正确,但可以在我的测试中使用。

如果CLREX可以清除全局监视器,那很好,但是我不知道该怎么做。我想我需要将其一直深入到核心。我的理解是单处理器系统不需要此功能。

你的回答