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:mspm0g3507:保留一个内存扇区以保存运行时数据。

Guru**** 2550550 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1542231/mspm0g3507-mspm0g3507-reserve-a-memory-sector-for-run-time-data-save

器件型号:MSPM0G3507


工具/软件:

尊敬的支持:

我需要在运行时将变量保存在扇区 31 处(0x00007C00、length = 0x00000400,高耐写次数的最后一个扇区) 

如何为任何其他代码保留这个扇区而不会被编译器覆盖。

此致

Tulsi Das

VP 电子产品。

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

    您好、

    您可以执行这样的操作。

    MEMORY
    { 
        FLASHVEC 		(RX)  : origin = 0x00000000, length = 0x00000400 //intvecs must always point to 0x0
        USER_VARIABLES  (RW)  : origin = 0x00007C00, length = 0x00000400
        FLASH           (RX)  : origin = 0x00008000, length = 0x00020000
    
        SRAM            (RWX) : origin = 0x20200000, length = 0x00008000
        BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x000000FF
        BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
    }

    但是、FLASHVEC 和 USER_variables 之间的闪存中会有一个间隙。

    如果您不需要将变量存储在 0x7C00、那么可以通过将变量放置在 0x400 来消除该间隙。

    MEMORY
    { 
        FLASHVEC 		(RX)  : origin = 0x00000000, length = 0x00000400 //intvecs must always point to 0x0
        USER_VARIABLES  (RW)  : origin = 0x00000400, length = 0x00000400
        FLASH           (RX)  : origin = 0x00000800, length = 0x00020000
    
        SRAM            (RWX) : origin = 0x20200000, length = 0x00008000
        BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x000000FF
        BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
    }

    马修

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

    您好、Matthew、

    感谢您的答复。 因为我刚开始使用 Microchip 的 TI 控制器、所以我需要对该问题进行更多的澄清。

    我将以下代码放在 device_liker.cmd 文件中

    移动数据
      FLASHVEC    (RX) :origin = 0x00000000、length = 0x00000400 //intvecs 必须始终指向 0x0
      user_variables (RW) :origin = 0x00000400、length = 0x00000800
      闪存中      (RX) :origin = 0x00000800、length = 0x00020000
      SRAM       (rwx):origin = 0x20200000、长度= 0x00008000
      BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x00000080
      BSL_CONFIG   (R) :origin = 0x41C00100、length = 0x00000080
    }





    当我再次构建它时、它会自动替换回 syscfg。 现在、我停止如下所示的自动更新。

    但是构建项目有错误。

    我想我错过了更多的步骤、或者我将建议的闪存更改放置在错误的位置。 您能否详细写出所有缺失的步骤? 如何    在主电源代码中使用“user_variables (RW): origin = 0x00000400, length = 0x00000800“?

    此致

    Tulsi Das

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

    您好、Matthew、

    以下是内存设置中的更正、如所示


    移动数据
      FLASHVEC    (RX) :origin = 0x00000000、length = 0x00000400 //intvecs 必须始终指向 0x0
      user_variables (RW) :origin = 0x00000400、length = 0x00000400
      闪存中      (Rx) :origin = 0x00000800、length = 0x0001F800
      SRAM       (rwx):origin = 0x20200000、长度= 0x00008000
      BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x00000080
      BSL_CONFIG   (R) :origin = 0x41C00100、length = 0x00000080
    }

    但不会影响结果。

    此致

    Tulsi Das

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

    您好、

    您需要停止 syscfg 生成链接器文件。 请参阅下面的示例。

    至于将变量放在正确的部分中-->请查看此 文档。 其中的示例显示了可附加到对象的各种不同类型的“属性“。  

    马修