NVMS库写/读/校验不匹配

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
13个员额/ 0个新员额
最后发表
daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
NVMS库写/读/校验不匹配

嗨对话框。

我有个问题。
我使用NVMS库。
我反复地写、读、验证数据。
有时数据不匹配。

使用NVMS库是否有任何限制?

硬件是DA14681-01A9DEVKT-P Development Kit - Pro。
SDK版本为SDK_1.0.10.1072。
我尝试了VES分区和直接访问分区。
均以失败而告终。

关键词:
设备:
MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
嗨daisuke_suzuki,

嗨daisuke_suzuki,

我不认为它们是任何限制,我也不知道在NVMS库中的任何错误,当你提到你激烈地使用这个库时,你到底在做什么?你是在对话专业开发套件上测试还是在自定义板上测试?如果你在一个自定义板上使用这个,你是否为你自定义板上的闪存使用了合适的闪存驱动器?它将有助于提一下你到底在做什么,以便我检查我是否可以复制。

由于MT_dialog

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
嗨对话框。

嗨对话框。

>
>我不认为它们是任何限制,我不知道在NVMS库中的任何bug,
>当你提到你暴力使用图书馆时,你到底在做什么?
>

我已将测试项目附在此回复中。

>
>你是在对话专业开发套件上测试还是在自定义板上测试?
>如果你在一个自定义板上使用这个,你是否为你自定义板上的闪存使用了正确的闪存驱动器?
>

我使用对话pro开发工具包板。

>
>这将有助于说明你到底在做什么,以便我检查我是否可以复制。
>

请按照以下步骤操作。

0.下载archive.zip。
1.解压缩archive.zip。
2.进口项目。
3.构建bootloader_release。
4.构建devkit_release。
5.用USB线连接电路板和PC机。
6.写程序。
7.打开连接的COM端口板。请使用teraterm。
8.按板上复位开关。
9.输入“测试10”。
10.检查输出。

如果你重复测试几次,它就会失败。

[好的]
/ ************************************************ /
/* devkit: release (NVMS test) */
/ ************************************************ /

NVMS >测试10
数= 10。
测试[01]…好吧
测试[02]…好吧
测试[03]…好吧
测试[04]…好吧
测试[05]…好吧
测试[06]…好吧
测试[07] ......好的
测试[08]…好吧
测试[09]…好吧
测试[10]…好吧
NVMS>

(NG)
/ ************************************************ /
/* devkit: release (NVMS test) */
/ ************************************************ /

NVMS >测试10
数= 10。
测试[01]…好吧
测试[02]…好吧
测试[03]…好吧
测试[04]…好吧
测试[05]…好吧
测试[06]…错误
索引不匹配[线= 138]
NVMS>

这个测试程序是test_cmd函数。
请检查主要\存档\ \ src \ framework \常见\壳\命令\ \ test_cmd.c测试。

附件:
MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
嗨daisuke_suzuki,

嗨daisuke_suzuki,

从代码中,我看到你已经从SDK中遗漏了相当多的文件,你已经定制了enitre SDK来满足你的需求,还试图调试fw,以检查你正在做的任何事情,这是完全不可能的。一些可能与您正在经历的相关的评论是,设备中没有分区表,我的意思是,您正在运行并访问NVMS_GENERIC_PART,但实际的分区表应该在启动时创建,它根本就不存在,我也不能看到你是否使用直接访问flash或VES,(虽然在分区表GENERIC_PART声明为PARTITION_FLAG_VES,没有配置文件检查项目的nvms配置)。flash的api经过了相当的测试,它们按照它们应该的方式工作。

由于MT_dialog

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
嗨对话框。

嗨对话框。

>
>从代码中我看到你已经从SDK和
>你已经定制了enitre SDK来满足你的需求,
>,也试着调试fw来检查你在做什么,但这是不可能的。
>

毕竟你确认NG还是OK?

>
一些可能与你正在经历的事情有关的评论,
>表示设备中没有分区表,
>我的意思是您正在运行和访问NVMS_GENERIC_PART但实际分区表
>应该在启动时创建,它只是不存在,我也不能看到你是否使用直接
>对flash或VES的访问,(尽管在分区表中GENERIC_PART被声明为PARTITION_FLAG_VES,
>没有检查项目NVMS配置的配置文件)。
>

我想分区表的设置如下文件。

主要\存档\ \ src \ framework \常见\ sdk \ bsp \ config \ \ suota \ partition_table.h 1米

正确的?

什么是不存在的配置文件?

告诉我从DA1468x_DA15xxx_SDK_1.0.10.1072的相对路径。

>
>这个flash的api经过了相当的测试,它们按照它们应该的方式工作。
>

告诉我你在做什么测试。
请给我看看测试代码。

MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
嗨daisuke_suzuki,

嗨daisuke_suzuki,

抱歉,我不明白你说的after all did you confirm NG or OK是什么意思?

是的,分区表的设置位于该文件中,在启动时,设备应在初始化组件期间创建分区表,但在您的FW中我尝试从智能代码片工具读取分区表,以便检查读取并写出并没有创建分区表。

关于不存在的配置文件,在主项目中custom_config_qspi.h文件在哪里?

关于测试,SDK在发布之前通过重大测试,您可以使用AD_NVMS_WRITE()和AD_NVMS_READ()函数来获取任何参考示例并写入闪光灯。我还在SDK示例中运行Test_Wrv()函数(调用的test_wrv(count)硬编码在10和20中的计数值),并且设备每次都有成功完成,并且我也可以看到闪存中写入分区的数据。

由于MT_dialog

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
>

>
>对不起,我不明白你说的after all did you confirm NG or OK是什么意思?
>

我想知道你是否做了我的测试。

你有测试吗?

测试结果怎么样?NG吗?好吗?

我想知道这个问题是否只发生在我的硬件。

如果你还没有这样做,请运行我的测试使用项目附加到这个答复。

>
>是的
分区表的设置位于该文件中,在启动时设备应该创建分区表
>在初始化组件,但在你的fw时,我试图从智能片段工具读取分区表,
为了检查读和写,并且没有创建分区表。
>

我检查了Smart Snippets工具。

在这个工具中,分区表的地址被设置为0x7F000。(我不知道为什么这个地址是不变的。)

因此,我将分区表的地址从0x89000更改为0x7F000。

该工具能够读取分区表。

但是,我的测试在变更后的项目上失败了。

附上更改项目。

在附件的项目中,我做了如下修改。

・添加get_pt命令读取分区表的程序。
・改变test_wrv()增加信息输出一个错误发生时。
・改变分区表
・删除不必要的SDK的变化

>
关于不存在的配置文件,在您的主项目中custom_config_qspi.h文件在哪里?
>

当然,在我的项目中没有custom_config_qspi.h。

该文件中确定必要的代码已移到devkit_config.h。

所以我删除了custom_config_qspi.h。

>
我还在一个SDK示例中运行了test_wrv()函数(调用test_wrv(count)硬编码了10和20中的计数值)和
>设备每次都有成功完成,我也可以看到闪存中写入分区的数据。
>

好吧! !太棒了! !

在你的项目中,test_wrv()函数每次都以成功结束。

对吧?

我想比较一下你的项目和我的项目。

请把你的项目给我。

MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
嗨daisuke_suzuki,

嗨daisuke_suzuki,

我运行了您之前附加的项目,测试失败了,正如您所提到的,但这是由于项目没有创建分区表和最可能的分区,以便读取和写入闪存。

我所做的是采取SDK 1.0.12 (SDK确实有一个bug在编写过程中,这是修正了新的SDK 1.0.12)和ble_adv项目,在该项目中,我做了以下更改:

  1. 在ble_adv_demo_task中,在ble_gap_adv_start()之前放置下面的代码来模拟您的测试:
    1. (我= 0;我< 20;我+ +){
      test_setup();
      test_wrv (i + 1);
      test_tear_down ();
  2. 有以上的功能复制从项目,你已经附加,而且我附加了一些断言,在错误的情况下。
  3. 通过CONFIG_RETARGET和CONFIG_RETARGET_UART HW_UART2启用打印
  4. 禁用的监督。

fw对指定的测试例运行成功。

如果您想测试在SDK 1.0.10上应用补丁,您可以简单地从SDK 1.0.12获取以下函数并将它们应用到旧SDK。

  1. 将*qspi_pending_ops初始化为NULL,如下所示:
  2. 使用SDK 1.0.12中的相应函数替换函数pm_execute_active_wfi()、pm_process_completed_qspi_operations()和pm_register_qspi_operations()。

由于MT_dialog

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
嗨mt_dialog.

嗨mt_dialog.

>
>我运行了你之前附加的项目,如你所说,测试失败了,
>但这是由于该项目没有创建分区表和
>最可能的分区,以读取和写入到闪存。
>

等一下。

你是这样想的,不是吗?

“这个项目中没有创建分区表。”

你这样认为的原因不是下面的原因吗?

“我无法使用智能片段工具读取分区表。”

在上次的回复中,我告诉了你以下内容。

不能使用Smart Snippets工具读取分区表的原因是
因为该工具读取带有固定值(0x07F000)的分区表地址。

这不是没有在项目中创建分区表的原因。

你明白?
是错了吗?

测试在您的环境中也会失败,所以我认为硬件不是这个问题的原因。

我确信这个问题是由NVMS库中的一个错误引起的。
(也许我认为FLASH驱动程序的实现有问题。)

你觉得这个怎么样?

>
>我做的是采取SDK 1.0.12
>(SDK在编写过程中确实有一个bug,新的SDK 1.0.12修正了这个bug)和
> ble_adv项目,在该项目中我做了以下更改:
>
> 1。在ble_adv_demo_task中,在ble_gap_adv_start()之前放置下面的代码来模拟您的测试:
> for (i=0;我< 20;我+ +){
> test_setup ();
> test_wrv(i + 1);
> test_tear_down ();
>}
>
> 2。有以上的功能复制从项目,你已经附加,而且我附加了一些断言,在错误的情况下。
> 3。通过CONFIG_RETARGET和CONFIG_RETARGET_UART HW_UART2启用打印
> 4。禁用的监督。
>
> fw对指定测试例运行成功。
>

你明白我的意思吗?

我说了"请把你的项目给我"
我并没有问你如何制作你的项目。
你为什么不附加这个项目?

如果我工作,我可能会犯错误。
如果你附加了一个项目,那就没有错了。

>
>如果你想测试在SDK 1.0.10上应用补丁
>您可以简单地从SDK 1.0.12获取以下函数,并将它们应用到旧的SDK。
>
> 1。将*qspi_pending_ops初始化为NULL,如下所示:
> 2。使用SDK 1.0.12中的相应函数替换函数pm_execute_active_wfi()、pm_process_completed_qspi_operations()和pm_register_qspi_operations()。
>

你是在说“因为在SDK 1.0.10有一个bug,应用补丁”吗?

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
嗨MT_Dialog

嗨MT_Dialog

我读了Release Notes(DA1468x_DA15xxx_SDK_Release_Notes_v_1_0_12_1078.pdf), There is a bug in FLASH driver。

1072.01
将dg_configDISABLE_BACKGROUND_FLASH_OPS修改为1可能会导致失败
编程Winbond闪存设备在96MHz

>
>这个flash的api经过了相当的测试,它们按照它们应该的方式工作。
>

???

你不知道有个窃听器吗?

我的测试将dg_configDISABLE_BACKGROUND_FLASH_OPS设置为0,但系统时钟设置为96MHz。

我的测试在我的环境和你的环境中都失败了。

dg_configDISABLE_BACKGROUND_FLASH_OPS为零,是否正常?

未经调查请不要回答。

MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
嗨daisuke_suzuki,

嗨daisuke_suzuki,

我经营并测试了你所附的第一个项目,并且项目失败了,我提到我找不到该项目的分区表,这一事实可能是您遇到的问题的最可能原因(这是我注意的第一件事,所以这就是我推荐的),也为了测试你的测试代码我在SDK示例中应用了以下Mod(我发布了)才能验证测试我能够运行您在项目中实现的测试(这是在SDK 1.0.12上完成的,因为您没有分区表看起来逻辑解释)。

我还测试了附加的项目,你已经上传了更正,你已经应用了为了有一个适当的分区表,你已经附加的项目也失败了。为了找出在你使用SDK 1.0.10的情况下还有什么可能出错。我注意到SDK 1.0.10上有一个bug,有时由于中断,写可能会失败。所以我所做的就是从SDK 1.0.12 (因为我已经建议你做一个尝试,所以是的,我知道这个bug,因为我已经提出如何在SDK 1.0.10上修复它)。所以在我的侧面,我将修复程序应用于SDK 1.0.10上以前提到的,并在SDK 1.0.12上运行相同的东西,以验证您的测试至少在SDK演示中是否成功运行。并且演示确实成功运行,在重置设备时执行测试,直到现在现在,SDK上都没有失败。

我完全理解你所说的关于提供项目的内容但是,Mods非常简单,我假设您可以尝试它们,无论如何,在附件中,您将使用应用于SDK 1.0.12上的补丁,构建项目,并将其下载到套件上。我还通过修复并运行一些测试,并且您的项目应该运行,并且在没有错误的时间内运行测试10和100的测试。

再次对于dg_configDISABLE_BACKGROUND_FLASH_OPS, SDK时应该运行dg_configDISABLE_BACKGROUND_FLASH_OPS设置为0,因为一个中断在运行一个flash擦除会错过(设备将执行一个擦除在指示),所以建议一直运行的
dg_configDISABLE_BACKGROUND_FLASH_OPS设置为0,这不是bug,而是系统的限制。我做的测试有
dg_configDISABLE_BACKGROUND_FLASH_OPS设置为0,就像在SDK演示中一样。

我也提到,你已经相当的遗漏和替换了一些SDK文件和定制您的项目,这样做我不能遵循设置
在你的项目中,我将花很多时间调试和检查什么会出错,所以我只能就你的项目提出建议
已附上而没有调试它
,或遵循你的测试到底在做什么,我希望这是清楚的,你理解这一点。的原因,我们不建议这样一个沉重的SDK上修改,因为它难以调试和也你会有问题当你想更新固件最新的SDK,你也有份SDK项目当修改一个文件的SDK并不影响其他SDK文件,你有你的项目。所以基于以上我认为已经运行了相当多的测试和相当调查的问题,您也需要对此进行测试,而不是附加自定义代码并等待解决方案。所以请检查上传的项目,并让我知道它是否在你这边操作。

由于MT_dialog

daisuke_suzuki
离线
最后看到:2年12个月前
加入:2015-09-16 08:36
谢谢你附上

谢谢你附上这个项目。

我在附加的项目中运行“测试10”10次。

没有发生错误。

到目前为止,我从未连续10次成功。

通过这个代码修复,我认为问题并没有从根本上得到解决。

但我认为,说“我看不出问题发生了”并不是一个错误。

感谢您的善意回复。

谢谢mt_dialog。

MT_dialog
离线
最后看到:6个月1个星期前
工作人员
加入:2015-06-08 34
我给你补上了什么

我修补什么代码(而且还演示了如何应用补丁前post)是一种识别和验证修复,也应用于SDK 1.0.12(这是最新的SDK)所以我很有信心,这是代码问题导致问题。

如果上述帖子有助于,请将答案标记为验证。

由于MT_dialog