跳过主要内容

Smartbond PLT -在试图将自定义数据写入内存时出现严重错误/错误行为

DA14530和DA14531

1周前

发布的neil.macmullen55分 4回复
0的问题

我们有一个依赖于生产线上提供的配置数据的固件镜像。配置数据要写入。图像的Constdata部分。例如,."generic" .bin映像包含来自0-0x4000的代码/数据,我们希望在扫描生产线上的条形码的基础上在0x3800写入一个16字节的部分。

PLT软件(SmartBond Production Line Tool v_4.4.2)将会“出现”支持这一功能…它允许写入固件镜像和“自定义内存数据”部分。

不幸的是,当这两个选项都被选中时,PLT似乎完全跳过了编写固件,即使工具声称测试已经通过!(这是基于使用CLI工具回读OTP的内容。)

下面是相关的配置设置....

cfg1

cfg2

对于这种行为是否有一种变通方法?也许这个工具无法处理重叠的内存部分,而我只需要硬编码配置数据,使其位于远离固件映像的地址范围的顶部?(我希望它足够聪明,可以合并不同的部分,但可能不是....)

1周前

PM_Dialog

嗨neil.macmullen,

谢谢你在网上发帖。让我看看这个问题,同时。你能把params.xml文件放出来吗?

谢谢,PM_Dialog

1周前

neil.macmullen 55分

当然-见附件

附件 大小
params.zip 6.87 KB

1周前

neil.macmullen 55分

作为参考,我还附加了ibeacon_531.bin文件和运行生产工具并提供“A987654”作为条形码输入后获得的内存转储(MEM_READ)。您可以看到PLT已经在0x3c2c写入了条形码数据,但完全忽略了图像和头部。

不幸的是,我现在没有“空白”设备,但应该能够在下周运行更多的测试。

附件 大小
binfiles.zip 11.62 KB

1天前

neil.macmullen 55分

经过更多的实验,这里有一些结论…

1) PLT软件不允许将重叠图像和“自定义存储器”部分编程到OTP。这似乎是一个可以理解的限制(根据定义,OTP中的每个地址只能写一次),但考虑到使用自定义数据“个性化”一个单元是如此普遍,大多数生产系统都能够在编程之前合并重叠区域的内容。PLT软件报告“成功”,尽管它显然未能执行请求的操作,这一事实更令人担忧。

2)解决方案是将“自定义内存”部分移到镜像bin文件的边界之外。这需要对配置进行一些额外的调整,当您在数据表中查看启动顺序时(图20)会更有意义……

-“Burn image length to OTP header (OTP DMA length)需要检查,DMA长度需要手动设置,以覆盖额外的自定义内存部分。尽管不明显,“DMA长度”框是十六进制的,并接受14531的最大值“1FF0”。(在编程时,试图使用较大的值会导致*运行时*错误:-()

-我最后设置了“不检查”选项的所有部分-不确定这是否是严格的必要。

另一个评论-温和烦人,DA14531启动顺序没有办法执行OTP内容没有写入“应用程序标记”因为这使得它不可能读回OTP来验证他们的内容是正确的,同时还允许应用程序运行。如果有一个不同的“魔法”值可以放置在标志中,这会导致OTP在Boot-step 6之后可选地执行,这将是可取的。