您好
我们有混合库存 64K 和128K CC1310器件 我想知道、 是否有一种方法可以将单个固件用于两个器件版本?
我们的代码小于50K、且能够很好地适应64K 器件内存。 我了解器件(TI 固件?)有"ccfg"闪存区域 使用对"CCFG"寄存器进行编程(在运行时?)。 我正在使用64K 器件链接器文件、并已将"CC1310_LAUNCHXL.c"编辑为
NVS_REGISION_BASE 0x1A000
至
NVS_REGISION_BASE 0xF000
因此、无论是64k 器件还是128K 器件、ccfg 闪存部分都固定为地址0xF000。
由于链接器文件用于64K 器件、并且 ccfg 段定义为位于64K 器件的最后一个扇区、如下所示:


我希望128K 器件也能与此固件配合使用。
不过,情况并非如此。
当将该64K 固件编程到128K 器件中时、它首次正常启动、但在下电上电或复位后似乎不会启动。 启动时、我们通过 UART 打印一些数据、但这根本不会显示。 在这个条件下对芯片重新编程、将会对其进行复兴、但只会在第一次复位/加电时再次发生。
如果我们创建128K 器件固件(通过使用128K 连接器文件)、并且首先使用此128K 固件对128K 器件进行编程、然后使用64K 器件固件对其进行编程(仅擦除"必要部分")、似乎可以正常工作。 这 意味着128K 固件使用器件运行所需的一些数据对上部64K 闪存进行编程? 当然、64K 固件不会对该空间中的任何内容进行编程。
问题是、如果 ccfg 段已根据链接器文件固定为64K 存储器的最后一个扇区、则器件为何需要/期待128K 存储器的最后一个扇区中具有某些内容? 是在闪存的最后一个扇区中需要 ccfg 数据的芯片还是 TI 代码?