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修订历史记录

运行示例

主机项目将两个不同的映像发送到目标器件,并使用按钮进行用户交互。在两个 LaunchPad 开发套件上都不需要以 USB 连接到计算机即可运行演示;但是,每个套件都应通过 eZ-FET 由 USB 连接供电,或通过连接到 VCC 和 GND 引脚的稳定 3.3V 外部电源供电(在这种情况下,请确保 eZ-FET 断开连接)。无论使用哪种通信类型或映像模型,都将按照以下步骤运行演示:

  1. 节 4.2.3所述构建并下载 MSPBoot,并构建 App1 和 App2。
  2. 根据节 4.1.2.1转换 App1 和 App2。
  3. 节 4.2.4所述构建并下载主机应用程序。
  4. 根据所需的通信类型(I2C、UART 或带有 CC110x 的 SPI)连接电路板。
    1. 每个主机项目都在代码的开头包含一个注释图表,其中描述了正确的连接。
  5. 在两个器件中重置并执行代码。
  6. 要进入目标引导加载程序模式(LED1 和 LED2 都保持亮起状态即表示处于该模式),请执行以下步骤:
    1. 如果目标没有有效的应用程序(默认),则目标将保持在引导加载程序模式下。
    2. 在硬件中,通过按住目标器件上的 S2 按钮,同时按住再释放复位按钮,即可强制进入引导加载程序模式。
    3. 如果是运行一个应用程序:
      1. 在目标器件上按 S2 按钮时,APP1 跳转到引导加载程序模式。
      2. 当收到“强制引导”命令时(仅在共享 CI PHY-DL 时才受支持),APP2 会跳转到引导加载程序模式。
  7. 按下主机板上的 S2 按钮。主机器件执行以下命令序列:
    1. 两次切换 LED1。
    2. 发送“强制引导”命令 (0xAA)。
      1. 如果目标器件已经处于引导加载程序模式,则会丢弃数据包,因为 CRC 不正确。
      2. 如果目标正在运行 APP2,则目标器件将进入引导加载程序模式。
    3. 请求引导加载程序版本(发送 TX_VERSION 命令)。
      1. 如果目标响应为 0xA1(符合 BSL 协议预期),则主机继续。
      2. 如果目标响应是任何其他值,则主机将中止事务。
    4. 擦除目标应用程序区域(发送 ERASE_APP 命令)。
    5. 发送 APP1(使用 RX_DATA_BLOCK 命令)。
    6. 设定 APP1 的 CRC(使用 RX_DATA_BLOCK 命令)。
    7. 强制目标应用程序运行(发送 JUMP2APP 命令)。
    8. 两次切换 LED1 表示传输成功,而保持 LED1 亮起表明主机已准备好发送 APP2。
  8. 传输完成后,目标开始运行 APP1。
    1. 目标器件使 LED1 闪烁。
    2. LED1 会使用计时器定期闪烁。
    3. 按下目标板上的 S2 按钮进入引导加载程序模式。
  9. 在目标处于引导加载程序模式下时,按下主机板上的 S2 按钮以发送 APP2。完成切换后,主机板的 LED1 保持熄灭,表明 APP1 已准备好发送。
  10. 传输完成后,目标开始运行 APP2。
    1. 目标器件使 LED2 闪烁。
    2. 按下目标板上的 S2 按钮以切换 LED2。
    3. 由于 CI 已初始化,因此主机可以在新的传输序列开始时发送“强制引导”命令以在目标器件中强制进入引导加载程序模式。
  11. 按下主机上的 S2 按钮以重新开始发送 APP1 的新序列。

    双映像模式在传输完成后会在主机中暂停一小段时间,同时还会验证下载区域,将存储器转移到应用程序空间中,并在通过 CRC-CCITT 检查来验证了应用程序区域后擦除下载区域。