10个月前
写出超过8次才能闪光?
张贴了安道尔M20130分 6个答复嗨,对话框,
我想知道当我在VES中写了太多的时候会发生什么。例如,假设partition_entry_size / ad_nvms_ves_multiplier = 128/8 = 16 kbytes。将16KB数据写入其中8次后,将拍摄所有空间。如果我写了超过8次怎么办?在写第9个16kb之前,我应该擦除整体VES 128KB闪光吗?
谢谢你。
10个月前
嗨pm_dialog,
感谢您的提示回复。我读了这一点闪存适配器概念。
我想将错误打印日志保存到flash中,以便android应用程序稍后可以读取它来检查错误发生的原因。
我们的android应用程序有时会出现BLE连接中断,重新连接也会失败,而且由于很难很容易地重现这个问题(每1~2周发生一次),因此我们无法在实验室用RS232打印进行测试,而是尝试在错误发生后收集错误上下文。partion LOG\u部分用于其他应用程序,因此我必须使用NVMS\u GENERIC\u部分。由于我们不知道问题何时发生,因此在问题发生之前可能会保存大量打印日志,flash会不时被覆盖。
我知道VES机制是写到闪存的不同位置,以避免频繁擦除闪存,但每个闪存扇区在长时间运行后都有机会写一次。当猫找不到从未写过字的地方时会发生什么?
例如:有128kB/8=16kB的VE。
1.写入16KB时,写入16KB,
2.在覆盖16KB时,1ST 16KB将标记为“脏”,将使用2个16KB。
3.依此类推......当覆盖16KB的8次时,所有128KB都将脏。
4.如果9次覆盖16kB怎么办?所有的闪光灯都很脏。谁将负责删除以前脏的8 16kB?我要把整个闪存擦掉还是自己处理?
如果SDK处理所有擦除。这是否意味着我可以覆盖16kB的次数,因为它是在闪存擦除限制?如果是这样的话,我会在16kB的VES闪存上写一个环形缓冲区,以便继续向其中写入打印日志。
希望这能解释清楚。
谢谢你。
10个月前
你好,
对于日志记录数据,我们强烈建议使用日志分区 - 您不应该使用VES。nvms_generic_part条目用于存储诸如绑定数据的通用数据。它不应用于记录数据。为什么不增加日志分区以存储日志数据?
谢谢,PM_DIALOG.
10个月前
嗨pm_dialog,
谢谢你的回复。我们的产品已经交付给顾客了。增加日志分区不是索塔能做到的,是吗?所以我们必须在当前(默认)的flash分区上进行操作。
我在项目中搜索关键字“nvms_generic_part”,根本不使用它。如果VES驱动程序将在泛型部分的所有可用空间写入后处理擦除任务。我认为存储日志应该是可以的吗?
谢谢你。
10个月前
您好,M2013,
一般来说,在SUOTA期间修改分区是我们强烈不推荐的,特别是当它是一个产品时。
只有日志分区增加,如果任何其他分区没有更改(相同的地址和相同的长度),如果不是任何重叠。换句话说,如果日志分区末尾存在空闪存间隙,则可能通过执行拟议来增加它。但是,在这种情况下,您必须在启动期间编写自己的代码,以便删除先前的分区。这不是直接的实施,不建议。
在通用部分的情况下,这被标记为VES,应该用于日期的小块。该分区由BLE管理器访问,并包括所有相关信息。如果它用于日志记录,则访问数据将非常慢。
关于最后一个问题,请参阅以下用户指南的第7节:
谢谢,PM_DIALOG.
10个月前
您好,M2013,
请参阅第2.4.2节。ves在闪存适配器概念辅导的。他说:
VES驱动程序提供使用电源故障和佩戴保护的分区条目。为此,VES驱动程序将数据写入闪光灯中的随机位置,而无需在修改相同位置时擦除整个扇区。这是通过写入同一用户提供地址的不同闪存位置来实现的。VES驱动程序提供虚拟寻址,即用户指定地址被转换为读取或写入操作之前的真实闪存位置。为此工作,闪存大小必须大于用户可见的寻址空间。常见的拇指规则是所需的虚拟EEPROM大小的8倍。
使用ad_nvms_ves_multiplier宏在SDK中使用此规则,在AD_NVMS_VES.H标题文件中找到。特别是,对于1 MB的闪存模型,通用分区为128 kbytes(0x20000),因此虚拟地址空间周围:
分区\输入\大小/AD \ NVMS \ VES \乘数=128/8=16 KB。
此外,flash扇区被划分为多个容器,每个容器保存一系列虚拟EEPROM地址的数据。容器的大小在编译时可配置为2n字节,默认情况下,已使用AD\u NVMS\u VES.h中的AD\u NVMS\u VES\u container\u size宏配置为64字节。
存储在RAM中的容器分配表(CAT)用于跟踪有效容器所在的位置,并且扇区分配表(SAT)保存每个扇区的状态(脏码,自由)。容器的所选尺寸是猫所需的RAM的量与每个扇区的潜在擦除周期之间的折衷。容器的大小越小,占用的RAM越多。特别是,猫的每个条目由2个字节组成。因此,在我们的案例中,对于虚拟EEPROM的12 KB,计算占用RAM的公式是:12288 /(64-4)= 205 Cat条目= 205 * 2 = 410字节。
注意:只有在闪存中经常写入/修改的小块数据时,ves功能只应使用。如前所述,标记为VES的唯一区域是NVMS_GENERIC_PART分区条目。对话框提供的BLE持久存储机制使用此分区条目,因此,必须启用VES功能。否则,所有相关操作都将失败。
您能否说明您的要求以及您想要与VES完成的内容是什么?
谢谢,PM_DIALOG.