之前接觸過AMBA,以為只是ARM自家的私有的總線呢,后來得知,這是個相對通用的總線,所以來總結學習一下。
什么是AMBA總線
AMBA,是一種開放的協議,主要用于SoC內部和ASIC,用于連接各種功能模塊,簡稱AMBA總線。
其是ARM最開始設計出來的。AMBA是相對使用比較廣的片內總線技術,不單單是ARM專有的。
AMBA總線的仲裁
很明顯,如果總線上存在多個主模塊,就需要仲裁器來決定如何控制各種主模塊對總線的訪問。
AMAB也不例外。
AMBA總線仲裁的相關案例和應用
而對于AMBA總線仲裁的相關應用,之前接觸過AMS的SoC AS3536中,就有關于對應的優先順序的設置:
即,對應的ARB寄存器,可以設置,AHB總線上面的數據的優先級。
ARMI:ARM的指令
ARMD:ARM的數據
DMAC:DMA控制器
BRIDGE:AHB/APB 橋(Bridge)
可以通過配置,決定他們的優先級順序。
另外,還有一個ARB:

這兩個寄存器有啥區別?有待再學習。
AMBA總線應用舉例
SoC AS2525中用到了AMBA
AMS的AS3525是基于ARM922TDMI的:

第一次得知,其中的片內總線用的是AMBA,以為是ARM專有的總線呢。
后來才知道,AMBA是相對用的比較廣的片內總線,被多家公司所采用的,不單單是ARM公司。
APM86491 SoC中用了AMBA

也有AHB和APB。
Cortex M0+也用AMBA的AHB和APB

多個AMBA組件:AXI3/4, ACE, AHB, APB

S3C6410中也用了AMBA

ARM Cortex-M0、Cortex-M3 和 Cortex-M4 處理器的示例系統也用到AMBA

S3C2412也用到AMBA

Diamond Core CPU也用到了AMBA

LEON中也有用AHBA
(本文轉自網絡,感謝原作者的辛苦分享)