DA14585休眠模式代码在OTP后卡住

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程//www.wsdof.com/support。我们将在未来几天修复bug /优化搜索和标记。
39帖子/ 0新
最后发表
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
DA14585休眠模式代码在OTP后卡住

您好对话团队,

我使用自定义板为我的项目。

该项目具有压力传感器,通过GPIO每30秒发送曼彻斯特编码数据。我的对话框芯片对数据进行解码并将其加载到广告字符串中。我有一个电池,用于向上电我的电路。我可以睡觉以节省电池寿命。

到目前为止,我已经完成了以下内容。由于我们正在开发自定义硬件,因此我对示例(BLE_APP_SLEEPMODE)程序进行了以下更改,如下所示。

1)根据我们在user_peri_setup .h中的原理图修改了led端口和按钮引脚

改变了#define CFG_LP_CLK LP_CLK_XTAL32到#define CFG_LP_CLK LP_CLK_RCX20在da1458x_config_advanced.h,因为我们没有一个32Khz的外部晶体。

3)因点2而将#define cfg_xtal16m_adaptive_settling更改为#undef cfg_xtal16m_adaptive_settling。

#undef CFG_CODE_LOCATION_EXT and #define CFG_CODE_LOCATION_OTP in da1458x_config_advanced.h

我已成功使用585devkit调试项目,而且没有任何问题。我现在面临以下问题。由于我的调试会话正常运行,我计划执行OTP。在我做了OTP之后,程序不会运行很长时间。它运行了一段时间,然后暂停停止。不知道为什么。

问候,

马克

设备:
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
我附上了这个项目

我也在附加项目文件夹。

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨Kuda,

嗨Kuda,

谢谢你的问题。

>>>>我现在正面临以下问题。由于我的调试会话正常运行,我计划执行OTP。

你的意思是你已经附加了调试器?如果是,这将防止系统进入睡眠模式。你完全确定你的应用程序在我们的DK中运行吗?

如果您的定制板,您是否尝试在调试模式下运行您的应用程序?例如,您是否尝试将FW下载到System-RAM?

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

是的。我下载了代码到sys-RAM,它完美地工作,没有任何问题。

在我将代码下载到OTP后,我断开了调试器。我把电池取下来,重新插了回去。它运行了几分钟,然后就卡住了。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
hi markdsylva_2277.

hi markdsylva_2277.

您能否导出和分享您正在使用的OTP标题?

谢谢,PM_DIalog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

如何导出OTP报头?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
hi markdsylva_2277.

hi markdsylva_2277.

从SmartSnippets工具箱。您需要连接到OTP头并将其导出到文件。

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我在阅读时有很多错误。

我正在附上日志。

问候,

马克

附件:
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_dialog,

嗨PM_dialog,

我设法拿到了头球。它附在这里。

问候,

马克

附件:
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

请更新我的状态,因为我在等待你的回复进一步发展在我的项目。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

两个应用程序标志都设置为“Yes”,这是正确的。你用的是什么软件包?WLCSP34, QFN40还是QFN48 ?我发现你选择了QFN40的OTP标头。此外,时钟源被选择到外部晶体振荡器,但在您的初始post您使用的间隔RCX。你在OTP报头中做了什么改变?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?

下载代码到OTP后,我断开了调试器。我把电池取下来,重新插了回去。它运行了几分钟,然后就卡住了。

由于它运行几分钟,这意味着设备从OTP正确启动。可能这个问题可能与SW相关。设备是否突然宣传和停止?您是否能够将其与对等设备连接?

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

——>你用的是什么包?WLCSP34, QFN40还是QFN48 ?我发现你选择了QFN40的OTP标头。

是的,它是qfn40。

此外,时钟源被选择到外部晶体振荡器,但在您的最初帖子您使用的间隔RCX。你在OTP报头中做了什么改变?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?

我有一个外部水晶连接。但是对于低功耗水晶选择,我没有32kHz外部水晶连接到我的对话框芯片。所以我将其从#define cfg_lp_clk lp_clk_xtal32更改为#define cfg_lp_clk lp_clk_rcx20。我没有改变标题中的任何东西。我只将应用程序标志更改为是。

---->由于它运行了几分钟,这意味着设备从OTP正确启动。可能这个问题可能与SW相关。设备是否突然宣传和停止?您是否能够将其与对等设备连接?

这些设备运行几分钟,当它从睡眠停止时醒来。应用程序的运行时间变化很大。Somtips它在2分钟内停止或可能需要15分钟。由于我的项目仅与广告有关,因此我并没有将其与对等设备连接。如果问题与软件有关,为什么在调试期间会出现它?

-------------------------------------------------------------------------------------------------------------------------

->我最大的疑问是,如果有一个错误在应用程序,为什么它运行了一定的时间,然后停止。

- >我有一个移动应用程序,用系统时间记录广告数据。根据我的项目,广告间隔是150ms,它在广告停止后5秒钟完成。根据我的日志,芯片在广告停止前5秒钟之间唤醒并停止。

->我还从您的网站上的在线教程,以下一行应该从rwip.c评论。如果不使用32Khz外部水晶

// DA14585/586不支持Boost模式+ RCX
if (GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 1)

assert_warning(0);

我没有尝试评论这一点,因为我们没有许多筹码,因为我们在Covid-19锁定时锁定。我的代码在调试中跑了超过一周的直线。在我做了OTP之后,我开始面对问题。请支持我,因为它非常紧迫。

------------------------------------------------------------------------------------

如果你能在某些方面指导我会更好,因为我正在使用自定义板,我只是不能浪费芯片后发现错误后做OTP。经理会问我,你们会为此浪费多少芯片?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

您提到您在开发模式下测试了项目。请记住,当附加调试器时,这将防止系统进入睡眠模式。您是否曾经在没有附加调试器的情况下进行测试?

你的问题与从睡眠模式中醒来有关。

例如,如果你下载相同的FW到系统ram(没有调试器附加)或SPI Flash,运行正确吗?

关于OTP标题似乎是正确的。如果OTP标题和OTP图像未正确刻录,则设备将无法启动!在您的情况下,DA14585正在正确启动并开始广告。

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

你提到你在开发模式下测试了你的项目。请记住,当附加调试器时,这将防止系统进入睡眠模式。您是否曾经在没有附加调试器的情况下进行测试?

我尝试从keil开始调试会话,并通过按相同的调试按钮来停止调试会话。代码没有运行。

正如我在上面的文章中所说的,我认为代码挂在广告过程的中间(即在广告间隔之间醒来和睡觉)。我的代码位于user_sleepmode.c文件中,我在其中处理外部中断和数据解码。在收到数据后,我开始发布并设置一个app_easy_timer 5秒....在那之后,我停止广告。在这期间,我什么都没有。我如何检查代码挂在哪里?什么好主意吗?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

所以这个问题与SW有关。让我们来调查一下可能的根本原因。如果在自定义板中运行带有调试器的应用程序代码,它会在任何地方停止吗?如果是,你能分享一下它卡住的截图吗?看门狗enabled ore disabled?

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

- >否。代码不停止任何地方。它没有任何问题。

——>我已经禁用了看门狗。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

您能用WDOG运行它吗?现在,如果在调试模式下运行它,代码在任何地方粘在一起?请定义CFG_WDOG宏并再次运行它。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

此外,您正在使用的SDK是什么?我无法在SDK中构建提供的示例代码。

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我使用的SDK是6.0.12

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

我的建议是将启用WDOG并在调试模式下运行代码。此外,请启用CFG_Development_debug标志。这允许您热连接调试器,并且如果发生硬盘或NMI,则获取调试信息。所以,通过启用这2个宏,在调试模式下毁了它时会粘在任何地方?另外,不需要禁止OTP才能调试它 - 只需将固件下载到系统内通过Keil IDE。

同时,我会尽量在我们的开发板上运行附件的项目。

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我说你所说的。

我定义了这两个宏,并通过按下调试按钮上传代码,然后再次按下相同的按钮。代码又卡住了。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

它在哪里卡住了?你能分享一张截图吗?

谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我已断开调试器。所以我看不出它在哪里卡住了。

但是当我使用调试器运行时,代码正常运行。

----------------------------------------------------------------------

我在最后期限完成项目在明天,因为代码广告之间的间隔就卡住了,我想删除otp副本的睡眠之间间隔,通过虚假广告arch_set_extended_sleep (false)和改变静态常量sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON……

这样能暂时解决我的问题吗?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

我已经使用CFG_Wdog和CFG_Development_debug宏运行附加项目。我正在研究一个QFN40女儿板和我们的新款Pro-DK主板。为了使用板载按钮唤醒设备,我正在使用LED的P1_1。

在调试模式下运行代码时,它会在以下行中的GPIO.C文件中陷入GPIO_SETPINFUNCTION()。

__asm(“BKPT # 0 \ n”);//这个pin没有被预先保留!

在user_peri_setup .c中,将所有gpio配置为下拉输入。这是不需要的,因为默认状态是INPUT_PULLDOWN。您可以很容易地阅读gpio寄存器来澄清它。此外,这种代码和平会重新配置所有的gpio,这是不推荐的。

此外,在user_sleepmode.c文件中,您正在使用永不保留的GPIO!

请找到附加的差异文件与我所做的修改在您的代码。有了这些修改,我可以在我们的dk运行您的项目。

OTP代表一次性可编程,所以你应该确保你的项目在烧它之前完全运行!

在开发阶段,建议启用WDOG和开发调试,否则,如果代码卡在某处,您将永远不会收到此通知!总之,燃烧OTP映像和OTP头需要应用程序代码100%运行。否则,芯片将永远不会从OTP启动!

您正在使用的DA14585的包是什么?

谢谢,PM_Dialog

附件:
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

好的。我会按你说的话。

我正在使用qfn40包。

GPIO预留问题会导致代码挂起OTP后挂起吗?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
既然你在运行

由于您在调试模式下运行项目,因此您应该定义CFG_Development_debug。这允许您模拟从OTP到系统RAM的OPT镜像。

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
我建议

我建议在DK执行这个项目。它运行正确吗?

如果是,那么使用您的自定义板并下载FW到System-RAM。请确保OTP是空的这是100%有效吗?

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我从你的skd上取了一份休眠模式的新拷贝试着把它下载到585子板的ram中。我没有修改任何代码中的任何东西。当我按下调试按钮并启动代码时,它立即停止在nmi_handler。您的示例代码在不修改585子板的情况下能正常工作吗?

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨Mark,请下载

你好,Mark,请先将fw下载到RAM中,现在可以工作了吗?

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨,马克,你能忘吗

Mark你好,请问你用的是哪一种DK ?哪一个子板和哪一个母板?是的,这个例子是正确的。

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
你好,

你好,

工具包是DA14580DevKT-P_VC

子板是DA14585。

问候

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
你好,Mark,是的ble_app

你好,Mark,是的,ble_app_sleepmode在本板中运行正确。我可以在我身边运行它。有可能和跳线配置共享一张照片吗?

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
你好,

你好,

照片附加了。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨,马克,刚刚测试了一下

你好,Mark,刚刚在我们的DK上测试了ble_app_sleepmode示例-我正在使用与你相同的DK和相同的跳线配置。你有多余的DK测试吗?我建议在一个干净的SDK目录上工作。另外,通过我昨天分享给你的修改,我可以在我们的DK中运行你的项目…你是在为DA14585建造项目吗?谢谢,PM_Dialog

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

->你有多余的DK来测试吗?

不。我没有。

- >我也建议在干净的SDK目录上工作。

我从6.0.12.1020.2..zip文件中提出了SDK文件夹,然后打开BLE_APP_SLEEPMODE项目并建立并启动调试会话。我没有修改里面的任何东西。但我面临着同样的问题。我附上了截图。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨,马克,你能跑吗

你好,马克,你能运行任何其他SDK项目吗?例如,ble_app_barebone。所有SDK示例都运行在我们的开箱即用的SDK中,并由SDK提供。在这个装置里,你烧过OTP吗?

markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20

你好,

我不能举出任何令人信服的例子。我尝试了blinky项目。它工作得很好。

问候,

马克

PM_Dialog
离线
最后看到:1天9小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

请查收附件我的跳线配置。所有BLE示例都按预期运行。在ble_app_sleepmode的情况下,我能够使用附加的配置运行它。请试着将SDK解压缩到一个新文件夹中,然后再试一次。我建议有一个简短的SDK路径-可能在C:\下解压。如果没有再次运行,可能是单板损坏。你在那个设备里写了OTP了吗?

谢谢,PM_Dialog

附件:
markdsylva_2277.
离线
最后看到:3个月1周前
加入:2019-06-19 04:20

嗨PM_Dialog,

我照你说的做了。

1)我拍出了SDK的新鲜副本,并在D驱动器中创建了一个文件夹。我在没有修改任何内容的情况下运行sleepMode示例。一旦我开始调试会话,它就被困在NMI处理程序。

2)我连接了智能片段工具和检查读取的OTP内存。它只读取0。

问候,

马克