挂起的过程:
1.先进行平台相关的动作,比如清屏,设置AD,usb等.2.保存芯片所有的寄存器值到一个静态数组(就是堆栈中)3.设置io,关闭kitl等4.呼叫OALCPUPowerOff()进行挂起. OALCPUPowerOff()是一个位于startup.s中的汇编函数,它按照下面的流程实现挂起功能5.保存通用寄存器r4-r12,lr到堆栈6. 保存wakeup后的地址,MMU寄存器,进入各模式将sp和lr寄存器保存到内存RAM的某一个位置,这个位置是由config.bib指定保留的.为什么不象之前一样保存到堆栈呢?因为系统唤醒后跳转到reset开始执行,这时候堆栈还没有初始化.这也是poweroff过程复杂的......
阅读全文