Linux启动时会执行很多初始化工作,而且每次启动时的结果是相同的,可以把这些初始化工作完成之后的
某一时刻的CPU的状态 以及 RAM中的相关数据保存到内部存储中,在BootLoader启动时检测内部存储里有没有
CPU/RAM 的有效数据。
如有,就把相关数据搬运到RAM中,并恢复CPU到那一时刻的状态,然后PC指针跳到下一条指令执行,这
样就可以省却了每次启动时的初始化工作,大大节省启动时间。如果没有或者数据被破坏,就按正常流程执行,
再存储数据到内部存储中。
其中的关键是怎样保存数据和恢复数据。先用ADS类工具制作好一个程序用于完成这个工作,现在ARM芯片
中都会有内部sram,在BootLoader启动时把这个程序搬运到 sram 中(Linux初始化及之前都不会被用到的那段空间
),然后检查是否存储有CPU及RAM的状态数据。如无,则按正常流程执行,Linux运行到某一时刻时跳转到 sram
中的程序,由些程序保存CPU状态与RAM相关数据到内部存储里,即完成了保存数据的工作。然后再返回到Linux
继续执行。如有,BootLoader跳转到 sram 中的程序,再由到此程序恢复CPU状态及RAM的相关数据,然后回到
Linux 那一时刻后的下一条指令继续执行。
保存与恢复数据的程序要根据ARM芯片的硬件资源编写,通常是由IC厂家提供,主要是对p15的操作。
阅读(4980) | 评论(0) | 转发(0) |