在没有CFG\u DEVELOPMENT\u DEBUG的情况下重新启动

了解更多常见问题教程

15个职位/0个新职位
最后一篇文章
螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
在没有CFG\u DEVELOPMENT\u DEBUG的情况下重新启动

我有一个自定义板,在那里我为我的应用程序改编了ble\u app\u all\u in\u one示例。我用拱门,外景,睡眠,复制。到目前为止一切正常,但是当我禁用CFG\u DEVELOPMENT\u DEBUG时,设备总是在几秒钟后重新启动。

关于可能发生的事有什么线索吗?

设备:
PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

此宏启用开发/调试模式。对于生产模式生成,必须禁用它。请定义此宏并在调试模式下运行代码。你的固件崩溃了吗?

谢谢,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
是的,当我定义这个宏时

是的,当我定义这个宏时,一切正常(没有崩溃)。

我想在生产模式下禁用它,但在大约两秒钟后它崩溃并重新启动-但只有当我将它烧成Flash时,而不是在调试器中运行它时。

我把引导程序烧了。

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

那么,你打算烧了OTP然后从那里启动吗?当CFG\u DEVELOPMENT\u DEBUG被启用时,它允许模拟OTP镜像到系统RAM。你能澄清一下你在OTP中烧了哪个引导程序吗?如果您将睡眠配置更改为ARCH\u EXT\u sleep\u ON,是否仍面临相同的问题?

谢谢,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22

我们的硬件制造商已经烧毁了一个在OTP引导加载程序,我们是从那里引导,有没有在闪存引导加载程序。不幸的是,我不知道到底是哪个引导程序,但我怀疑它是相当标准的(但可能是一个旧的SDK?)。。。

当我使用ble\u app\u all\u in \u one时,这个问题也会发生。我只添加了一个LED输出,以查看FW何时运行,何时重新启动。。。使用CFG\u DEVELOPMENT\u DEBUG enabled,一切正常。但当我禁用CFG\u DEVELOPMENT\u DEBUG时,它每5秒就重新启动一次。如果我用BLE快速连接,在5秒钟之前,只要我保持连接,它就不会重新启动。一旦我断开连接,几秒钟后它就会重新启动。

这种情况发生在ARCH\u EXT\u SLEEP\u OTP\u COPY\u ON以及ARCH\u EXT\u SLEEP\u ON。。。

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

你能分享一下你所做的修改吗?请尝试使用没有睡眠模式的SDK的ble\u app\u barebone示例,并且没有定义CFG\u DEVELOPMENT\u DEBUG。从Flash启动时也有同样的问题吗?请尝试从系统RAM启动。

谢谢,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
我唯一的修改

我对ble\u app\u all\u in\u one项目以及ble\u app\u barebone所做的唯一修改是将这些行添加到user\u periph\u setup.c GPIO\u reservations()和set\u pad\u functions()以关闭板指示灯。引导加载程序将所有三个指示灯都打开,因此我可以通过指示灯的状态来查看何时重新启动。

#定义GPIO \u红色。\u红色。\u红色_发光的U U形端口\u端口\u港口35;定义定义GPIO\u红色\u红色发光的U P P P U U PiPio 尖尖尖尖定义GPIO\u红色\u红色_形理理理理理理港港口u端口端口GPIO端口\u港口u端口0;定义定义GPIO IO\u红色\u红色红色_发光发光发光的U U钉钉GPIO UU PiPiPiu PiPiu PiPiU U U P P P IO _PiuPiu P P P P P P P P P P U U U U U U Pi \\\\\\\\\\U GPIO(LED,GPIO\绿色\U LED\端口,GPIO\ u GREEN\ u LED\ u PIN,PID\ GPIO);RESERVE\ u GPIO(LED,GPIO\ u BLUE\ u LED\ u PORT,GPIO\ u BLUE\ u LED\ u PIN,PID\ GPIO);GPIO\ u ConfigurePin(GPIO\ u RED\ u LED\ u PORT,GPIO\ u RED\ u LED\ u PIN,OUTPUT,PID\ u GPIO,true);GPIO\ u ConfigurePin(GPIO\ u GREEN\ u LED\ u PORT,GPIO\ u GREEN\ u LED\ u PIN,OUTPUT,PID\ u GPIO,true);GPIO\ u ConfigurePin(GPIO\ u BLUE\ u LED\ u PORT,GPIO\ u BLUE\ u LED\ u PIN,OUTPUT,PID\ u GPIO,true);
  • ble\u app\u barebone在没有睡眠模式和CFG\u DEVELOPMENT\u DEBUG未定义的情况下工作
  • ble\u app\u all\u in\u one在没有睡眠模式和CFG\u DEVELOPMENT\u DEBUG未定义的情况下工作
  • ble\u app\u all\u in\u one与ARCH\u EXT\u SLEEP\u ON和CFG\u DEVELOPMENT\u DEBUG undefined每隔5秒重新启动一次
  • ble\u app\u all\u in\u one与ARCH\u EXT\u SLEEP\u ON和CFG\u DEVELOPMENT\u DEBUG defined一起工作
  • ble\u app\u all\u in\u one,ARCH\u EXT\u SLEEP\u ON,CFG\u DEVELOPMENT\u DEBUG undefined,辅助引导加载程序每5秒在闪存中重新启动一次

问题:

  • 如何强制系统从闪存启动?
  • 如何在不使用调试器的情况下从系统RAM启动?

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

您是否有定制板,或者您正在使用我们的开发包?由于这两个项目都在活动模式下工作,并且没有定义CFG\u DEVELOPMENT\u DEBUG,所以我猜问题可能与睡眠模式有关。你用哪个时钟作为低功耗时钟?

  • 我不太确定我是否收到了你的问题,但如果是这样的话,你应该使用SmartSnippets工具箱的flash程序员烧掉SPI flash。
  • 你可以通过Keil下载固件。

谢谢,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
是的,显然问题是

是的,很明显问题与睡眠模式有关。

如上所述,问题发生在定制板上。定制板烧了OTP。

我也有一个基本的开发工具包,那里的问题没有发生,而且OTP也没有烧到那里。

我的OTP头上写着Sleep Clock Source=External crystal。硬件文档也证实了32k振荡器被用作扩展睡眠模式的时钟。也许我没有在我的应用程序中正确配置它?检查什么?

当然我可以烧SPI flash,但是如果我烧bootloader到flash并且OTP也烧了,它会在flash中使用bootloader吗?似乎不是,我今天也测试过了。当我将引导加载程序烧成Flash时,问题也会发生。

当我通过Keil下载固件时,Keil会通过调试器。使用调试器时不会出现问题。有没有办法通过Keil下载固件,然后分离调试器?

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
好吧,我查到了

好的,我在arch_main.c中找到了以下两行:

SetBits16(SYS\u CTRL\u REG,DEV\u PHASE,1);reserved\u ram\u blocks=ret\u mode;

如果存在这些问题,比如定义DEVELOPMENT\u DEBUG时,就不会发生崩溃/重新启动。

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

根据DA14585数据表,SYS\u CTRL\u REG的DEV\u PHASE位字段设置开发阶段模式。如果设置了该位,则与OTP\u COPY位结合,OTP DMA将模拟OTP镜像到系统RAM。没有实际写入RAM,但是所花费的时间与镜像发生的时间完全相同。这是为了模仿这样的行为,就好像系统代码已经在OTP中,镜像在唤醒后发生,但是(开发)代码仍然驻留在外部源代码中。如果将该位设置为“0”并且OTP\u COPY='1',则OTP DMA实际上将在唤醒时执行OTP镜像。

那么,在开发阶段模式下,代码在所有情况下都能正确运行吗?

谢谢,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
是的,我就是这么说的

是的,这就是我上面说的。是的,我看过数据表。

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

谢谢你的指示。

你好,下午好

螺旋形的
离线
最后一次见到:3个月1周前
已加入:2019-04-25 10:22
有什么消息吗?你…吗

有什么消息吗?你认为我应该在产品构建中启用这个标志吗???对我来说,这个问题还没有解决。这充其量只是一个解决办法。

PM\U对话框
在线的
最后一次见到:9分22秒前
工作人员
已加入:2018-02-08 11:03
嗨,螺旋,

嗨,螺旋,

你在ble\u app\u all\u in \u one project中做过其他修改吗?默认的SDK在广告期间使用OTP拷贝的扩展睡眠模式。请检查user\u app\u adv\u start()。如果您有CFG\u DEVELOPMENT\u DEBUG,我假设您应该烧掉OTP。但是,请注意,OTP代表一次性可编程,因此不能多次擦除和重新写入OTP,但只能翻转仍设置为0的位并将其转换为1。

谢谢,下午好