Hello Dialog Team,
我正在为我的项目使用定制板。
This project has a pressure sensor that sends manchester coded data every 30sec through gpio. My dialog chip decodes the data and loads it in the advertisement string. I have a battery attached for powering up my circuit. I am enabling sleep to save battery life.
I have done the following so far. Since we are developing our custom hardware, I did the following changes to the example (ble_app_sleepmode) program as follows.
1)根据我们的user_periph_setup.h中的原理图改变了LED端口和按钮引脚
2)将#define cfg_lp_clk lp_clk_xxtal32更改为#define cfg_lp_clk lp_clk_rcx20在da1458x_config_advanced.h中,因为我们没有32khz外部水晶。
3) Changed #define CFG_XTAL16M_ADAPTIVE_SETTLING to #undef CFG_XTAL16M_ADAPTIVE_SETTLING because of point 2.
4) #在da1458x_config_advanced.h中定义CFG_CODE_LOCATION_EXT和#define CFG_CODE_LOCATION_OTP
I have successfully debugged the project with my 585devkit and it ran without any problems. I am facing the following problems now. Since my debug session is running properly I have planned to do the OTP. After I did the OTP, the program doesnt run for a long time. It runs for a while and then halts I think. No idea why.
当做,
作记号
我附上该项目folder also.
Hi kuda,
Thanks for your question.
>>>> I am facing the following problems now. Since my debug session is running properly I have planned to do the OTP.
你的意思是你有调试器附着吗?如果是,则防止系统进入睡眠模式。您是否完全确定您的应用程序在我们的DK中运行?
In case of your custom board, did you try to run you application in debug mode? For example, did you try to download fw to System-RAM?
谢谢,PM_DIALOG.
嗨,PM\U对话,
对。我把代码下载到sys-RAM,它运行得很好,没有任何问题。
在向OTP下载代码后,我断开了调试器。我卸下了电池并将其插入。它运行几分钟,然后陷入困境。
当做,
作记号
Hi MarkDsylva_2277
Can you please export and share the OTP Header that you are using?
谢谢,PM_DIALOG.
嗨,PM\U对话,
如何导出OTP标题?
当做,
作记号
Hi MarkDsylva_2277
从SmartSnippets工具箱。您需要连接到OTP头并将其导出到文件。
谢谢,PM_DIALOG.
嗨,PM\U对话,
读书时我会得到很多错误。
我正在附加日志。
当做,
作记号
嗨pm_dialog,
我设法得到了标题。它附在这里。
当做,
作记号
嗨,PM\U对话,
请更新我的状态,因为我在等待你的答复,为进一步发展我的项目。
当做,
作记号
Hi Mark,
两个应用程序标志都设置为“是”,这是正确的。你用的是什么包装?WLCSP34、QFN40或QFN48?I您选择的QFN40的OTP头。此外,时钟源被选为外部晶体振荡器,但在您的初始岗位上,您使用的是间隔RCX。你在OTP标题中做了哪些更改?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?
>>>将代码下载到OTP后,我断开了调试器的连接。我把电池取下来插回去。它跑了几分钟就卡住了。
Since it is running for a few minutes, this means that the device is booting correctly from the OTP. Probably the issue might be related to the SW. Does the device advertise and stops suddenly? Are you able to connect it with a peer device?
谢谢,PM_DIALOG.
嗨,PM\U对话,
--->你用的是什么包装?WLCSP34、QFN40或QFN48?I您选择的QFN40的OTP头。
Yes it is QFN40.
---->此外,时钟源被选为外部晶体振荡器,但在您的初始岗位上,您使用的是间隔RCX。你在OTP标题中做了哪些更改?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?
I have an external crystal connected. But for low power crystal selection I dont have a 32Khz external crystal connected to my dialog chip. So I changed it from #define CFG_LP_CLK LP_CLK_XTAL32 to #define CFG_LP_CLK LP_CLK_RCX20. I didnt change anything else in the header. I only changed the application flags to Yes.
----> Since it is running for a few minutes, this means that the device is booting correctly from the OTP. Probably the issue might be related to the SW. Does the device advertise and stops suddenly? Are you able to connect it with a peer device?
The devices runs for a few minutes and when it wakes up from sleep its stops. The running time of the application varies a lot. Somtimes it stops in 2 mins or it may take 15mins also. Since my project is related to advertisement only, I didnt connect it with a peer device. If the issue is related to software, Why hasnt it occured during debugging?.
-------------------------------------------------------------------------------------------------------------------------
- >我最大的疑问是,如果应用程序中有一个错误,为什么它运行一段时间,然后停止。
-> I have a mobile app that logs the advertisement data with system time. As per my project, the advertisement interval is 150ms and it is done for 5 seconds after which advertisement stops. As per my log, the chip wakes up and stops in between those 5 seconds time before advertisement stops.
- >我还从您的网站上的在线教程读取,应从RWIP.c.中评论以下行。如果不使用32kHz外部乳房
// DA14585 / 586不支持Boost Mode + RCX
if(getBits16(ANA_Status_reg,Boost_selected)== 1)
ASSERT_WARNING(0);
I didnt try commenting this because I dont have many chips left with me as we are in lockdown due to Covid-19. My code ran in debug for more than a week straight. After I did OTP I started facing problems. Please support me on this as it is very urgent.
--------------------------------------------------------------------------------------------------
如果你能在某些方面指导我会更好,因为我使用的是定制板,我只是不能浪费芯片后发现错误后,做了OTP。我的经理会问我,你会为此浪费多少芯片?。
当做,
作记号
Hi Mark,
您提到您在开发模式下测试了您的项目。请记住,连接调试器时,这会阻止系统进入睡眠模式。您是否曾经在没有附加调试程序的情况下进行过测试?
你的问题与从睡眠模式中醒来有关。
例如,如果您将相同的固件下载到Sys-Ram(没有附加调试器)或SPI-Flash中,那运行是否正确?
Regarding the OTP Header seems to be correct. If the OTP Header and the OTP Image were not burnt correctly, the device will not be able to boot! In your case, the DA14585 is booting correctly and starts advertising.
谢谢,PM_DIALOG.
嗨,PM\U对话,
--->您提到您在开发模式下测试了您的项目。请记住,连接调试器时,这会阻止系统进入睡眠模式。您是否曾经在没有附加调试程序的情况下进行过测试?
我试图从keil启动调试会话,并通过按相同的debug按钮停止了调试会话。代码没有运行。
正如我在上面的帖子中所说,我认为代码挂在广告过程中间的某处(即在广告间隔之间醒来和睡觉)。我的代码位于user_sleepmode.c文件中,在那里我正在处理外部中断和数据解码。收到数据后,我启动广告并设置APP_EASY_TIMER 5秒钟......之后我停止广告。在我之间,我没有任何东西。我怎么检查代码挂起的地方?有任何想法吗?
当做,
作记号
Hi Mark,
所以这个问题和软件有关。让我们试着调查一下根本原因。如果在安装了调试器的自定义板上运行应用程序代码,它会在任何地方停止吗?如果是的话,你能分享一个截图吗?看门狗是启用还是禁用?
谢谢,PM_DIALOG.
嗨,PM\U对话,
--> No. The code doesnt stop anywhere. It runs without any problems.
- >我已经禁用了看门狗。
当做,
作记号
Hi Mark,
Can you please run it with the WDOG enabled? Now, if you run it in debug mode, does the code stuck anywhere? Please define the CFG_WDOG macro and run it again.
谢谢,PM_DIALOG.
Hi Mark,
Additionally what is the SDk that you are using? I am unable to build the provided example code in our SDK.
谢谢,PM_DIALOG.
嗨,PM\U对话,
The SDK I am using is 6.0.12
当做,
作记号
Hi Mark,
My suggestion would be to have the WDOG enabled and run the code in debug mode. Additionally, please enable the CFG_DEVELOPMENT_DEBUG flag. This allows you to hot attach debugger and get debug information if a hardfault or NMI is occurred. So, with these 2 macros enabled, does is get stuck anywhere when ruining it in debug mode? Additionallym there is no need to bunt the OTP in order to debug it - just download the firmware into the System-RAM through the Keil IDE.
同时,我将尝试在我们的开发板上运行所附的项目。
谢谢,PM_DIALOG.
嗨,PM\U对话,
I did as you said.
我#定义了两个宏,并通过按“调试”按钮上传了代码,然后再次按同一按钮。代码又卡住了。
当做,
作记号
Hi Mark,
它被困在哪里?你能分享截图吗?
谢谢,PM_DIALOG.
嗨,PM\U对话,
我已断开调试器。所以我无法看到它被困的地方。
But when I run with the debugger attached, the code runs properly.
------------------------------------------------------------------------------------
我在明天完成项目的截止日期,因为代码在广告间隔之间被卡住,我正在考虑通过将假到ARCH_SET_EXTEDDE_SLEEP(FALSE)将FALST删除广告间隔之间的OTP复制睡眠,并更改静态const sleep_state_t app_default_sleep_mode= ARCH_EXT_SLEEP_ON ...
这将解决我的问题吗?
当做,
作记号
Hi Mark,
I have run your attached project with the CFG_WDOG and the CFG_DEVELOPMENT_DEBUG macros defined. I am working on an QFN40 daughter board and our new Pro-DK motherboard. In order to use the on-board button to wake-up the device, I am using the P1_1 for the LED.
在调试模式下运行代码时,卡住in GPIO_SetPinFunction() in gpio.c file in the following line.
__asm(“bkpt#0 \ n”);//此PIN尚未保留!
在user_periph_setup.c中,您正在配置所有GPIO以输入下拉。这不需要,因为默认状态是input_pulldown。您可以轻松阅读GPIO寄存器以澄清它。此外,这种代码的平安重新配置了不推荐的所有GPIO。
Also, in the user_sleepmode.c files you are using a GPIO which is never reserved!
请在您在代码中找到的修改附加了一个diff文件。使用该修改,我能够在我们的DKS中运行项目。
OTP代表一次性可编程,所以你应该确保你的项目是完全运行前燃烧它!
在开发阶段,建议启用WDOG和development debug,否则,如果代码被困在某个地方,您将永远不会收到通知!总之,刻录OTP映像和OTP头需要应用程序代码100%运行。否则,芯片将永远无法从OTP启动!
What is the package of DA14585 that you are using?
谢谢,PM_DIALOG.
嗨,PM\U对话,
Ok. I will do as you said.
I am using a QFN40 package.
Will GPIO reservation problems cause the code to hang after doing OTP?.
当做,
作记号
既然你正在运行project in debug mode, you should have the CFG_DEVELOPMENT_DEBUG defined. This allows you to simulate the OPT mirroring from the OTP to System-RAM.
我建议在丹麦进行这个项目。它运行正常吗?
如果是,则使用您的自定义板并将FW下载到系统RAM中。请确保OTP为空。这是100%的工作吗?
嗨,PM\U对话,
我从你的skd上取了一个新的sleepmode示例,并尝试将其下载到585子板的ram中。我没有修改任何代码。当我按下debug按钮并启动代码时,它立即在nmi\u处理程序中停止。在585子板中,您的示例代码是否可以这样工作而不进行修改?。
当做,
作记号
HI MARK,请先将FW降至RAM - 现在工作吗?
你好,马克,你能指出你用的是哪种DK吗?哪个子板和哪个母板?是的,这个例子是正确的。。
Hi,
套件是da14580devkt-p_vc
Daughter board is DA14585.
当做
嗨Mark,是的BLE_APP_SLEEPMODE在此板中正确运行。我可以在我身边跑。是否有可能与跳线配置共享一个phote?
Hi,
Photos are attached.
当做,
作记号
嗨Mark,刚刚在我们的DK上测试了BLE_APP_SLEEPMODE示例 - 我正在使用与您和相同的跳线配置相同的DK。你有备用DK吗?我也建议在干净的SDK目录上工作。此外,通过修改我昨天分享了您,我能够在我们的DK中运行您的项目......您是否在为DA14585构建项目?谢谢,PM_DIALOG.
嗨,PM\U对话,
--->你有备用DK是否测试它?
不,我没有。
--> I'd suggest to worki on a clean SDK directory as well.
I extracted the sdk folder from the 6.0.12.1020.2.zip file and opened the ble_app_sleepmode project and built it and started the debug session. I didnt modify anything else inside. But I am facing the same issue. I have attached the screenshot.
当做,
作记号
嗨,马克,你能运行其他SDK项目吗?例如,ble\u app\u barebone。所有的SDK示例都是在我们的DKs中运行的,并且是由SDK提供的。在这个特定的设备中,你烧过OTP吗?
Hi,
我无法运行任何BLE示例。我尝试了眨眼项目。它的工作正常。
当做,
作记号
Hi Mark,
请找到我的跳线配置。所有BLE示例都按预期运行。在BLE_APP_SLEEPMODE的情况下,我能够使用附加配置运行它。所以请尝试将SDK解压缩到一个新文件夹中,再次尝试。我建议有一个简短的SDK路径 - 可能在C:\下解压缩。如果它没有再次运行,可能会损坏。您是否在该设备中写了OTP?
谢谢,PM_DIALOG.
嗨,PM\U对话,
我照你说的做了。
1) I took out a fresh copy of the SDK and created a folder in D drive. I ran the sleepmode example without modifiying anything. As soon as I started the debug session it got stuck at the nmi handler.
2) 我连接了smart snippets工具并检查了OTP内存的读取。它只读0。
当做,
作记号