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.

[参考译文] CC1311R3:闪存区域定义

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1537948/cc1311r3-flash-memory-regions-definition

部件号:CC1311R3

工具/软件:

我正在尝试使用系统配置工具(.syscfg 文件)在内部闪存中定义 NVS 区域。
其思路是在定义程序区域 (.text、.rodata、...) 后使用剩余的可用内存、并将其拆分在不同区域之间。
例如:

区域 A =剩余闪存的 1/3

区域 B =剩余闪存的 2/3

我的问题是,在整个程序的开发过程中,我的程序使用的闪存可能有所不同。
这会导致出现以下错误:

区域`闪存'溢出 88 个字节

是否有方法可以根据闪存中的剩余空间将我的 NVS 区域定义为“动态“?  

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

    尊敬的 Corentin:

    遗憾的是、无法动态设置 NVS 区域。

    这是因为只有在编译后、您才知道应用程序将有多大、并且需要将内存映射传递给编译器。

    然后评估程序是否适合指定的插槽、如果不适合、您将看到错误。


    此处推荐的方法通常是准确评估闪存区域需要多大并相应地设置区域。

    此致、
    Theo

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

    您好:

    感谢您的回答。
    由于我需要使用闪存中的最大可用内存量、因此我使用了以下方法:

    -我定义了我的  NVS 区域,以一种使用整个闪存的方式。
    -编译器给了我一个错误:“区域`flash '溢出 N 字节“。
    -我用这个 N 字节的值来计算我的 NVS 区域大小的方式如下:
    NVS 区域总大小=闪存大小 — 1.5*N

    1.5 系数用于缓冲区面积为代码大小的 50%、以避免每次修改代码时都不得不重新计算 NVS 区域。  

     此致、

    科伦廷