AHB总线概述及运行时调试总结

发布于 2023-4-6 14:22
浏览
0收藏

AHB总线概述

AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。

1. AHB总线的架构

        AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。
        下图是一个典型的AHB系统总线的结构示意图

AHB总线概述及运行时调试总结-汽车开发者社区

2. AHB总线的组成

AHB总线概述及运行时调试总结-汽车开发者社区

AHB总线由Master、Slave和Infrastructure构成。Infrastructure由arbiter、数据多路、地址控制多路、译码器构成。
「主设备Master」
发起一次读/写操作
某一时刻只允许一个主设备使用总线
「从设备Slave」
响应一次读/写操作
通过地址映射来选择使用哪一个从设备
「仲裁器arbiter」
允许某一个主设备控制总线
「译码器decoder」
通过地址译码决定选择哪一个从设备
「总线可以分为三组」
        写数据总线(HWDATA)
        读数据总线(HRDATA)
        地址控制总线(HADDR)

3. 总线操作

        有需要占用总线的Master向arbiter发出请求,arbiter授权给指定的master。任一时间周期只有一个master可以接入总线,对其指定的slave进行读写操作。
        获得授权的总线开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。总线统一规划slave的地址,译码器根据地址和控制信号确定哪个slave与master进行数据通信。数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开,写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输。每笔传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能被扩展,因此slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号扩展,但HREADY为低时给传输加入一个等待状态以使slave获得额外的时间来提供或采样数据,另外slave通过响应信号HRESP反映传输状态。
        一般情况下master完成完整的burst传输,arbiter才会授权给其他的master接入总线,然而为避免过大的判决延迟,arbiter也可能打断burst传输。在这种情况下master必须再次接入总线以进行中断的burst剩余部分的传输。

CPU运行时调试器应如何访问内存?

CPU暂停时,调试器一般通过CPU来读取内存数据。但当CPU处于运行时,调试器就需要一条其他通路来进行内存访问。


对于Arm平台上,这条通路一般是AHB或者AXI总线。

AHB总线概述及运行时调试总结-汽车开发者社区

图示

Step. 1

您需要先确认您的芯片是否有AHB或者AXI通路,如有疑问可向芯片厂家咨询。


Step. 2

如果有AHB总线,可使用如下命令开启运行时内存访问:


SYStem.MemAccess AHB


如果有AXI总线,使用如下命令:


SYStem.MemAccess AXI


Step. 3

设置好后,可使用选项E 来进行内存或者变量的实时查看:


Data.dump E:0x10000000
Var.View %E myVar


注意事项


需记住,AHB/AXI总线访问一般都会Bypass Cache,直接访问物理内存。所以,如果有个变量myVar,存放于物理地址0x10000000, 但该地址区域开启了write-back cache模式。

此时如果您的代码对myVar进行读写,可能操作的都是Cache中的那份,读写改动并没有实时回写到物理内存。


那么,使用调试器进行运行时内存访问时,只能访问到物理内存那份数据,会导致查看的变量的值并没有进行刷新。

AHB总线概述及运行时调试总结-汽车开发者社区


文章转载自公众号:车端

分类
标签
收藏
回复
举报
回复
相关推荐