ZHCAA00E June   2013  – January 2024

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 术语表
    2. 1.2 约定
  5. 2执行
    1. 2.1 主例程
    2. 2.2 应用程序管理器
      1. 2.2.1 引导和应用程序检测
        1. 2.2.1.1 强制使用引导加载程序模式
        2. 2.2.1.2 应用程序验证
        3. 2.2.1.3 跳转到应用程序
      2. 2.2.2 矢量重定向
      3. 2.2.3 闪存器件中的中断矢量
      4. 2.2.4 双映像支持
        1. 2.2.4.1 在双映像模式下跳转到应用程序
    3. 2.3 存储器接口 (MI)
      1. 2.3.1 双映像支持
    4. 2.4 通信接口 (CI)
      1. 2.4.1 Physical-DataLink (PHY-DL)
        1. 2.4.1.1 I2C
          1. 2.4.1.1.1 超时检测
        2. 2.4.1.2 UART
        3. 2.4.1.3 SPI
        4. 2.4.1.4 CC110x
        5. 2.4.1.5 通信共享
      2. 2.4.2 NWK-APP
        1. 2.4.2.1 基于 BSL 的协议
          1. 2.4.2.1.1 安全性
          2. 2.4.2.1.2 使用 CC110x 的基于 BSL 的协议
          3. 2.4.2.1.3 采用 I2C 的示例
          4. 2.4.2.1.4 采用 UART 或 CC110x 的示例
  6. 3定制 MSPBoot
    1. 3.1 预定义的定制
  7. 4构建 MSPBoot
    1. 4.1 启动新工程
      1. 4.1.1 创建新的 MSPBoot 工程
        1. 4.1.1.1 MSPBootProjectCreator.pl
        2. 4.1.1.2 在 CCS 中导入工程规范文件
        3. 4.1.1.3 修改生成的源代码
          1. 4.1.1.3.1 修改 MSPBoot Main.c
          2. 4.1.1.3.2 修改 TI_MSPBoot_Config.h
          3. 4.1.1.3.3 修改 TI_MSPBoot_CI_PHYDL_xxxx_xxx.c
          4. 4.1.1.3.4 修改 TI_MSPBoot_AppMgr.c
          5. 4.1.1.3.5 修改 Application Main.c
          6. 4.1.1.3.6 修改 TI_MSPBoot_Mgr_Vectors_xxxx.c
      2. 4.1.2 使用 MSPBoot 加载应用程序代码
        1. 4.1.2.1 转换应用程序输出映像
    2. 4.2 示例
      1. 4.2.1 LaunchPad 开发套件硬件
      2. 4.2.2 CC110x 硬件
      3. 4.2.3 构建目标工程
      4. 4.2.4 构建主机工程
      5. 4.2.5 运行示例
  8. 5参考文献
  9. 6修订历史记录

闪存器件中的中断矢量

闪存擦除的最小大小为一个段,在 MSP430 MCU 中为 512 字节。考虑到这一点,应保护整个中断表不被擦除。为了在应用程序级别允许中断,我们实现了一种软件矢量重定向方法来修复默认矢量表的内容并指向存储在应用程序空间中的代理表。

图 2-5 显示了此实现背后的概念:

GUID-82160F01-BEE6-4AEB-B93B-C75D5E71B357-low.gif图 2-5 矢量重定向实现
  1. 应用程序收到一个中断请求,当前地址将压入堆栈,然后 CPU 从矢量表中获取地址。
  2. 矢量表包含每个中断的代理位置的地址。CPU 获取代理表中相应条目的地址并跳转到该地址。
  3. 代理表包含分支指令 (BRA),后跟每个 ISR 的实际地址。CPU 执行 BRA 指令,并跳转到相应的应用程序矢量 ISR。
  4. ISR 完成后将执行 RETI 指令,并从堆栈中弹出前一个地址。

此过程对于应用程序的实现几乎是透明的,但是必须注意,由于从代理表到应用程序 ISR 的额外跳转,延迟会增加。

示例代码中包含了演示如何实现中断的应用示例以演示此功能。

请注意,某些 MSP430 MCU 支持将矢量重定向到硬件中的 RAM (SYSRIVECT),这对于具有足够 RAM 的器件而言可能是一个很好的选择。