辅助引导加载程序中的扩展睡眠模式

5个职位/0个新职位
最后一篇文章
石原慕介
离线
最后一次见到:3年10个月前
已加入:2016-11-25 08:11
辅助引导加载程序中的扩展睡眠模式

亲爱的Dialog支持人员,

我们将使用DA14580+外部闪存。

我想切换到延长睡眠模式,一旦电压被应用到电源,并唤醒和负载img1或img2用户按下键。

如何更改DA14580扩展睡眠模式并通过辅助引导加载程序中的正交解码器唤醒。?

我试图修改寄存器如下,但似乎它没有改变到睡眠模式。

SCB->SCR |=1<<2;

SetBits16(PMU\u CTRL\u REG,PERIPH\u SLEEP,1);//关闭外围电源域
SetBits16(SYS_CTRL_REG,RET_SYSRAM,1);//保留系统RAM
SetBits16(系统控制寄存器,OTP复制,0);//禁用OTP复制
SetBits16(CLK_16M_REG,XTAL16_BIAS_SH_ENABLE,0);//如果已决定睡眠,则将“偏差”设置为“0”

设备:
MT\u对话框
离线
最后一次见到:3个月2天前
工作人员
已加入:2015-06-08 11:34
嗨,石原慕介,

嗨,石原慕介,

我不太明白你想做什么,请允许我给一些关于系统和它是如何工作的澄清。设备将进入睡眠状态这一事实意味着,在应用程序没有动作的情况下,它消耗的电能更少。因此,通常情况下,设备启动时会从SPI flash加载一个图像并开始广告,在广告间隔期间,它会进入休眠状态,以便在不需要时不消耗电源。当设备需要唤醒以进行广告时,整个系统通电设备完成广告事件并返回睡眠状态。因此,只要睡眠被激活,每个ble示例都会实现这个睡眠和唤醒功能。辅助引导加载程序不是启用ble的fw,它只是一个具有多个功能的fw,其中一个功能是选择flash中的两个映像中的哪一个将下载到系统内存中以便执行。

因此,操作如下,设备通电并运行辅助引导加载程序(多映像引导通常用于SUOTA,但在其他条件下可以修改以选择适当的映像)。辅助引导加载程序选择要加载的映像并将其下载到sysram,下载完成后,重置设备并运行启用ble\u的fw(根据应用程序休眠和唤醒)。那么,你能澄清一下你的问题吗,以便我理解?

谢谢你的对话

石原慕介
离线
最后一次见到:3年10个月前
已加入:2016-11-25 08:11
亲爱的对话支持

亲爱的对话支持

抱歉,信息不全。

我想能够选择图像引导用户操作时重新启动复位或电源。

我将准备两个不同的图像。例如,img1作为一个正常的操作程序运行,img2作为一个测试程序运行。
如果按下“key1”,则加载“img1”,当按下“key2”,则从辅助引导加载程序中的SPI闪存加载“img2”。
可以用下面的程序来实现,但是浪费了电能,所以我想用“Sleep”和“wakeup(GPIO)”来实现,省电。

---例句:不是睡眠程序(但电源浪费了)----
而(1)
{
if(GPIO_GetPinStatus(GPIO_KEY_1_PORT,GPIO_KEY_1_PIN)==GPIO_KEY_PUSH_STATUS)
{
Loadimage=IMG1;
中断;
}
else if(GPIO\ U GetPinStatus(GPIO\ U KEY\ U 2\ U PORT,GPIO\ U KEY\ U 2\ U PIN)==GPIO\ U KEY\ U PUSH\ U STATUS)
{
Loadimage=IMG2;
中断;
}
}

-------------------

MT\u对话框
离线
最后一次见到:3个月2天前
工作人员
已加入:2015-06-08 11:34
嗨,石原慕介,

嗨,石原慕介,

正如我提到的,辅助引导加载程序不是一个支持ble的fw或实现sleep,ARM继续运行,所有外围设备都打开了。从一个可启用的设备获取休眠机制并将其连接到引导加载程序fw是一件没有实现的事情,但这是合理的。您可以尝试从arch_main.c文件中的main_func()函数模拟到辅助引导加载程序(包括WFI())的主循环中的机制,以便设备运行一次,然后在低功耗状态下等待WFI()。您还必须移动唤醒控制器驱动程序并进行设置,以便从预定义的GPIO唤醒设备。

谢谢你的对话

石原慕介
离线
最后一次见到:3年10个月前
已加入:2016-11-25 08:11
谢谢你的帮助。

谢谢你的帮助。