ZHCAEX1 January   2025 MSPM0G1518 , MSPM0G1519 , MSPM0G3518 , MSPM0G3519 , MSPM0L1227 , MSPM0L1228 , MSPM0L2227 , MSPM0L2228

 

  1.   1
  2.   摘要
  3.   商标
  4. 1非易失性存储器 (NVM) 基本介绍
    1. 1.1 闪存保护
  5. 2客户安全代码 (CSC) 简介
    1. 2.1 客户安全代码 (CSC) 执行概述
    2. 2.2 CSC 内存映射
    3. 2.3 客户安全代码 (CSC) 执行程序
  6. 3存储体交换示例实现
    1. 3.1 客户安全代码项目准备
      1. 3.1.1 在 NONMAIN 中启用客户安全代码 (CSC)
      2. 3.1.2 客户安全代码应用代码的实现:存储提及交换功能
    2. 3.2 应用代码项目准备
  7. 4常见用例介绍
  8. 5DATA 存储体简介
    1. 5.1 数据存储体保护
    2. 5.2 DATA 存储体擦除写入操作
  9. 6总结
  10. 7参考资料

应用代码项目准备

在此过程中,唯一需要做的是在链接器文件中配置闪存存储器的布局。这样做是为了避免在同一存储体内,应用代码和客户安全代码重叠。请注意,根据客户安全代码政策,两个存储体上的应用代码必须从同一地址开始。以下示例展示了如何为应用代码配置链接器文件。

-uinterruptVectors
--stack_size=256
--define=_CSC_SIZE_=(6*1024)

/* Note: SRAM is partitioned into two separate sections SRAM_BANK0 and SRAM_BANK1
 * to account for SRAM_BANK1 being wiped out upon the device entering any low-power
 * mode stronger than SLEEP. Thus, this is up to the end-user to enable SRAM_BANK1 for
 * applications where the memory is considered lost outside of RUN and SLEEP Modes.
 */

MEMORY
{
    FLASH_APP       (RX)  : origin = _CSC_SIZE_, length = (0x00040000 - _CSC_SIZE_)
    SRAM_BANK0      (RWX) : origin = 0x20200000, length = 0x00010000
    SRAM_BANK1      (RWX) : origin = 0x20210000, length = 0x00010000
    DATA            (R)   : origin = 0x41D00000, length = 0x00004000
}

SECTIONS
{
    .intvecs:   > _CSC_SIZE_
    .text   : palign(8) {} > FLASH_APP
    .const  : palign(8) {} > FLASH_APP
    .cinit  : palign(8) {} > FLASH_APP
    .pinit  : palign(8) {} > FLASH_APP
    .rodata : palign(8) {} > FLASH_APP
    .ARM.exidx    : palign(8) {} > FLASH_APP
    .init_array   : palign(8) {} > FLASH_APP
    .binit        : palign(8) {} > FLASH_APP
    .TI.ramfunc   : load = FLASH_APP, palign(8), run=SRAM_BANK0, table(BINIT)

    .vtable :   > SRAM_BANK0
    .args   :   > SRAM_BANK0
    .data   :   > SRAM_BANK0
    .bss    :   > SRAM_BANK0
    .sysmem :   > SRAM_BANK0
    .TrimTable :  > SRAM_BANK0
    .stack  :   > SRAM_BANK0 (HIGH)

    .DataBank   : {} > DATA
}

客户可以根据项目要求在应用代码项目中添加其他功能。当应用代码项目准备好进行编程时,请记得更改 IDE 或编程器中的擦除方法,因为该应用项目不包含 NONMAIN 配置。TI 建议使用“仅擦除 MAIN 存储器”功能。

 仅擦除 MAIN 存储器图 3-3 仅擦除 MAIN 存储器