ARM 常见总线的类型:
(1)AHB总线:
- 多主设备
- 分段传输、单周期总线控制权移交
- 总线没有三态,读、写、地址线都是单独的,所以可以实现频率更高
- 32-128位总线宽度
- 突发传输最大16字节
- 支持字节、半字、字 传输
- 支持仲裁、req、gnt、lock(独占总线,连续对一个设备操作)
(2)APB总线:(外围互联总线)
- 单控制器,APB桥是APB的唯一的主设备
- 32位地址空间,32位数据总线
- 读写数据线分离
(3)AXI总线:
cortex M3/4内部总线特点:
(1)具有三条独立的AHB总线,ICODE_BUS、DCODE_BUS、system_BUS。
- ICODE_BUS:
- DCODE_BUS:
- system_BUS:
引申问题:
(1)DMA 搬运数据时,是否会阻塞CPU取值或取数据?
- 正常情况下,CPU取从flash指令,使用的ICODE总线,而DMA是system_bus的一个master设备。所以DMA工作是不会阻塞CPU取值指令;
- DMA搬运数据时,如果CPU需要操作(W/R operation)system_bus的从设备,那么会影响CPU的操作周期。GD32F305系列,DMA章节描述,DMA搬运期间,会保证CPU至少占用system_bus的一半的总线带宽。
2:如果将代码放在sram(地址0x02000000后)里面,CPU取值是通过system_bus取值还是通过ibus取值?
- 应该是system_bus?因为ibus只能访问0-0x01FFFFFF的地址空间。
3:
参考资料:
https://blog.csdn.net/little_ox/article/details/118399117