ZHCU876Z July   2001  – October 2023 SM320F28335-EP

 

  1.   1
  2.   请先阅读
    1.     关于本手册
    2.     标记规则
    3.     相关文档
    4.     德州仪器 (TI) 提供的相关文档
    5.     商标
  3. 软件开发工具简介
    1. 1.1 软件开发工具概述
    2. 1.2 编译器接口
    3. 1.3 ANSI/ISO 标准
    4. 1.4 输出文件
    5. 1.5 实用程序
  4. 使用 C/C++ 编译器
    1. 2.1  关于编译器
    2. 2.2  调用 C/C++ 编译器
    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  更改编译器解释文件名的方式
      8. 2.3.8  更改编译器处理 C 文件的方式
      9. 2.3.9  更改编译器解释和命名扩展名的方式
      10. 2.3.10 指定目录
      11. 2.3.11 汇编器选项
      12. 2.3.12 已弃用的选项
    4. 2.4  通过环境变量控制编译器
      1. 2.4.1 设置默认编译器选项 (C2000_C_OPTION)
      2. 2.4.2 命名一个或多个备用目录 (C2000_C_DIR)
    5. 2.5  控制预处理器
      1. 2.5.1  预先定义的宏名称
      2. 2.5.2  #include 文件的搜索路径
        1. 2.5.2.1 在 #include 文件搜索路径(--include_path 选项)中新增目录
      3. 2.5.3  支持#warning 和 #warn 指令
      4. 2.5.4  生成预处理列表文件(--preproc_only 选项)
      5. 2.5.5  预处理后继续编译(--preproc_with_compile 选项)
      6. 2.5.6  生成带有注释的预处理列表文件(--preproc_with_comment 选项)
      7. 2.5.7  生成带有行控制详细信息的预处理列表(--preproc_with_line 选项)
      8. 2.5.8  为 Make 实用程序生成预处理输出(--preproc_dependency 选项)
      9. 2.5.9  生成包含#include在内的文件列表(--preproc_includes 选项)
      10. 2.5.10 在文件中生成宏列表(--preproc_macros 选项)
    6. 2.6  将参数传递给 main()
    7. 2.7  了解诊断消息
      1. 2.7.1 控制诊断消息
      2. 2.7.2 如何使用诊断抑制选项
    8. 2.8  其他消息
    9. 2.9  生成交叉参考列表信息(--gen_cross_reference_listing 选项)
    10. 2.10 生成原始列表文件(--gen_preprocessor_listing 选项)
    11. 2.11 使用内联函数扩展
      1. 2.11.1 内联内在函数运算符
      2. 2.11.2 内联限制
      3. 2.11.3 不受保护定义控制的内联
        1. 2.11.3.1 使用内联关键字
      4. 2.11.4 保护内联和 _INLINE 预处理器符号
        1. 2.11.4.1 头文件 string.h
        2. 2.11.4.2 库定义文件
    12. 2.12 使用交叉列出功能
    13. 2.13 关于应用程序二进制接口
    14. 2.14 启用入口挂钩和出口挂钩函数
    15. 2.15 实时固件更新 (LFU)
  5. 优化您的代码
    1. 3.1  调用优化
    2. 3.2  控制代码大小与速度
    3. 3.3  执行文件级优化(--opt_level=3 选项)
      1. 3.3.1 创建优化信息文件(--gen_opt_info 选项)
    4. 3.4  程序级优化(--program_level_compile 和 --opt_level=3 选项)
      1. 3.4.1 控制程序级优化(--call_assumptions 选项)
      2. 3.4.2 混合 C/C++ 和汇编代码时的优化注意事项
    5. 3.5  自动内联扩展(--auto_inline 选项)
    6. 3.6  链接时优化(--opt_level=4 选项)
      1. 3.6.1 选项处理
      2. 3.6.2 不兼容的类型
    7. 3.7  使用反馈制导优化
      1. 3.7.1 反馈向导优化
        1. 3.7.1.1 第 1 阶段 - 收集程序分析信息
        2. 3.7.1.2 第 2 阶段 - 使用应用程序分析信息进行优化
        3. 3.7.1.3 生成和使用配置文件信息
        4. 3.7.1.4 反馈制导优化的应用示例
        5. 3.7.1.5 .ppdata 段
        6. 3.7.1.6 反馈制导优化和代码大小调整
        7. 3.7.1.7 检测程序执行开销
        8. 3.7.1.8 无效的分析数据
      2. 3.7.2 分析数据解码器
      3. 3.7.3 反馈制导优化 API
      4. 3.7.4 反馈制导优化总结
    8. 3.8  使用配置文件信息分析代码覆盖率
      1. 3.8.1 代码覆盖
        1. 3.8.1.1 第 1 阶段 - 收集程序分析信息
        2. 3.8.1.2 第 2 阶段 -- 生成代码覆盖信息报告
      2. 3.8.2 相关的特征和功能
        1. 3.8.2.1 路径分析器
        2. 3.8.2.2 分析选项
        3. 3.8.2.3 环境变量
    9. 3.9  使用优化时的特殊注意事项
      1. 3.9.1 在优化代码中谨慎使用 asm 语句
      2. 3.9.2 使用易失性关键字进行必要的内存访问
        1. 3.9.2.1 访问别名变量时的注意事项
        2. 3.9.2.2 使用 --aliased_variables 选项来指示采用了以下技术
        3. 3.9.2.3 仅在 FPU 目标上:使用 restrict 关键字指示指针没有别名
          1. 3.9.2.3.1 restrict 类型限定符与指针搭配使用
          2. 3.9.2.3.2 restrict 类型限定符与指针搭配使用
    10. 3.10 通过优化使用交叉列出特性
    11. 3.11 数据页 (DP) 指针加载优化
    12. 3.12 调试和分析优化代码
      1. 3.12.1 分析优化的代码
    13. 3.13 提高代码大小优化级别(--opt_for_space 选项)
    14. 3.14 编译器支持重入 VCU 代码
    15. 3.15 编译器支持生成DMAC 指令
      1. 3.15.1 自动生成 DMAC 指令
      2. 3.15.2 指定数据地址对齐的断言
      3. 3.15.3 __dmac 内在函数
    16. 3.16 正在执行什么类型的优化?
      1. 3.16.1  基于成本的寄存器分配
      2. 3.16.2  别名消歧
      3. 3.16.3  分支优化和控制流简化
      4. 3.16.4  数据流优化
      5. 3.16.5  表达式简化
      6. 3.16.6  函数的内联扩展
      7. 3.16.7  函数符号别名
      8. 3.16.8  归纳变量和强度降低
      9. 3.16.9  循环不变量代码运动
      10. 3.16.10 循环旋转
      11. 3.16.11 指令排程
      12. 3.16.12 寄存器变量
      13. 3.16.13 寄存器跟踪/定位
      14. 3.16.14 尾部合并
      15. 3.16.15 自动增量寻址
      16. 3.16.16 删除与零的比较
      17. 3.16.17 RPTB 生成(仅适用于FPU 目标)
  6. 链接 C/C++ 代码
    1. 4.1 通过编译器调用链接器(-z 选项)
      1. 4.1.1 单独调用链接器
      2. 4.1.2 调用链接器作为编译步骤的一部分
      3. 4.1.3 禁用链接器(--compile_only 编译器选项)
    2. 4.2 链接器代码优化
      1. 4.2.1 生成函数子段(--gen_func_subsections 编译器选项)
      2. 4.2.2 生成聚合数据子段(--gen_data_subsections 编译器选项)
    3. 4.3 控制链接过程
      1. 4.3.1 包含运行时支持库
        1. 4.3.1.1 自动选择运行时支持库
          1. 4.3.1.1.1 使用 --issue_remarks 选项
        2. 4.3.1.2 手动选择运行时支持库
        3. 4.3.1.3 用于搜索符号的库顺序
      2. 4.3.2 运行时初始化
      3. 4.3.3 通过中断向量进行初始化
      4. 4.3.4 全局对象构造函数
      5. 4.3.5 指定全局变量初始化类型
      6. 4.3.6 指定在内存中分配段的位置
      7. 4.3.7 链接器命令文件示例
    4. 4.4 链接 C28x 和 C2XLP 代码
  7. 链接后优化器
    1. 5.1 链接后优化器在软件开发流程中的作用
    2. 5.2 删除冗余 DP 负载
    3. 5.3 跟踪跨分支的 DP 值
    4. 5.4 跟踪跨函数调用的 DP 值
    5. 5.5 其他链接后优化
    6. 5.6 控制链接后优化
      1. 5.6.1 排除文件(-ex 选项)
      2. 5.6.2 控制汇编文件中的链接后优化
      3. 5.6.3 保留链接后优化器输出(--keep_asm 选项)
      4. 5.6.4 禁用跨函数调用的优化(-nf 选项)
      5. 5.6.5 使用建议对汇编代码进行注释(--plink_advice_only 选项)
    7. 5.7 有关使用链接后优化器的限制
    8. 5.8 命名输出文件(--output_file 选项)
  8. C/C++ 语言实现
    1. 6.1  TMS320C28x C 的特征
      1. 6.1.1 实现定义的行为
    2. 6.2  TMS320C28x C++ 的特征
    3. 6.3  数据类型
      1. 6.3.1 枚举类型大小
      2. 6.3.2 支持 64 位整数
      3. 6.3.3 C28x double 和 long double 浮点类型
    4. 6.4  文件编码和字符集
    5. 6.5  关键字
      1. 6.5.1 const 关键字
      2. 6.5.2 __cregister 关键字
      3. 6.5.3 __interrupt 关键字
      4. 6.5.4 restrict 关键字
      5. 6.5.5 volatile 关键字
    6. 6.6  C++ 异常处理
    7. 6.7  寄存器变量和参数
    8. 6.8  __asm 语句
    9. 6.9  pragma 指令
      1. 6.9.1  CALLS Pragma
      2. 6.9.2  CLINK Pragma
      3. 6.9.3  CODE_ALIGN Pragma
      4. 6.9.4  CODE_SECTION Pragma
      5. 6.9.5  DATA_ALIGN Pragma
      6. 6.9.6  DATA_SECTION Pragma
        1. 6.9.6.1 使用 DATA_SECTION Pragma C 源文件
        2. 6.9.6.2 使用 DATA_SECTION Pragma C++ 源文件
        3. 6.9.6.3 使用 DATA_SECTION Pragma 汇编源文件
      7. 6.9.7  诊断消息 Pragma
      8. 6.9.8  FAST_FUNC_CALL Pragma
      9. 6.9.9  FORCEINLINE Pragma
      10. 6.9.10 FORCEINLINE_RECURSIVE Pragma
      11. 6.9.11 FUNC_ALWAYS_INLINE Pragma
      12. 6.9.12 FUNC_CANNOT_INLINE Pragma
      13. 6.9.13 FUNC_EXT_CALLED Pragma
      14. 6.9.14 FUNCTION_OPTIONS Pragma
      15. 6.9.15 INTERRUPT Pragma
      16. 6.9.16 LOCATION Pragma
      17. 6.9.17 MUST_ITERATE Pragma
        1. 6.9.17.1 MUST_ITERATE Pragma 语法
        2. 6.9.17.2 使用 MUST_ITERATE 扩展编译器对循环的了解
      18. 6.9.18 NOINIT 和 PERSISTENT Pragma
      19. 6.9.19 NOINLINE Pragma
      20. 6.9.20 NO_HOOKS Pragma
      21. 6.9.21 once Pragma
      22. 6.9.22 RETAIN Pragma
      23. 6.9.23 SET_CODE_SECTION 和 SET_DATA_SECTION Pragma
      24. 6.9.24 UNROLL Pragma
      25. 6.9.25 WEAK Pragma
    10. 6.10 _Pragma 运算符
    11. 6.11 应用程序二进制接口
    12. 6.12 目标文件符号命名规则(链接名)
    13. 6.13 在 COFF ABI 模式下初始化静态和全局变量
      1. 6.13.1 使用链接器初始化静态和全局变量
      2. 6.13.2 使用常量类型限定符初始化静态和全局变量
    14. 6.14 更改 ANSI/ISO C/C++ 语言模式
      1. 6.14.1 C99 支持 (--c99)
      2. 6.14.2 C11 支持 (--c11)
      3. 6.14.3 严格 ANSI 模式和宽松 ANSI 模式(--strict_ansi 和 --relaxed_ansi)
    15. 6.15 GNU 和 Clang 语言扩展
      1. 6.15.1 扩展
      2. 6.15.2 函数属性
      3. 6.15.3 For 循环属性
      4. 6.15.4 变量属性
      5. 6.15.5 类型属性
      6. 6.15.6 内置函数
      7. 6.15.7 使用字节外设类型属性
    16. 6.16 编译器限制
  9. 运行时环境
    1. 7.1  存储器模型
      1. 7.1.1
      2. 7.1.2 C/C++ 系统堆栈
      3. 7.1.3 将 .econst 分配给程序内存
      4. 7.1.4 动态存储器分配
      5. 7.1.5 变量的初始化
      6. 7.1.6 为静态变量和全局变量分配内存
      7. 7.1.7 字段/结构对齐
      8. 7.1.8 字符串常量
    2. 7.2  寄存器惯例
      1. 7.2.1 TMS320C28x 寄存器的使用和保留
      2. 7.2.2 状态寄存器
    3. 7.3  函数结构和调用惯例
      1. 7.3.1 函数如何进行调用
      2. 7.3.2 被调用函数如何响应
      3. 7.3.3 被调用函数的特殊情况(大帧)
      4. 7.3.4 访问参数和局部变量
      5. 7.3.5 分配帧并访问内存中的 32 位值
    4. 7.4  访问 C 和 C++ 中的链接器符号
    5. 7.5  将 C 和 C++ 与汇编语言相连
      1. 7.5.1 使用汇编语言模块与 C/C++ 代码
      2. 7.5.2 从 C/C++ 访问汇编语言函数
        1. 7.5.2.1 从 C/C++ 程序调用汇编语言函数
        2. 7.5.2.2 由 调用的汇编语言程序
        3.       261
      3. 7.5.3 从 C/C++ 访问汇编语言变量
        1. 7.5.3.1 访问汇编语言全局变量
          1. 7.5.3.1.1 汇编语言变量程序
          2. 7.5.3.1.2 C 程序从 中访问汇编语言
        2.       266
        3. 7.5.3.2 访问汇编语言常量
          1. 7.5.3.2.1 从 C 语言访问汇编语言常量
          2. 7.5.3.2.2 的汇编语言程序
          3.        270
      4. 7.5.4 与汇编源代码共享 C/C++ 头文件
      5. 7.5.5 使用内联汇编语言
    6. 7.6  使用内在函数访问汇编语言语句
      1. 7.6.1 浮点转换内在函数
      2. 7.6.2 浮点单元 (FPU) 内在函数
      3. 7.6.3 三角函数加速器 (TMU) 固有函数
      4. 7.6.4 快速整数除法内在函数
    7. 7.7  中断处理
      1. 7.7.1 有关中断的要点
      2. 7.7.2 使用 C/C++ 中断例程
    8. 7.8  整数表达式分析
      1. 7.8.1 使用运行时支持调用计算的运算
      2. 7.8.2 支持快速整数除法的除法运算
      3. 7.8.3 C/C++ 代码访问 16 位乘法的上 16 位
    9. 7.9  浮点表达式分析
    10. 7.10 系统初始化
      1. 7.10.1 用于系统预初始化的引导挂钩函数
      2. 7.10.2 运行时栈
      3. 7.10.3 COFF 变量的自动初始化
        1. 7.10.3.1 初始化表
        2.       291
        3. 7.10.3.2 在 COFF 运行时自动初始化变量
        4. 7.10.3.3 加载时初始化 COFF 格式的变量
        5. 7.10.3.4 全局构造函数
      4. 7.10.4 EABI 变量的自动初始化
        1. 7.10.4.1 零初始化变量
        2. 7.10.4.2 EABI 的直接初始化
        3. 7.10.4.3 EABI 运行时变量自动初始化
        4. 7.10.4.4 EABI 的自动初始化表
          1. 7.10.4.4.1 数据格式遵循的长度
          2. 7.10.4.4.2 零初始化格式
          3. 7.10.4.4.3 行程编码 (RLE) 格式
          4. 7.10.4.4.4 Lempel-Ziv-Storer-Szymanski 压缩 (LZSS) 格式
        5. 7.10.4.5 在加载时初始化变量
        6. 7.10.4.6 全局构造函数
  10. 使用运行时支持函数并构建库
    1. 8.1 C 和 C++ 运行时支持库
      1. 8.1.1 将代码与对象库链接
      2. 8.1.2 头文件
      3. 8.1.3 修改库函数
      4. 8.1.4 支持字符串处理
      5. 8.1.5 极少支持国际化
      6. 8.1.6 时间和时钟函数支持
      7. 8.1.7 允许打开的文件数量
      8. 8.1.8 库命名规则
    2. 8.2 C I/O 函数
      1. 8.2.1 高级别 I/O 函数
        1. 8.2.1.1 格式化和格式转换缓冲区
      2. 8.2.2 低级 I/O 实现概述
        1.       open
        2.       close
        3.       read
        4.       write
        5.       lseek
        6.       unlink
        7.       rename
      3. 8.2.3 器件驱动程序级别 I/O 函数
        1.       DEV_open
        2.       DEV_close
        3.       DEV_read
        4.       DEV_write
        5.       DEV_lseek
        6.       DEV_unlink
        7.       DEV_rename
      4. 8.2.4 为 C I/O 添加用户定义的器件驱动程序
        1. 8.2.4.1 将默认流映射到器件
      5. 8.2.5 器件前缀
        1.       add_device
        2.       339
        3. 8.2.5.1 为 C I/O 器件编程
    3. 8.3 处理可重入性(_register_lock() 和 _register_unlock() 函数)
    4. 8.4 在热启动期间重新初始化变量
    5. 8.5 库构建流程
      1. 8.5.1 所需的非德州仪器 (TI) 软件
      2. 8.5.2 使用库构建流程
        1. 8.5.2.1 通过链接器自动重建标准库
        2. 8.5.2.2 手动调用 mklib
          1. 8.5.2.2.1 构建标准库
          2. 8.5.2.2.2 共享或只读库目录
          3. 8.5.2.2.3 使用自定义选项构建库
          4. 8.5.2.2.4 mklib 程序选项摘要
      3. 8.5.3 扩展 mklib
        1. 8.5.3.1 底层机制
        2. 8.5.3.2 来自其他供应商的库
  11. C++ 名称还原器
    1. 9.1 调用 C++ 名称还原器
    2. 9.2 C++ 名称还原器的示例用法
  12. 10CLA 编译器
    1. 10.1 如何调用 CLA 编译器
      1. 10.1.1 CLA 特定的选项
    2. 10.2 CLA C 语言实现
      1. 10.2.1 变量和数据类型
      2. 10.2.2 Pragma、关键字和内在函数
      3. 10.2.3 使用 CLA 编译器进行优化
      4. 10.2.4 C 语言限制
      5. 10.2.5 存储器模型 - 相应的段
      6. 10.2.6 函数结构和调用惯例
  13.   A 术语表
    1.     369
  14.   B 修订历史记录
  15.   B 早期修订版本

早期修订版本

下表列出了更改文档编号格式前对此文档做出的改动。左列标识了本文档出现该特定改动的首个版本。

早期修订版本
添加内容的版本 章节 位置 添加/修改/删除
SPRU514T 使用编译器 节 2.3.4 通过使用带有寄存器操作数的 RPT,内联的 memcpy 调用现在支持 255 以上个字。因此,可支持内联最多 65535 个字的 memcpy。但是,使用 --rpt_threshold 指定的最大值仍然是 256。
SPRU514T 使用编译器,
运行时环境
节 2.3.4节 7.6 阐明了 TMU1 支持仅适用于 EABI。
SPRU514T 使用编译器,
CLA 编译器
节 2.3节 10.1.1节 10.2.2 为 CLA 编译器添加了 --cla_signed_compare_workaround 选项。为 CLA 编译器添加了比较内在函数。
SPRU514T 链接 节 4.3.5 阐明了如果只有链接器在运行,则需要 --rom_model 或 --ram_model,但如果编译器在同一命令行中的 C/C++ 文件上运行,则 --rom_model 是默认选项。
SPRU514T C/C++ 语言 节 6.9.21 #pragma once 现记录在头文件中使用。
SPRU514T C/C++ 语言 节 6.15.4节 10.2.1节 10.2.4 链接器现在提供有关阻止 CLA 和 C28 代码之间访问和交互的某些问题的诊断信息。
SPRU514T 运行时环境 节 7.6.3 更正了与 __atan、__cos 和 __sin TMU 内在函数等效的汇编指令。
SPRU514T 运行时环境 节 7.6.4 阐明了快速整数除法需要 EABI 和 FPU32 或 FPU64。更改了将 64 位值除以 32 位值的快速整数除法内在函数返回的类型。此外,优化了由这些内在函数执行的汇编。
SPRU514T 运行时环境 节 7.10.4.1 阐明了只有在使用 --rom_model 链接器选项时,才发生零初始化,使用 --ram_model 选项时则不发生。
SPRU514S -- 全文 -- 更改了由编译器创建的目标文件的默认文件扩展名,以防止在 C 和 C++ 文件具有相同名称时发生冲突。从 C 源文件生成的目标文件具有 .c.obj 扩展名。从 C++ 源文件生成的目标文件具有 .cpp.obj 扩展名。
SPRU514S 使用编译器,
优化
节 2.3节 3.14 添加了 --isr_save_vcu_regs 编译器选项。
SPRU514S CLA 编译器 节 10.2.1节 10.2.4 添加了有关 CLA 和 C28x 代码共享变量的声明以及 C28x 和 CLA 代码之间的函数调用的信息。
SPRU514R.1 使用编译器,
运行时环境
节 2.3.4节 7.6.4节 7.8.2 添加了有关内置整数除法和模运算符(/ 和 %)以及内在函数的快速整数除法的信息。
SPRU514R.1 运行时环境 节 7.1.7 Clarify bit-field alignment rules.
SPRU514R.1 运行时环境 节 7.6.2 添加了特定于 FPU64 的内在函数以及有关 FPU64 的 COFF 与 EABI 使用的信息。
SPRU514R.1 CLA 编译器 节 10.2 阐明了对整数型使用的建议。
SPRU514R -- 全文 -- 添加了有关 EABI 支持的更多文档。其中包括标记仅支持 COFF 或 EABI 的功能。在必要时将示例标记为 COFF 特定示例。
SPRU514R 使用编译器 节 2.3 添加了 EABI 的命令行选项,包括 --cinit_compression、--copy_compression、--extern_c_can_throw、--retain、--unused_section_elimination 和 --zero_init。
SPRU514R 使用编译器 节 2.3.1 添加了 --emit_references:file 链接器选项。
SPRU514R 使用编译器 节 2.3.4 添加了 --silicon_errata_fpu1_workaround 选项。
SPRU514R 使用编译器 节 2.5.1 记录了支持 C 标准宏命令,例如 __STDC_VERSION__。
SPRU514R 使用编译器 节 2.11.1 添加了有关可能未内联内在函数的情况的信息。
SPRU514R 使用编译器,
C/C++ 语言
节 2.13节 6.11 添加了有关受支持的应用二进制接口 (ABI) 的信息。
SPRU514R 链接 C/C++ 代码,
运行时环境
节 4.3.6节 7.1.1 添加了 EABI 特定段,例如 .bss、.const、.sysmem 和 .init_array。还添加了 .args、.ppdata 和 .ppinfo 段。
SPRU514R C/C++ 语言 节 6.3 添加了有关 double 和 wchar_t 数据类型的 EABI 特定信息。
SPRU514R C/C++ 语言 节 6.9 添加了 LOCATION、NOINIT、PERSISTENT 和 WEAK pragma。
SPRU514R C/C++ 语言 节 6.12 添加了有关命名空间的 EABI 特定信息。
SPRU514R C/C++ 语言 节 6.14.1 更新了 C99 不受支持的运行时函数列表。
SPRU514R C/C++ 语言 节 6.15.2 添加了 aligned、calls、naked 和 weak 函数属性的文档。
SPRU514R C/C++ 语言 节 6.15.4 添加了 location、noinit、persistent 和 weak 变量属性的文档。
SPRU514R 运行时环境 节 7.2.1 添加了 FPU64 寄存器。
SPRU514R 运行时环境 节 7.6 更正了对由 TMU 内在函数(例如 __sin() 和 __cos())返回的值的描述。
SPRU514R 运行时环境 节 7.10.4 添加了有关 EABI 变量自动初始化的信息。
SPRU514R 运行时支持函数 节 8.1.8 添加了特定于 EABI 的运行时库命名规则。
SPRU514R 运行时支持函数 DEV_lseek 主题 更正了 DEV_lseek 函数的语法记录。
SPRU514Q 简介,
使用编译器,
C/C++ 语言
节 1.3节 2.3节 6.1节 6.14.2 添加了对 C11 的支持。
SPRU514Q 使用编译器 节 2.3.4 添加了对 EABI 的支持。COFF ABI 是默认值。
SPRU514Q 使用编译器 节 2.3.1 添加了 --ecc=on 链接器选项,支持生成 ECC。请注意,ECC 生成功能现在默认关闭。
SPRU514Q 使用编译器 节 2.3.4节 7.6 通过 --float_support=fpu64 添加了对 64 类 FPU 的支持。
SPRU514Q 使用编译器,
运行时环境
节 2.3.4节 7.6 通过 --idiv_support 添加了对快速整数除法的支持。
SPRU514Q 使用编译器,
C/C++ 语言
节 2.3.4节 7.6 通过 --tmu_support=tmu1 添加了对 TMU 的进一步支持。
SPRU514Q 使用编译器 节 2.3.4 通过 --vcu_support=vcrc 添加了对循环冗余校验的支持。
SPRU514Q 使用编译器 节 2.5.1 __TI_STRICT_ANSI_MODE__ 和 __TI_STRICT_FP_MODE__ 宏命令定义为在条件为 false 时为 0。
SPRU514Q 使用编译器,
C/C++ 语言
节 2.11节 6.9 修订了有关内联函数扩展的段及子段,以包括新的 pragma 并更改了编译器关于内联哪些函数的决策。添加了 FORCEINLINE、FORCEINLINE_RECURSIVE 和 NOINLINE pragma。
SPRU514Q 优化,
C/C++ 语言
节 3.11节 6.15.4 添加了 blocked 和 noblocked 属性以实现更好的数据页 (DP) 指针加载优化。不再推荐使用 --disable_dp_load_opt 选项。
SPRU514Q C/C++ 语言 节 6.2 从例外列表中删除了几个 C++ 功能,因为有多个版本已支持这些功能。
SPRU514Q C/C++ 语言 节 6.3.3节 7.6 添加了将 32 位浮点值声明为 float 而不是 double 的建议。(两者目前都是 32 位。)修改了内在函数语法描述以对 32 位值使用"float"。
SPRU514Q C/C++ 语言 节 6.4 添加了有关字符集和文件编码的信息。
SPRU514Q C/C++ 语言 节 6.15.2节 6.15.4 添加了 "retain" 作为函数属性和变量属性。
SPRU514Q C/C++ 语言 节 6.15.6 阐明了 __builtin_sqrt() 和 __builtin_sqrtf() 函数的可用性。
SPRU514Q CLA 编译器 节 10.2 更正了 __mswapf 内在函数的语法。
SPRU514P C/C++ 语言 节 6.15 编译器现在支持多个 Clang __has_ 宏命令扩展。
SPRU514P C/C++ 语言 节 6.15.1 现在支持包装器头文件 GCC 扩展 (#include_next)。
SPRU514O C/C++ 语言 节 6.5.1 阐明了由常量关键字设置的常量数据存储的例外情况。
SPRU514N 优化 节 3.7.1.4 更正了处理配置文件数据的命令中的错误。
SPRU514M 使用编译器
C/C++ 语言和
CLA 编译器
节 2.3节 2.3.4节 2.5.1节 6.9.15节 10.2 记录了对 CLA 版本 2 和 CLA v2 背景任务的支持。
SPRU514M 使用编译器,
C/C++ 语言
节 2.3.3 修改为指明:即使使用 CHECK_MISRA pragma 也需要 --check_misra 选项。
SPRU514M 使用编译器 节 2.3.5 删除了不再受支持的 --symdebug:coff 选项。
SPRU514M 使用编译器 节 2.10 更正了文档以描述 ---gen_preprocessor_listing 选项。名称 --gen_parser_listing 不正确。
SPRU514M 优化 节 3.11 提供了有关数据页分块的信息。
SPRU514L 优化 节 3.7.3 更正了 _TI_start_pprof_collection() 和 _TI_stop_pprof_collection() 的函数名称。
SPRU514L CLA 编译器 节 10.2 提供了有关 __msetflg 内在函数的附加信息和示例。
SPRU514K 使用编译器 -- 几个编译器选项已被弃用、删除或重命名。编译器仍然接受一些已弃用的选项,但不建议使用它们。
SPRU514J 使用编译器 节 2.3节 4.2.2 添加了 --gen_data_subsections 选项。
SPRU514J 使用编译器 节 2.3.5 添加了 --symdebug:dwarf_version 编译器选项。此选项设置使用的 DWARF 调试格式版本。
SPRU514J 优化 节 3.7节 3.8 描述了反馈导向优化。该技术可用于代码覆盖分析。
SPRU514J C/C++ 语言 节 6.9.1 添加了 CALLS pragma 以指定一组可从指定调用函数间接调用的函数。使用此 pragma 能够将此类间接调用包含在函数的 inclusive 栈大小的计算中。
SPRU514J C/C++ 语言 节 6.15.7 添加了一个 byte_peripheral 类型属性和一个内在函数来访问字节外围数据。
SPRU514J 运行时环境 节 7.6 添加了内在函数以执行无符号整数除法。新的内在函数是 __euclidean_div_i32byu32()、__rpt_subcul() 和 __subcul()。
SPRU514J 运行时环境 节 7.10.1 提供了额外的引导挂钩函数。这些可以定制以在系统初始化期间使用。
SPRU514I 使用编译器 表 2-7 添加了 --cla_default 选项。此选项会使扩展名为 .c 的文件作为 CLA 文件被处理。
SPRU514I 使用编译器 节 2.3.4 添加了 --ramfunc 选项。如果设置此选项,则将所有函数放在 RAM 中。
SPRU514I 使用编译器 -- 弃用了 --no_fast_branch 选项。
SPRU514I C/C++ 语言 节 6.14.1 现在支持 C99 数学函数,包括浮点数学函数的 float 和 long double 版本。
SPRU514I C/C++ 语言 节 6.15.2 添加了 ramfunc 函数属性。它规定了一个函数应该放置在 RAM 中。
SPRU514I 运行时环境 节 7.3.2 在寄存器列表中添加了 XAR6 并更正了放置返回结构地址的位置。
SPRU514I 运行时环境 节 7.6 添加了 __eallow 和 __edis 内在函数。
SPRU514I CLA 编译器 节 10.2.4 CLA 编译器现在支持大多数 GCC 扩展。
SPRU514H 引言 节 1.3 添加了对 C99 和 C++03 的支持。
SPRU514H 使用编译器 表 2-7 添加了对 C99 和 C++03 的支持。弃用了 -gcc 选项。--relaxed_ansi 现在是默认选项。
SPRU514H 使用编译器 节 2.3.3 添加了 --advice:performance 选项。
SPRU514H 使用编译器 节 2.3.4 不再支持 --silicon_version=27 选项。
SPRU514G 使用编译器 节 2.3.4 添加了 --tmu_support=tmu0 选项。此选项还会影响 --float_support 和 --fp_mode=relaxed 选项的行为。
SPRU514G 使用编译器 节 2.3.4 通过 --cla_support=cla1 添加了对 1 类 CLA 的支持。
SPRU514G 使用编译器 节 2.3.4 通过 --vcu_support=vcu2 添加了对 2 类 VCU 的支持。
SPRU514H 使用编译器 节 2.3.11 添加了有关 --flash_prefetch_warn 选项的信息。
SPRU514H 使用编译器 节 2.5.1 添加了几个未记录的预定义宏名称。
SPRU514H 使用编译器 节 2.5.3 记录了对 #warning 和 #warn 预处理器指令的支持。
SPRU514H 使用编译器 节 2.6 添加了有关向 main() 传递参数的技术的段。
SPRU514H 使用编译器 节 2.11 记录了 inline 关键字现在在除 C89 严格 ANSI 模式之外的所有模式中都启用。
SPRU514H C/C++ 语言 节 6.3 C28x 上指针类型的大小现在是 32 位而不是 22 位。弃用了 near 和 far 关键字。不再支持小型存储器型号;唯一的存储器型号使用 32 位指针。不再使用 .bss、.const, 和 .sysmem 段;使用 .ebss、.econst 和 .esysmem 段。(出于性能原因,假设符号地址小于 22 位。)
SPRU514H C/C++ 语言 节 6.1.1 添加了记录实现定义行为的段。
SPRU514H C/C++ 语言 节 6.3.1 添加了有关枚举类型大小的文档。
SPRU514H C/C++ 语言 节 6.9.15节 6.9.22节 6.15.2 为 INTERRUPT 和 RETAIN pragma 添加了 C++ 语法。还从 #pragma 语法规范中删除了不必要的分号。现在还支持 GCC 中断和别名函数属性。
SPRU514H C/C++ 语言 节 6.9.11节 6.9.12 添加了 FUNC_ALWAYS_INLINE 和 FUNC_CANNOT_INLINE pragma。
SPRU514H C/C++ 语言 节 6.9.7 添加了 diag_push 和 diag_pop 诊断消息 pragma。
SPRU514H C/C++ 语言 节 6.14节 6.14.1节 6.14.3 添加了对 C99 和 C++03 的支持。--relaxed_ansi 现在是默认选项,--strict_ansi 是另一个选项;标准违反严格性的“正常模式”不再可用。
SPRU514H 运行时环境 节 7.4 添加了对汇编语言工具用户指南中有关在 C 和 C++ 语言中访问链接器符号一节的引用。
SPRU514G 运行时环境 表 7-6表 7-8 添加了用于 TMU 指令以及使用放置在高于通常的 22 位地址范围的数据的 32 位地址读取和写入存储器的内在函数。
SPRU514H 运行时支持函数 节 8.1.3 rtssrc.zip 文件中不再提供 RTS 源代码。相反,它位于编译器安装程序 lib/src 子目录内的单独文件中。
SPRU514H C++ 名称还原器 节 9.1 更正了有关名称还原器选项的信息。
SPRU514H CLA 编译器 节 10.1 CLA 代码现在支持非递归函数调用和两个以上的函数参数。简化了 CLA 暂存区管理;不再需要在链接器命令文件中指定暂存区的大小。编译器现在支持 CLA 中断的中断属性和 INTERRUPT pragma。