ZHCUCO7B December   2024  – November 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2性能优化
    1. 2.1 编译器设置
      1. 2.1.1 启用调试和源代码交叉列
      2. 2.1.2 优化控制
      3. 2.1.3 浮点数学
      4. 2.1.4 定点除法
      5. 2.1.5 单精度与双精度浮点
      6. 2.1.6 链接时优化 (LTO)
    2. 2.2 存储器设置
      1. 2.2.1 从 RAM 执行代码
      2. 2.2.2 从闪存执行代码
      3. 2.2.3 数据放置
    3. 2.3 代码结构和配置
      1. 2.3.1 内联
      2. 2.3.2 内联函数
      3. 2.3.3 易失性变量
      4. 2.3.4 函数参数
      5. 2.3.5 启用更广泛的数据访问
      6. 2.3.6 自动代码生成工具
      7. 2.3.7 准确剖析代码
    4. 2.4 应用代码优化
      1. 2.4.1 SDK 优化库
      2. 2.4.2 使用库优化代码尺寸
      3. 2.4.3 C29 特别指令
      4. 2.4.4 C29 并行性
      5. 2.4.5 首选 32 位变量和写入
      6. 2.4.6 编码风格及其对性能的影响
  6. 3参考资料
  7. 4修订历史记录

数据放置

要了解哪些 RAM 对 C29 CPU 程序数据具有 0 等待状态访问权限,请参阅 F29H85x 和 F29P58x 实时微控制器技术参考手册 中的存储器子系统 (MEMSS) 一章。例如,CPU1 和 CPU2 对 LDAx RAM 上的程序数据具有 0 等待时间访问权限。CPU1 和 CPU3 对 CDAx RAM 上的程序数据具有 0 等待时间访问权限。

对 RAM 的并行访问可能导致仲裁,并且当它们发生在同一个 RAM 块(LDAx、CDAx - 每个“x”对应不同的 RAM 块)上时,会导致停滞。编译器会尽可能尝试执行并行加载:

LD.32	M2,*(ADDR2)(A7++)
||LD.32	M3,*(ADDR2)(A4+A0<< 2)

为避免停滞,请确保对不同的块进行访问。例如,对于 FIR 滤波器,并行加载滤波器系数和历史缓冲器值的情况就可能发生。将每个组件都放入自己的 RAM 块。