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.

[参考译文] CC2652R7:TI/Matter lock-app 坚持在地址0xaa000处启动.NVS 链接器段。

Guru**** 2463330 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1217755/cc2652r7-the-ti-matter-lock-app-insists-on-starting-the-nvs-linker-section-at-address-0xaa000

器件型号:CC2652R7
"Thread:SysConfig"中讨论的其他器件

问题:
如何指示 LOCK-APP 构建过程在地址0xa8000处启动.NVS 链接器段? 对于为锁定应用(chip.syscfg)定义的内部 NV 的0x4000字节、默认值0xaa000不适用、但在本例中、我定义的是从地址0xa8000开始的额外0x2000区域。 这会导致整个.NVS 链接器段的大小为0x6000、而不是默认的0x4000、但是链接步骤坚持在默认的0xaa000而不是0xa8000处启动.NVS 段。 结果是我获得以下构建故障。

失败:chip-LP_CC2652R7-lock-example.out chip-LP_CC2652R7-lock-example.out.map…。 /chip-LP_CC2652R7-lock-example.out 段的` 0xb0000不在区域`FLASH'内

详细信息:
‘的'Grep'命令显示构建系统中的某个器件尝试从地址0xaa000开始启动.NVS 段。 如果从此处开始、则0x6000字节将不适用。

$ CD ~/TI/matter/examples/lock-app/cc13x2x7_26x2x7
$ grep "\.NVS" out/debug/chip-LP_CC2652R7-lock-example.out.map           
 .rodata.nvsCC26XHUAttrs
 .rodata.nvsSPI25XHUAttrs.
.NVS           0x0000000AA000    0x6000
 *(.NVS)
 .NVS          0x0000000AA000    0x6000 obj/build_DIR/gen/sSysConfig.ti_drivers_config.C.O
 .bss.nvsCC26XX 对象
 .bss.nvsSPI25X 对象

而.NVS 段需要从地址0xa8000开始、这正是我在 chipsys.cfg 中为我定义的其他 NV 区域指明的地址。

以下是在我的 chip.syscfg 中定义这两个区域的方法

$ CD ~/TI/matter/examples/lock-app/cc13x2x7_26x2x7
$ grep "NVS1.internal" chip.syscfg
NVS1.internalFlash.$name     ="ti_drivers_NVS_NVSCC26XX0";
NVS1.internalFlash.regionBase = 0xA8000
NVS1.internalFlash.regionSize = 0x2000

$ grep "NVS2.internal" chip.syscfg
NVS2.internalFlash.$name     ="ti_drivers_NVS_NVSCC26XX1";
NVS2.internalFlash.regionBase = 0xAA000
NVS2.internalFlash.regionSize = 0x4000

摘要:
由于我在 chip.syscfg 中定义了0x6000字节的内部闪存、并且集合的起始地址为0xa8000、因此我希望锁定应用程序构建过程定义.NVS 链接器部分从0xa8000开始(且不继续使用默认值0xaa000)。 有什么建议吗?

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

    Steve、您好!

    您  还需要修改 cc13x2x7_cc26x2x7_freertos_ota.lds 命令链接器文件、以应对 NV 存储器分配而进行的这种更改。  我会问 Matter 软件研发团队是否可以为 NV 分配额外的闪存页。

    此致、
    Ryan

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

    谢谢 Ryan。 我对我的*。lds 进行了您建议的更改、现在似乎正在为我构建/运行某些内容。 我定义了从位置0xA8000开始的0x6000字节内部 NV、而不是从0xAA000开始的默认0x4000字节。

    以下是有关我的设置的更多详细信息:

    $ grep ".NVS"~/matter/src/platform/cc13x2_26x2/cc13x2x7_cc26x2x7_freertos_ota.lds
       .NVS (0xA8000)(NoLoad):at (0xA8000) align (0x2000){
           *(.NVS)

    $ grep "NVS"~/matter/examples/lock-app/cc13x2x7_26x2x7/chip.syscfg
    const NVS        = scripting.AddModule ("/ti/drivers/NVS ");
    const NVS1       = NVS.addInstance();
    const NVS2       = NVS.addInstance();
    const NVS3       = NVS.addInstance();
    NVS1.$name                   ="CONFIG_NVSINTERNAL";
    NVS1.internalFlash.$name     ="ti_drivers_NVS_NVSCC26XX1";
    NVS1.internalFlash.regionBase = 0xA8000
    NVS1.internalFlash.regionSize = 0x4000;
    NVS2.$name                   ="SensorNV";
    NVS2.internalFlash.$name     ="ti_drivers_NVS_NVSCC26XX2";
    NVS2.internalFlash.regionBase = 0xAC000
    NVS2.internalFlash.regionSize = 0x2000;
    NVS3.$name              ="CONFIG_NVSEXTERNAL";
    NVS3.nvsType            ="外部";
    NVS3.$hardware          = system.deviceData.board.components.MX25R8035F;
    NVS3.externalFlash.$name ="ti_drivers_NVS_NVSSPI25X0";
    const NVSSPI25XDevice                        = scripting.AddModule ("/ti/drivers/nvs/NVSSPI25XDevice "、{}、false);
    const NVSSPI25XDevice1                       = NVSSPI25XDevice.addInstance ({}、false);
    NVSSPI25XDevice1.$name                       ="CONFIG_NVS_SPI_0";
    NVS3.externalFlash.spiFlashDevice            = NVSSPI25XDevice1;
    NVSSPI25XDevice1.slaveSelectPinInstance.$name ="CONFIG_GPIO_0";
    NVSSPI25XDevice1.sharedSpiInstance = SPI1;
    NVSSPI25XDevice1.slaveSelect.$appenestSolution ="BoostPack.38";

    $ grep ".NVS"~/matter/examples/lock-app/cc13x2x7_26x2x7/out/debug/chip-LP_CC2652R7-lock-example.out.map
     .rodata.nvsCC26XHUAttrs
     .rodata.nvsSPI25XHUAttrs.
    .NVS           0x0000000a8000 0x6000     

    再次感谢、

    Steve