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

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

你好,

我们正致力于定制da14585板。板从flash启动,因为我们没有使用默认的SPI引脚,我们已经将辅助引导加载程序编程到OTP。睡眠模式被扩展(没有OTP拷贝)。我们面临的问题是:
1.当写入hw时,启用延长睡眠的代码显示不一致的行为。它会发出一段时间的广告,然后进入无响应状态。
2.同样的代码,禁用了睡眠功能,当写入hw时,工作正常
3.当通过RAM运行时(使用keil调试器)启用扩展睡眠的代码工作正常。

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

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

谢谢

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

嗨wisilica,

我不能找出任何明显的行为,我可以提一些事情,以供你测试。

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

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

由于MT_dialog

wisilica
离线
最后看到:12个月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
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

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

由于MT_dialog

wisilica
离线
最后看到:12个月1天前
加入:2015-03-17 08:16
你好,

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

谢谢

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

嗨wisilica,

我上面已经提出附加debbuger而设备已经从flash和引导问题已经发生,为了尝试和检查设备的摊位和检查如果这将帮助调试这个问题(只是引导等待事情的发生,然后附加调试器,为了附加调试器通过凯尔在“调试”tab remove the initialization file and then hit the settings button and uncheck the "Reset after Connect"). Since the device appears to stuck when the seconday bootloader runs, perhaps what you are experiencing is related to that fact, perhaps this is an issue of the secondary bootloader and after running from OTP it doesn't reset a register or something similar and when the device goes to sleep it stalls (although i ve tested running the secondary bootloader from RAM and the SPI pins configured like the case above and having the flash bunred with the ble_app_peripheral the device could directly boot from the SPI flash on the specified pins and run as it should, so again i am not able to connect the secondary bootloader with the fact that the device stalls). You should also try to burn the OTP header with the Boot specific mapping flag set to the pins that you would like and check if the device operates that way.

由于MT_dialog

wisilica
离线
最后看到:12个月1天前
加入:2015-03-17 08:16
你好,

你好,
当调试器运行时,我们如何将它附加到板上?重新上电后,设备开始从flash启动,然后几秒钟后它停止。我们什么时候需要启动调试会话?我猜是调试会话,将固件转储到RAM中。那么,我们怎么知道代码停止的位置呢?

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

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

谢谢

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

嗨wisilica,

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

关于OTP的设置,由于设备能够从SPI正确引导镜像过程是好的,没有必要编程OTP DMA,因为它只在设备关闭sysram时使用,以及,所以OTP必须知道在唤醒时要复制多少数据(你放置的值是580,它有一个较小的OTP,但在任何情况下,这应该不会对你正在经历的有任何影响)。无论如何,也烧伤了一个585设备与第二个引导装载程序和引导从指示SPI引脚,再次设备运行,它应该没有问题。

如果这个问题不经常发生,这是否意味着即使通过JTAG下载fw,这个问题也可能发生?所以也许这个问题和通过flash下载没有联系?

由于MT_dialog

wisilica
离线
最后看到:12个月1天前
加入:2015-03-17 08:16
你好,

你好,

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

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

这和问题有什么关系吗?

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

谢谢

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

嗨wisilica,

你所发布的只是keil生成的二进制文件的大小,不需要对你所经历的做任何事情。你发布的值是Code (20808) RO数据的大小(2892)是常量数据的大小,RW数据(600)是你的变量,ZI数据(8400)是你的零初始化变量的大小。请检查我上面提到的,也给它一个简单的BLE SDK的例子,看看是否发生了相同的问题。关于反汇编窗口,你将不得不启用它,以便看到反汇编窗口,只要去“查看”,并点击“反汇编窗口”。

由于MT_dialog

wisilica
离线
最后看到:12个月1天前
加入:2015-03-17 08:16
你好,

你好,

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

谢谢

附件:
wisilica
离线
最后看到:12个月1天前
加入:2015-03-17 08:16
你好,

你好,

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

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

谢谢

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

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

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

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

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

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

由于MT_dialog