跳转至

差异化方案说明

4 差异化方案说明

4.1 V853 休眠唤醒差异介绍

4.1.1 e907 的处理

V853 包含一个riscv 协处理器(e907 ),主要负责一些录像相关驱动及算法的处理。由于其运行在dram 中,系统休眠后它不能运行,因此它不会参与到最终的休

眠唤醒流程中。为了保证休眠唤醒后,e907 不会因为dram 进入自刷新而出现跑飞的情况,我们必须在dram 进入自刷新模式前将其关停,dram 恢复后再让其恢

复运行现场。

为了将e907 关停,我们将e907 作为linux 的一个外设,实现对应驱动的suspend/resume函数。在supend 函数中,通过核间通信机制通知e907 系统即将休眠,

e907 收到消息后保存自己的现场并进入关停状态(WFI)。最终e907 会下电,唤醒时,由cpux 为其上电,然后在resume 函数中,同样发送系统唤醒消息,

e907 通过该消息中断触发自己恢复现场运行。

4.1.2 基于boot 的superstandby 实现

superstandby 的主要特点是可以将主cpu 完全关闭,达到极致休眠功耗的目的。但由于cpu 需要掉电重开,因此一般会借助协处理器或其他硬件实现,例如

cpus, dsp 等。但在v853上,方案上没有上述硬件单元,因此在实现superstandby 时借助了rtc 部分寄存器不会掉电复位的特性。具体流程如下: • 休眠时,先执行kernel 休眠流程,冻结任务,关闭设备,并保存cpu 现场; • 判断如果是superstandby, 则保存C 一个superstandby flag 到rtc 寄存器中,并下电CPU; • 唤醒时,由硬件触发自动cpu 上电,并运行到boot0; • boot0 检查是否设置了superstandby flag,如果未设置,则走冷启动流程; • 如果已设置,则直接在唤醒dram 后,跳转到唤醒地址上运行,进入唤醒流程。 • 执行唤醒流程,完成唤醒。

注:此种方式实现基本不依赖任何硬件模块,仅需要硬件可以在触发后自动上电即可(如开机键)。缺点是,唤醒后系统需要执行boot0, 才能进入唤醒流程,这会

拖慢唤醒速度,不利于快唤醒场景。