This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G3519:MSPM0G3519 定制引导加载程序

Guru**** 2914610 points

Other Parts Discussed in Thread: MSPM0G3519

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1647124/mspm0g3519-mspm0g3519-custom-bootloader

器件型号: MSPM0G3519

您好、

我正在 MSPM0G3519 上开发定制引导加载程序。 我创建了两个单独的项目:

  1. 引导加载程序项目
  2. 应用工程

为了将引导加载程序和应用程序内存分开、我在 device_linker.cmd (.cmd) 中为这两个工程修改了闪存区域。

更改闪存大小/原始位置后、项目不再在调试模式下工作、无法对器件进行闪存/编程。

以下是链接器存储器配置。

//引导存储器段

移动数据
  闪存中      (Rx) :origin = 0x00000000、length = 0x0008000
  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
  数据       (r) :origin = 0x41D00000、length = 0x00004000
}

很重要
  .intvecs: > 0x00000000
  .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
  .TI.ramfunc :load = FLASH、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)

  .bCRConfig :{}> BCR_config
  .BSLSConfig :{}> BSL_config
  .databank :{}>数据
}
//应用程序存储器部分

移动数据

  闪存中      (Rx) :origin = 0x00008000、length = 0x00078000
  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
  数据       (r) :origin = 0x41D00000、length = 0x00004000
}

很重要

  .intvecs: > 0x000008000
  .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
  .TI.ramfunc :load = FLASH、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)

  .bCRConfig :{}> BCR_config
  .BSLSConfig :{}> BSL_config
  .databank :{}>数据
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    更改闪存大小/来源后、项目将不再在调试模式下工作、无法对器件进行闪存/编程。

    您是否为每个项目设置了适当的闪存擦除属性? 对于这两个项目、我建议如下:

    也可以为每个工程分配擦除地址。 如果未正确设置此项、当您加载应用项目时、它将擦除启动项目、然后出现问题。

    更改闪存大小/来源后、项目将不再在调试模式下工作、无法对器件进行闪存/编程。

    此外、如果您仅对引导工程进行编程、并且当它运行并跳转到应用工程时、如果应用地址不存在、则会使 MCU 进入硬故障状态、并且可能不再连接。

    要快速恢复、您可以参考以下两种方法:

    1. 强制 MCU 进入 BSL 模式

    2.恢复出厂设置

    您可以参考文档:https://www.ti.com/jp/lit/ug/slaaeo4/slaaeo4.pdf 

    B.R.

    Sal