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

5个职位/ 0个新
最后发表
Muneyuki)石原
离线
最后看到:3年11个月前
加入:2016-11-25 08:11
辅助引导程序中的扩展睡眠模式

亲爱的对话框支持,

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

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

我如何改变DA14580扩展睡眠模式和唤醒通过正交解码器在二级引导加载程序。

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

渣打银行——>可控硅| = 1 < < 2;

SetBits16 (PMU_CTRL_REG PERIPH_SLEEP 1);//关闭外部电源域
SetBits16 (SYS_CTRL_REG RET_SYSRAM 1);//保留系统内存
SetBits16 (SYS_CTRL_REG OTP_COPY 0);//禁用OTP拷贝
SetBits16 (CLK_16M_REG XTAL16_BIAS_SH_ENABLE 0);//如果设置了sleep,设置BIAS为0

设备:
MT_dialog
离线
最后看到:4个月1周前
工作人员
加入:2015-06-08 34
嗨Muneyuki)石原,

嗨Muneyuki)石原,

我不太明白你想做什么,请允许我给一些澄清的系统和它是如何工作的。设备将进入睡眠状态,这意味着在应用程序没有任何动作的情况下,它将消耗更少的电力。所以正常情况下,设备启动从SPI flash加载图像并开始广告,在广告间隔期间,为了不消耗电力,它进入睡眠状态,而没有必要。当设备为发布广告而唤醒的时间到来时,整个系统启动设备完成发布事件并回到睡眠状态。所以每个ble例子都实现了这个睡眠和唤醒功能,只要睡眠被激活。次要引导加载程序不是一个可启用的fw,它只是一个具有多种功能的fw,其中一个功能是选择在flash中的两个映像中选择哪一个将被下载到系统中以得到执行。

因此,操作如下:设备启动并运行辅助引导加载程序(多映像引导通常用于SUOTA,但可以修改它以在其他条件下选择适当的映像)。辅助引导加载程序选择要加载的映像并将其下载到系统中,下载完成后,设备被重置,启用ble_fw运行(根据应用程序休眠和唤醒)。所以,为了让我理解,你能把你的问题说清楚吗?

由于MT_dialog

Muneyuki)石原
离线
最后看到:3年11个月前
加入:2016-11-25 08:11
亲爱的对话框支持

亲爱的对话框支持

很抱歉信息不足。

我想能够选择图像被启动时,由用户操作重启复位或电源。

我将准备两个不同的图像。例如,img1作为一个正常操作程序运行,而img2作为一个测试程序运行。
如果“key1”被按下,“img1”被加载,当“key2”被按下,“img2”从二级引导加载程序中的SPI flash中加载。
可以用下面的程序实现,但会浪费电力。因此,我想通过“Sleep”和“wakeup(GPIO)”来实现它,以节省电力。

—例如:不是睡眠程序(但电力是浪费的)----
而(1)

if(GPIO_GetPinStatus(GPIO_KEY_1_PORT, GPIO_KEY_1_PIN) == GPIO_KEY_PUSH_STATUS)

Loadimage = IMG1;
打破;

else if(GPIO_GetPinStatus(GPIO_KEY_2_PORT, GPIO_KEY_2_PIN) == GPIO_KEY_PUSH_STATUS)

Loadimage = IMG2;
打破;

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

MT_dialog
离线
最后看到:4个月1周前
工作人员
加入:2015-06-08 34
嗨Muneyuki)石原,

嗨Muneyuki)石原,

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

由于MT_dialog

Muneyuki)石原
离线
最后看到:3年11个月前
加入:2016-11-25 08:11
谢谢你的帮助。

谢谢你的帮助。