[APM32F4] D-Code总线都能干啥

[复制链接]
234|8
和谐智者 发表于 2025-11-25 18:13 | 显示全部楼层 |阅读模式

D-Code总线都能干啥

D-Code总线是ARM Cortex-M系列微控制器中的关键数据总线,主要功能如下:

核心特性

  • 协议与位宽:基于AHB-Lite总线协议,32位数据总线
  • 地址范围:0x0000_0000至0x1FFF_FFFF,与I-Code总线共享相同空间
  • 访问特点:仅支持对齐访问,处理器总线接口会将非对齐访问自动转换为对齐访问

主要功能

  • 数据访问:负责从Flash/SRAM读取程序常量数据或写入数据
  • 调试支持:与调试模块共享总线,数据访问优先级高于调试访问
  • 总线仲裁:通过总线矩阵协调与DMA的访问冲突

与I-Code总线区别

  • 功能差异:D-Code专用于数据访问,I-Code专用于指令取指
  • 共享机制:两者通过总线矩阵实现同一存储空间的分时复用

支持存储类型

  • Flash存储器:用于存储程序中的常量数据(如const修饰的变量)
  • SRAM:用于存储程序中的变量(全局变量、局部变量等)

总线仲裁

D-Code总线通过总线矩阵实现与DMA的访问冲突仲裁。总线矩阵是连接D-Code总线和System总线的关键组件,负责协调内核系统总线和DMA主控总线之间的访问。仲裁采用轮换算法,当DMA和CPU同时请求访问同一资源时,总线矩阵会根据预设的优先级规则进行仲裁。

貌似总线冲突发生后对实时性的影响还是有些的。所以,在嵌入式程序设计中,可通过调整DMA传输时机或使用CPU缓存来减少冲突,例如在CPU空闲时段启动大批量DMA传输。

星云狂想曲 发表于 2025-11-26 11:35 | 显示全部楼层
所以,静态变量一定要对齐处理,这样可以提高效率。
要注意DMA操作与D-Code总线的冲突。
夜幕叙事曲 发表于 2025-11-26 18:57 | 显示全部楼层
这个总线分得这么清啊
以前只是调用API,没有关注类似的概念
黄昏收获 发表于 2025-11-26 23:18 | 显示全部楼层
总线也会冲突啊
VelvetNight 发表于 2025-11-27 22:50 | 显示全部楼层
学习了。楼主的学习范围真大啊
天鹅绒星星 发表于 2025-12-1 22:40 | 显示全部楼层
这是啥项目可以把性能压榨到这个程度啊
旧时光放映机 发表于 2025-12-15 13:19 | 显示全部楼层
了解了D-Code总线的功能后,对ARM Cortex-M系列微控制器的架构有了更深入的认识,这对于嵌入式系统设计非常有帮助。
黎明热忱 发表于 2025-12-15 23:21 | 显示全部楼层
这不是编译器应该干的活吗?
不过,多学点貌似也没有坏处。
时光贩卖机 发表于 2025-12-18 07:20 | 显示全部楼层
了解到D-Code总线与I-Code总线的区**,我更清楚了它们在存储访问上的分工。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0