定制板材da14585 -行为上的差异

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
13个员额/ 0个新员额
最后发表
wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
定制板材da14585 -行为上的差异

你好,

我们正在使用自定义DA 14585董事会。来自Flash的电路板靴子,因为我们不使用默认的SPI引脚,我们已将次级引导加载程序编程到OTP中。睡眠模式延长(没有OTP拷贝)。我们面临的问题是:
1.当写入hw时,启用延长睡眠的代码显示不一致的行为。它会发出一段时间的广告,然后进入无响应状态。
2.相同的代码,睡眠禁用,当闪存到HW中时,工作正常
3.当通过RAM运行时(使用keil调试器)启用扩展睡眠的代码工作正常。

我们在设计中包含了32khz和16Mhz晶体。

同样的原因是什么呢?请建议。

谢谢

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

嗨Wisilica,

我无法弄清楚这种行为的任何明显,我可以提到一些事情,以便你测试。

如果你在flash中刻录一个SDK项目并启动该项目,你会看到同样的行为吗?你能估计这个设备广告多长时间吗?我认为这款设备在醒着的时候会做广告,在进入睡眠状态的时候会停止,所以试着从fw上切换到RCX,而不是XTAL32。你能试着用默认的引脚(可能在开发工具包上)从flash启动你的fw,并检查是否有任何不同吗?

还有一些我在这篇文章中没有提到的关于从特定SPI引脚启动的事情https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...在585中,除了在OTP中为从特定引脚引导而烧制辅助引导加载程序之外,585还包括了一种机制,以便从特定引脚引导,这可以在OTP报头的boot specific映射字段中定义,你将能够在附录G和4.3.1 OTP Header段落中的585数据表中找到信息,尽管我不认为你所观察到的行为的原因是你已经在OTP中烧毁了次级引导加载程序。

由于MT_dialog

wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,

谢谢你的及时回复。你提到的事情我都试过了,结果如下:
1.我没有使用fw应用程序,而是将barebone项目编程到flash中,并将默认休眠模式选择为扩展模式。行为保持不变,即设备发布大约3 - 4个数据包,然后进入无响应状态。
2.还尝试将CFG_LP_CLK设置为LP_CLK_RCX20,但问题仍然存在。
3.尝试使用Booter将固件直接加载到RAM中,然后设备正常通告。
4.在开发板上尝试了相同的固件(即SPI pin的默认配置),设备工作良好。

我还配置了OTP头,以引导从SPI引脚如下:

Spi CLK = p0_0, spi_en = p0_1, spi_di = p0_2, spi_do = p0_3
启动=正常序列,唤醒命令码= 00,串行速度选择0

配置有什么问题吗?
另外,在辅助引导加载程序固件中,所做的唯一更改是定义SPI_FLASH_SUPPORTED和SUPPORT_AN_B_001,并按照我们的原理图配置SPI引脚。

请提出以上问题的原因。

谢谢

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

嗨Wisilica,

既然您已经指出引导顺序应该从特定的SPI引脚进行,那么引导标志不应该是0x00(正常顺序),而是0xAA(从特定位置的SPI端口引导)。另外,如果你已经在OTP中烧毁了辅助引导加载程序,设备仍将使用辅助引导加载程序引导,而不是串行引导序列。但是再次强调,我不认为你使用辅助引导加载程序会导致无响应行为,毕竟设备正在启动,而fw在运行,所以只要你有延长的睡眠,而不是(OTP_COPY_ON)设备应该保留fw。你也可以尝试通过调试器来调试这是附加为了还注意完全弗兰克-威廉姆斯的摊位和监控电力事故前后为了注意如果设备是睡觉和醒来或如果它已经陷入一个断言。

由于MT_dialog

wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,
通过调试器(RAM)运行fw,设备不会停止。我还检查了通过booter直接加载fw到RAM,它工作得很好。只有当它从flash启动时才会发生这个问题。

谢谢

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

嗨Wisilica,

上面提出的是在设备从Flash启动时附加兼容,此问题发生了,以便尝试和检查设备丢失并检查它是否有助于调试问题(只是启动等待insident。发生然后附加调试器 - 为了在“调试”选项卡中将调试器通过keil删除初始化文件,然后点击设置按钮,取消选中“连接后的”重置“。由于设备似乎卡住时的第二个引导加载程序运行时,可能遇到的是与该事实有关,也许这是辅助引导加载程序的问题,并且从OTP运行后它不会重置寄存器或类似的东西。设备睡眠休眠状态(尽管从RAM运行辅助引导加载程序和上面的案例和BLE_APP_PERITERAL配置的SPI引脚)运行辅助引导程序,但是设备可以直接从指定的引脚上直接从SPI闪存启动并运行它应该,我再也不能将辅助引导加载程序与设备摊位的事实相连。您还应该尝试将OTP标题刻录到启动特定的映射标志设置为您想要的引脚并检查设备是否操作。

由于MT_dialog

wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,
我们如何在运行时将调试器附加到电路板上?重新供电后,设备开始从闪存启动,然后在几秒钟后停止。我们什么时候需要启动调试会话?我想调试会话,将固件转化为RAM。那么,我们如何知道代码停止的点?

此外,应用程序编程标志1和2配置为YES,OTP DMA长度为1FC0和SWD使能标志作为在OTP标题中启用的JTAG。同一的快照附上(OTP标题智能片段)。请看看是否缺少任何配置。

而且,这个问题并不总是发生。在相同固件的某些运行中,该问题不会被观察到,设备可以正常工作。请建议同样的原因。

谢谢

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

嗨Wisilica,

使用相同的项目,你有使用为了构建.hex文件烧到flash,引导你通常做的从flash设备,然后遵循上面的指令我提供为了防止凯尔下载一个图像的设备,防止重置JTAG (为了在“调试”选项卡中通过Keil附加调试器,删除初始化文件,然后点击设置按钮,取消勾选“连接后重置”).之后,只要按“启动/停止调试会话”,你将能够连接到自定义委员会(你不应该重置设备附加JTAG之前或让凯尔为你这么做,这就是为什么你应该首先准备以上设置,然后启动程序,例如,当你点击“设置”时,如果选中“连接后重置”,jlink将重置设备)。点击“停止”按钮以停止执行(或弗兰克-威廉姆斯可能已经停止),检查装配模式如果设备在你能看到的地方,通过映射文件你将能够看到设备已经停止的功能。

关于您对OTP的设置,由于设备能够从SPI正确启动镜像过程确定,因此只有在设备关闭SYSRAM时才能编程OTP DMA,因为它也仅在SYSRAM关闭时使用因此,OTP将不得不知道要在唤醒时复制多少数据(也是您所放置的值为580,其中有一个较小的OTP,但在任何情况下,这不应该对您所在的内容产生任何影响).无论如何,还燃烧了一个585个设备,具有辅助引导加载程序并从指示的SPI引脚启动,设备再次运行,因为它应该没有问题。

如果该问题并非一致,那么这是否意味着即使在FW通过JTAG下划线时,也可能发生问题?因此,可能存在问题和通过闪存下载之间没有连接?

由于MT_dialog

wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,

我们在把fw直接加载到RAM时还没有发现这个问题。此外,在构建代码时,不同内存段的大小如下:

程序大小:Code=20808 RO-data=2892 RW-data=600 ZI-data=8400

这和问题有什么关系吗?

现在,单击“开始调试会话”选项卡,然后单击“停止”选项卡,我无法查看程序集窗口。是否缺少任何设置?

谢谢

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

嗨Wisilica,

您已发布的是从keil生成的二进制文件的大小,不必为您所在的内容做任何事情。已发布的值是代码(20808)RO数据(2892)的大小是常量数据的大小,RW Data(600)是您的变量,Zi数据(8400)是零初始化变量的大小。请检查上面提到的内容,并尝试使用简单的BLE SDK示例,并检查是否发生了相同的问题。关于拆卸窗口,您必须启用它才能查看拆卸窗口,只需进入“视图”,然后单击“拆分窗口”。

由于MT_dialog

wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,

正如您所建议的,我尝试了ble_app_barebone项目。我所做的唯一更改是将默认休眠模式设置为ARCH_EXT_SLEEP_ON。即使在这种情况下,也观察到了这个问题。
现在,在重新启动单板以从flash启动后,并单击“开始调试会话”选项卡后,将显示拆卸窗口,并突出显示以下行(附带的快照)。
这意味着什么?

谢谢

附件:
wisilica
离线
最后看到:1年1星期前
加入:2015-03-17 08:16
你好,

你好,

另外,我已经附上了barebone项目十六进制文件,使用它卡住了中途。所做的唯一更改是将睡眠模式设置为扩展模式。
请尝试使用我已分享的固件,在可以从我之前描述的引脚启动的电路板中。

CLK - p0_0, cs - p0_1, di - p0_2, do - p0_3

谢谢

MT_dialog
离线
最后看到:4个月1个星期前
工作人员
加入:2015-06-08 34
从凯尔的形象,你

从你所附的keil图像中,设备似乎没有停止(反汇编窗口中的指令表明设备正在从内存中加载一个地址),我认为如果你点击“运行”按钮,而你所附的是可以运行代码。

部分的代码,你看到在拆卸窗口是指令执行后恢复从睡梦中为了获取arch_resume_from_sleep()函数,这意味着该设备不停止,但代码继续执行时,设备将停止在这里附加调试器。所以在我看来,尽管你不能在空中看到这个设备,这个设备仍然在运行。

所以,就我所知,设备正在运行,而我们拥有的唯一线索是,当通过二级引导装载器加载时,然后在一些广告字符串发射后,你无法看到任何广告。下一步是检查设备的功耗,您可以从专业套件的定制板供电,并使用功率分析器来检查设备的功耗,这将让我们知道设备是否真的在发射广告字符串,并且由于某些原因,另一边的设备不能接收(例如,你的XTAL16可能是关闭的,你不以相同的频率发送),或者,如果由于某种原因,它丢失了BLE事件,只是在没有执行广告的情况下醒来(由于某种原因,它醒来太晚了,堆栈取消了BLE活动),您是否执行任何温度测试,并得到了那个问题?还有,你最好检查一下电源,看有没有滴漏。

测试的弗兰克-威廉姆斯上传并运行它从一个设备烧毁二级引导装载程序的OTP引导针表示,弗兰克-威廉姆斯正确引导广告没有问题,我可以正常连接,我假设你正在经历什么是由于h / w的问题,而不是由于引导加载程序或sw的flash。

最后,值得在另一块板上尝试一下,使用“特定于Boot的映射”字段而不是辅助引导加载程序。

由于MT_dialog