Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181872
  • 博文数量: 22
  • 博客积分: 1069
  • 博客等级: 准尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-01 13:40
文章分类

全部博文(22)

文章存档

2015年(4)

2011年(2)

2010年(12)

2009年(4)

我的朋友

分类: 嵌入式

2015-04-30 17:41:15

        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) |
0

上一篇:因OTA包中的文件名异常而造成更新失败

下一篇:没有了

给主人留下些什么吧!~~