ZHDA045 January   2026 MSPM0G1518 , MSPM0G1519 , MSPM0G3518 , MSPM0G3519

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2详细说明
    1. 2.1 概述
      1. 2.1.1 实时固件更新流程
      2. 2.1.2 内存组织
    2. 2.2 方框图
    3. 2.3 代码
      1. 2.3.1 CSC(客户安全代码,Bankswap_CSC_G3519_v2)
        1. 2.3.1.1 CSC — 主函数 (Bankswap_CSC_G3519_v2.c)
        2. 2.3.1.2 CSC — 链接器文件 (Bootloader.cmd)
      2. 2.3.2 应用 (Bankswap_G3519_gpio_output_toggle_v2_SW_Version55_CRC32)
        1. 2.3.2.1 应用程序 — 主函数 (Bankswap_G3519_gpio_output_toggle_v2_SW_Version55_CRC32.c)
        2. 2.3.2.2 应用程序 – UART ISR (Bankswap_G3519_gpio_output_toggle_v2_SW_Version55_CRC32.c)
        3. 2.3.2.3 应用程序 — 链接器文件 (device_linker.cmd)
    4. 2.4 实现
      1. 2.4.1 实现概述
      2. 2.4.2 实现流程
        1. 2.4.2.1 导入 CCS 项目文件 (TI CCS IDE)
        2. 2.4.2.2 执行 MCU 恢复出厂设置 (TI CCS IDE)
        3. 2.4.2.3 在 CCS 中构建 CSC、应用程序 (TI CCS IDE)
        4. 2.4.2.4 在 CCS 中启动调试并将映像下载到 MCU 中 (TI CCS IDE)
        5. 2.4.2.5 生成要发送的数据帧 (uart_frame_gui.exe)
        6. 2.4.2.6 在电脑上通过 UART 发送新固件 (Tera Term)
        7. 2.4.2.7 检查更新的固件 (TI CCS IDE)
  6. 3总结
  7. 4参考资料

应用程序 — 链接器文件 (device_linker.cmd)

--define=_BOOT_SIZE_=(8*1024)
--define=_VERSION_SIZE_=(256)
--define=_TOTAL_SIZE_=(8*1024+256)

MEMORY
{
    BOOT			(RX)  : origin = 0x00000000,  length = _BOOT_SIZE_
    FLASH_VERSION   (RWX) : origin = _BOOT_SIZE_,  length = _VERSION_SIZE_
    FLASH           (RX)  : origin = _BOOT_SIZE_ + _VERSION_SIZE_, length = 0x00040000 - _BOOT_SIZE_ - _VERSION_SIZE_
    SRAM_BANK0      (RWX) : origin = 0x20200000,  length = 0x00010000
    SRAM_BANK1      (RWX) : origin = 0x20210000,  length = 0x00010000
    BCR_CONFIG      (R)   : origin = 0x41C00000,  length = 0x000000FF
    BSL_CONFIG      (R)   : origin = 0x41C00100,  length = 0x00000080
    DATA            (R)   : origin = 0x41D00000,  length = 0x00004000
}
SECTIONS
{
    .version_info : palign(8) {} > FLASH_VERSION
    .intvecs:   > _TOTAL_SIZE_
    .text   : palign(8) {} > FLASH
    .const  : palign(8) {} > FLASH
    .cinit  : palign(8) {} > FLASH
    .pinit  : palign(8) {} > FLASH
    .rodata : palign(8) {} > FLASH
    .ARM.exidx    : palign(8) {} > FLASH
    .init_array   : palign(8) {} > FLASH
    .binit        : palign(8) {} > FLASH
}

应用程序区域紧跟在 CSC 之后,从 0x0000.2000 地址开始。

在应用程序区域的起始位置,版本信息 (.version_info) 以 uint32_t 格式存储,只需 4 个字节。但是,由于 Arm Cortex-M0+ VTOR(矢量表偏移寄存器)对齐要求为 0x100(256 字节),因此版本信息段被分配 0x100(256 字节)。

闪存存储器容量因 MCU 型号而异。因此,用户必须为其具体器件配置适当的存储器边界。本示例基于具有 256kB 闪存的 MSPM0G3519。