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参考资料

CSC — 链接器文件 (Bootloader.cmd)

--define=_BOOT_SIZE_=(8*1024)

MEMORY
{
    FLASH_BOOT      (RX)  : origin = 0x00000000,  length = _BOOT_SIZE_
    FLASH_APP       (RX)  : origin = _BOOT_SIZE_, length = (0x00040000 - _BOOT_SIZE_)
}

SECTIONS
{
    .intvecs      : > 0x00000000
    .text         : palign(8) {} > FLASH_BOOT
    .const        : palign(8) {} > FLASH_BOOT
    .cinit        : palign(8) {} > FLASH_BOOT
    .pinit        : palign(8) {} > FLASH_BOOT
    .rodata       : palign(8) {} > FLASH_BOOT
    .ARM.exidx    : palign(8) {} > FLASH_BOOT
    .init_array   : palign(8) {} > FLASH_BOOT
    .binit        : palign(8) {} > FLASH_BOOT
}

CSC 边界设置为 8,192 字节 (0x0000 ~ 0x2000)。由于 Arm Cortex-M0+ VTOR(矢量表偏移寄存器)对齐要求为 0x100,并且闪存擦除扇区大小为 1kB (0x400),因此用户必须将边界按 0x400 对齐。