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.

[参考译文] MSPM0G3507:擦除存储器

Guru**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1464602/mspm0g3507-erasing-the-memory

器件型号:MSPM0G3507

工具与软件:

您好!

我有一个关于内存的问题。  我在程序中标记了两个位置用于参数(HWParam 地址:0x00000400 (R))和数据(ParamConfig 地址: 0x00000800 (RW))

这些参数在初始化时写入、不应更改。 数据在程序期间被覆盖。  

device_linker.cmd

-uinterruptVectors
--stack_size=512


MEMORY
{
    IntVectors      (RW)  : origin = 0x00000000, length = 0x00000400

    HWParam         (R)   : origin = 0x00000400, length = 0x00000400
    ParamConfig     (RW)  : origin = 0x00000800, length = 0x00000400

    FLASH           (RX)  : origin = 0x00000C00, length = 0x0001F400
    SRAM            (RWX) : origin = 0x20200000, length = 0x00008000
    BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x00000080
    BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
}

SECTIONS
{
    .intvecs:   > 0x00000000

	//Přidáno
    .myData : palign(8) {} > HWParam
    .controllerData : palign(8) {} > ParamConfig

    .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, table(BINIT)


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

    .BCRConfig  : {} > BCR_CONFIG
    .BSLConfig  : {} > BSL_CONFIG
}

这是我写入存储器的方式

就像这样、我在程序期间覆盖数据。

但我有一个问题,当数据在程序期间被覆盖时,参数(HWParam addr:  0x00000400(R))也被删除。  

覆盖前:

覆盖后:

有人能告诉我为什么数据被删除,即使是为参数创建了一个单独的位置? 此外、如果存储器只能被读取?

感谢您的支持

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

    您好、 Jan

    MAIN_BASE_ADDR 被设置为0x400、并在代码中擦除 MAIN_BASE_ADDR:

    我认为您需要擦除 power_address = 0x800、对吗?

    此致、

    Helic

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

    我的´m、我的头。 谢谢你。 它的工作。