跳转到主要内容

DA14531在燃烧OTP时的不同行为

2个月前

DA14531在燃烧OTP时的不同行为

发布的pierrej@kickma……20分 6个回答
0的问题

你好,

我正在尝试开发一个应用程序与DA14531控制RGB led的BLE。

DA14531以hw方式设置为BYPASS模式,并且定义了CFG_POWER_MODE_BYPASS。还定义了CFG_DEVELOPMENT_DEBUG。
Led线引脚0,10和11。(RST和SWIO被固件禁用)
一个按钮被线接在第6针上。

Led由pwm控制,使用定时器2。
该按钮连接到一个中断,设置基于BLE特性的pwm占空比为10秒。
默认睡眠模式设置为ARCH_EXT_SLEEP_ON。

软件启动时LED关闭。按钮中断禁用睡眠模式,设置led的占空比,并使定时器0回调。
回调函数在未达到10秒时增加一个计数器,并在达到10秒标记时执行以下操作:
-关闭led
-使系统进入深度睡眠,没有OTP副本
-关闭定时器0

代码是完美的工作时闪过JTAG在sysRam,然而,当燃烧的OTP,行为是奇怪的:
- BLE工作良好,特性可由远程设备写入,值随时间保持。
- led闪烁每秒钟左右,当BLE是广告。
-当连接和服务发现完成时,led闪烁得非常快。
—连接完成后,led灯亮。
—断开远端设备重新启动闪烁,同时再次启动广告。
—按钮指示灯不亮。
- led颜色与BLE特性中存储的值无关。

OTP燃烧是通过SmartSnippets工具箱完成的,头是由工具箱建议的,没有修改,除了应用程序标志1和2被设置为yes。

我已经能够在sysRam中通过“忘记”设置CTRL_SYS_REG[DEBUGGER_ENABLE]为0并通过闪烁软件断开jtag来重现这种准确的行为。
请注意,它只会在jtag通过软件方式断开连接时重现该行为(在闪烁时关闭调试选项)。如果我在jtag的连接是正常的时候拔出它,那么一切工作正常。

2个月前

PM_Dialog

你好,

谢谢你来我们的论坛发帖。

当设备从System-Ram引导时,您提到应用程序代码工作得很好。你是否测试它与或没有调试器附加?

我已经能够在sysRam中通过“忘记”设置CTRL_SYS_REG[DEBUGGER_ENABLE]为0并通过闪烁软件断开jtag来重现这个准确的行为。

所以,你的意思是,如果CTRL_SYS_REG[DEBUGGER_ENABLE]在应用程序代码中没有设置为0,当通过JTAG下载fw到System-RAM并断开调试器时,你可以复制这个问题。我的理解正确吗?

如果CTRL_SYS_REG[DEBUGGER_ENABLE]设置为0,并且调试器断开连接,您能复制这一点吗?

请注意,它只会在jtag通过软件方式断开连接时重现该行为(在闪烁时关闭调试选项)。如果我在jtag的连接是正常的时候拔出它,那么一切工作正常。

您的意思是,当设备从System-RAM启动且调试器断开连接时,您可以复制这一点吗?

问:如果你在应用程序代码中禁用调试器并从SPI Flash启动,你能重现这种行为吗?

谢谢,PM_Dialog

2个月前

pierrej@kickma…… 20分

>>>当设备从System-Ram引导时,您提到应用程序代码工作得很好。你是否测试它与或没有调试器附加?

两者都可以,而且在两种情况下都可以正常工作。

>>>所以,你的意思是,如果CTRL_SYS_REG[DEBUGGER_ENABLE]在应用程序代码中没有设置为0,当通过JTAG下载fw到System-RAM并断开调试器时,你可以复制这个问题。我的理解正确吗?

是的,但我的意思是当断开来自闪烁的软件,更准确地说:

  • CTRL_SYS_REG[DEBUGGER_ENABLE]没有设置为0,Smart Snippets工具箱中的“关闭调试会话”选项被选中==>错误被复制
  • CTRL_SYS_REG[DEBUGGER_ENABLE]没有设置为0,Smart Snippets工具箱中的“关闭调试会话”选项未选中==>良好行为
  • CTRL_SYS_REG[DEBUGGER_ENABLE] set to 0 ==>好的行为,不管“关闭调试会话”状态。

物理地拔出JTAG在任何情况下都不会影响行为。

>>>如果CTRL_SYS_REG[DEBUGGER_ENABLE]设置为0,并且调试器断开连接,您能复制这一点吗?

没有

>>>问:如果你在应用程序代码中禁用调试器并从SPI Flash启动,你能重现这种行为吗?

我的装置里没有闪存

编辑:

只有一个精度:什么时候CTRL_SYS_REG[DEBUGGER_ENABLE]没有设置为0,连接在引脚10上的led不遵循其他led的行为,并轻微地持续发光(这是预期的,因为引脚10必须在SWIO上设置)

2个月前

pierrej@kickma…… 20分

我设法使它工作在OTP通过消除延长睡眠。

2个月前

PM_Dialog

你好,

很高兴你解决了这个问题。但这听起来像是在延长睡眠模式中没有保留某些东西。

谢谢,PM_Dialog

1个月前

aprocha46 90点

你好,

我有一个类似的问题,但对我来说,我有我的代码是在开发pro工具包的SPI Flash

当我运行我的代码没有调试器,我只得到第一个广告,然后它停止广告,而其他任务运行正确(从外部GPIO唤醒,I2C通信).请注意,我正在使用扩展睡眠模式,就像其他客户一样。

你能解释一下在有调试器和没有调试器的情况下运行行为的预期差异吗?在其他事情中,没有在RAM中声明的变量可以在调试器模式中保存吗?

谢谢

1个月前

PM_Dialog

嗨aprocha46,

谢谢你的评论。将在这个论坛上跟进://www.wsdof.com/雷电竞官网登录products/bluetooth-low-energy?post_id=11798#tab-support_tab_content

谢谢,PM_Dialog