辅助引导程序中的延长睡眠模式

5个职位/ 0个新
最后发表
Muneyuki)石原
离线
最后看到:3年10个月前
加入: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);//保留系统RAM
SetBits16 (SYS_CTRL_REG OTP_COPY 0);//关闭OTP拷贝
SetBits16 (CLK_16M_REG XTAL16_BIAS_SH_ENABLE 0);// Set BIAS to '0' if sleep has been decided

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

嗨Muneyuki)石原,

我不太明白你想做什么,请允许我解释一下这个系统和它是如何工作的。事实上,该设备将休眠,意味着它消耗更少的电力,没有从应用程序的行动。所以通常设备启动时从SPI flash中加载图像并开始发布,在发布间隔之间它会进入休眠状态,以避免在没有必要的情况下消耗电力。当设备唤醒以进行广告时,整个系统被启动,设备完成广告事件,然后回到睡眠状态。所以只要睡眠被激活,每个ble例子都实现了睡眠和唤醒功能。辅助引导加载程序不是一个启用的fw,它只是一个fw,它有多个功能,其中一个功能是选择哪两个图像的flash将下载到系统ram中,以便执行。

因此,操作如下,设备上电并运行辅助引导加载程序(SUOTA通常使用多个映像启动,但在其他条件下可以修改它以选择适当的映像)。辅助引导加载程序选择加载哪个映像并将其下载到syram中,下载完成后设备被重置,启用ble_enabled的fw运行(根据应用程序休眠和唤醒)。所以,你能不能把你的问题说清楚,以便我理解?

由于MT_dialog

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

亲爱的对话框支持

很抱歉缺少信息。

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

我将准备两个不同的图像。例如,img1作为一个正常的操作程序运行,img2作为一个测试程序运行。
如果按下“key1”,“img1”将被加载,当按下“key2”时,“img2”将从次级引导加载程序中的SPI flash中加载。
它可以通过下面的程序实现,但是会浪费电力。所以,我想实现它与“睡眠”和“唤醒(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_port, gpio_key_pin) == GPIO_KEY_PUSH_STATUS)

Loadimage = IMG2;
打破;

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

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

嗨Muneyuki)石原,

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

由于MT_dialog

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

谢谢你的帮助。