ZHCUA98E january   2018  – march 2023 TDA4VM , TDA4VM-Q1

 

  1.   摘要
  2. 1关于本文档
    1. 1.1 相关文档
    2. 1.2 商标
  3. 2将 C 源代码从 C6000 迁移到 C7000
    1. 2.1  编译器选项
    2. 2.2  原生矢量数据类型
    3. 2.3  类型限定符:near 和 far
    4. 2.4  64 位 long 类型
    5. 2.5  对控制寄存器的引用
    6. 2.6  存储器映射外设
    7. 2.7  运行时支持
    8. 2.8  迁移头文件 c6x_migration.h 的内容
      1. 2.8.1 支持的宏
      2. 2.8.2 不受支持的宏
      3. 2.8.3 传统数据类型
      4. 2.8.4 传统内在函数
    9. 2.9  伽罗瓦域乘法指令
    10. 2.10 有关迁移代码的性能注意事项
      1. 2.10.1 UNROLL Pragma
      2. 2.10.2 子矢量访问
      3. 2.10.3 16x16 和 16x32 位乘法
      4. 2.10.4 __x128_t 类型
      5. 2.10.5 无符号数组偏移
      6. 2.10.6 流引擎和流地址生成器
      7. 2.10.7 其他优化指南
  4. 3主机仿真
  5. 4修订历史记录
    1.     29
    2.     30

对控制寄存器的引用

需要手动更改对 C 和 C++ 中控制寄存器的引用。C7000 有一组完全不同的控制寄存器。更多详细信息,请参阅 C7000 CPU 和指令集参考指南

编译器工具支持的控制寄存器符号在 C6000 编译器工具的 c6x.h 和 C7000 编译器工具的 c7x_cr.hc7x_ecr.h 中列出。在这些头文件中使用 __cregister 关键字来声明控制寄存器。

需要更改的代码的常见示例是:

  • 对 C6000 控制状态寄存器 (CSR) 的引用。这包括对饱和 (SAT) 位的引用。对于 C7000,这现在是标志状态寄存器 (FSR) 中的一个位。请注意,提供 SAT 位接口只是为了确保与 C6000 特定代码的兼容性。不推荐在编写新的 C7000 代码时引用 SAT 位。

    可以使用在 c6x_migration.h 中定义的 __get_C7X_FSR() API 来访问 SAT 位。返回一个 8 位值,其中 SAT 位指定为“位 7”。

  • 对浮点配置寄存器(FADCR、FAUCR、FMCR)的引用。与浮点运算有关的位现在是 C7000 标志状态寄存器 (FSR) 和浮点控制寄存器 (FPCR) 中的位。

    可以使用在 c6x_migration.h 中定义的 __get_C7X_FSR() API 来访问浮点状态位。返回一个 8 位值,其中浮点状态位包含位 0-6。