ZHCUCH3A November   2024  – March 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   使用前必读
    1.     关于本手册
    2.     德州仪器 (TI) 相关文档
    3.     术语表
    4.     支持资源
    5.     商标
  3. 1架构概述
    1. 1.1 CPU 简介
    2. 1.2 数据类型
    3. 1.3 C29x CPU 系统架构
      1. 1.3.1 仿真逻辑
      2. 1.3.2 CPU 接口总线
    4. 1.4 存储器映射
  4. 2中央处理单元 (CPU)
    1. 2.1 C29x CPU 架构
      1. 2.1.1 特性
      2. 2.1.2 方框图
    2. 2.2 CPU 寄存器
      1. 2.2.1 寻址寄存器 (Ax/XAx)
      2. 2.2.2 定点寄存器 (Dx/XDx)
      3. 2.2.3 浮点寄存器 (Mx/XMx)
      4. 2.2.4 程序计数器 (PC)
      5. 2.2.5 返回程序计数器 (RPC)
      6. 2.2.6 状态寄存器
        1. 2.2.6.1 中断状态寄存器 (ISTS)
        2. 2.2.6.2 解码阶段状态寄存器 (DSTS)
        3. 2.2.6.3 执行阶段状态寄存器 (ESTS)
    3. 2.3 指令打包
      1. 2.3.1 独立指令和限制
      2. 2.3.2 指令超时
    4. 2.4
      1. 2.4.1 软件栈
      2. 2.4.2 受保护的调用栈
      3. 2.4.3 实时中断/NMI 栈
  5. 3中断
    1. 3.1 CPU 中断架构方框图
    2. 3.2 RESET、NMI、RTINT 和 INT
      1. 3.2.1 RESET(CPU 复位)
        1. 3.2.1.1 所需指令 (RESET)
      2. 3.2.2 NMI(不可屏蔽中断)
        1. 3.2.2.1 阻止和屏蔽 (NMI)
        2. 3.2.2.2 信号传播 (NMI)
        3. 3.2.2.3 栈 (NMI)
        4. 3.2.2.4 所需指令(NMI)
      3. 3.2.3 RTINT(实时中断)
        1. 3.2.3.1 阻止和屏蔽 (RTINT)
        2. 3.2.3.2 信号传播 (RTINT)
        3. 3.2.3.3 栈 (RTINT)
        4. 3.2.3.4 所需指令 (RTINT)
      4. 3.2.4 INT(低优先级中断)
        1. 3.2.4.1 阻止和屏蔽 (INT)
        2. 3.2.4.2 信号传播 (INT)
        3. 3.2.4.3 堆栈 (INT)
    3. 3.3 阻止中断的条件
      1. 3.3.1 ATOMIC 计数器
    4. 3.4 CPU 中断控制寄存器
      1. 3.4.1 中断状态寄存器 (ISTS)
      2. 3.4.2 解码阶段状态寄存器 (DSTS)
      3. 3.4.3 与中断相关的栈寄存器
    5. 3.5 中断嵌套
      1. 3.5.1 中断嵌套示例图
    6. 3.6 安全性
      1. 3.6.1 概述
      2. 3.6.2 链接
      3. 3.6.3
      4. 3.6.4 区域
  6. 4寻址模式
    1. 4.1 寻址模式概述
      1. 4.1.1 文档和实施
      2. 4.1.2 寻址模式类型列表
        1. 4.1.2.1 其他寻址类型
      3. 4.1.3 寻址模式汇总
    2. 4.2 寻址模式字段
      1. 4.2.1 ADDR1 字段
      2. 4.2.2 ADDR2 字段
      3. 4.2.3 ADDR3 字段
      4. 4.2.4 DIRM 字段
      5. 4.2.5 其他字段
    3. 4.3 对齐和流水线注意事项
      1. 4.3.1 对齐
      2. 4.3.2 流水线注意事项
    4. 4.4 寻址模式类型
      1. 4.4.1 直接寻址
      2. 4.4.2 指针寻址
        1. 4.4.2.1 具有 #Immediate 偏移的指针寻址
        2. 4.4.2.2 具有指针偏移的指针寻址
        3. 4.4.2.3 具有 #Immediate 递增/递减的指针寻址
        4. 4.4.2.4 具有指针递增/递减的指针寻址
      3. 4.4.3 栈寻址
        1. 4.4.3.1 分配和取消分配栈空间
      4. 4.4.4 循环寻址指令
      5. 4.4.5 位反向寻址指令
  7. 5功能安全和信息安全单元 (SSU)
    1. 5.1 SSU 概述
    2. 5.2 链接和任务隔离
    3. 5.3 在任务隔离边界之外共享数据
    4. 5.4 受保护的调用和返回
  8. 6仿真
    1. 6.1 仿真功能概述
    2. 6.2 调试术语
    3. 6.3 调试接口
    4. 6.4 执行控制模式
    5. 6.5 断点、观察点和计数器
      1. 6.5.1 软件断点
      2. 6.5.2 硬件调试资源
        1. 6.5.2.1 硬件断点
        2. 6.5.2.2 硬件观察点
        3. 6.5.2.3 基准计数器
      3. 6.5.3 PC 跟踪
  9. 7修订历史记录

受保护的调用栈

受保护调用栈是一种专用硬件栈,用于进行受保护的函数调用和返回。这个栈直接由 CPU 控制并且用户代码无法访问。C29x CPU 的基本保护概念基于链接、栈和区域。受保护的函数调用和返回是通过当前执行代码向位于不同栈中的另一个函数进行函数调用的方法。C29x 安全架构允许使用指令 ENTRY1.PROT 和 ENTRY2.PROT 来定义合法可调用函数标签。这可确保另一个栈中的代码只能调用或跳转到包含指令包“ENTRY1.PROT || ENTRY2.PROT”的标签。这可以防止恶意代码在没有许可的情况下随机进入代码区域。允许的受保护调用嵌套最多可达到受保护调用栈支持的级别数。表 2-8 展示了跨栈的代码执行规则。

受保护的调用栈指针 (PSP) 寄存器:PSP 寄存器跟踪受保护调用栈的使用情况并显示受保护调用栈指针的当前值。在进行受保护调用 (CALL.PROT) 和受保护返回 (RET.PROT) 时,此寄存器会由硬件自动递增和递减。

受保护调用栈指针 (WARNPSP) 寄存器的警告级别:此 WARNPSP 是一个用户可配置的寄存器,可以针对受保护的栈溢出检测发出预警。当 PSP 寄存器 >= WARNPSP 寄存器时,向 ESM 生成错误信号。

受保护的最大调用栈指针 (MAXPSP) 寄存器:MAXPSP 寄存器不是用户可配置的寄存器。当 PSP 寄存器 = MAXPSP 寄存器时,CPU 在受保护的调用栈已满时进入故障状态。

表 2-8 跨栈的代码执行规则
程序流操作 注释和 CPU 操作
线性代码在同一链接中执行 任何限制条件下允许
在同一链接中执行分支、调用和返回
跨不同链接的分支、调用和返回,但在同一栈内执行
受保护函数返回 (RET.PROT),其中返回地址位于不同于当前栈的栈上
源和目标位于同一栈上的受保护函数调用 (CALL.PROT @label/Ax)
受保护函数返回 (RET.PROT),其中返回地址位于同一栈上
线性代码执行跨链接但位于同一栈内 不允许,CPU 进入故障状态。
源和目标位于不同栈上的分支
源和目标位于不同栈上的函数调用 (CALL{D} @label/Ax)
执行函数返回指令 (RET{D} /RET{D} <addr1>),其中返回地址位于不同于当前栈的栈上
实时中断 (RTINT) 和 NMI 这在硬件中进行处理,无需在用户代码中考虑任何因素。中断服务例程可以驻留在同一个或不同的链接/栈/区域中。
中断 (INT) ISR 必须位于同一栈上。否则,CPU 进入故障状态。