Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10724995
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:07:58

ARM Linux Booting Sequence (1)
Linux的启动需要由bootloader来引导。
 
bootloader完成system initialization后,会试着将LinuxbzImageinitrd加载memory,接着设定好Linux启动所需的参数,并将program counter指向bzImage所在的地址,将控制权交给Linux
 
bootloader在启动Linux时必需设定的参数主要有3
1. r1 = #0
2. r2 = machine(platform) type id
3. r3 = ATAG start address(physical address)
 
其中ATAG(kernel tagged list)bootloader用来存放要传递给kernel使用的系统参数的listATAG_COREATAG_NONE此两个field分别代表ATAG的起始和结束。
 
另外,在Linux启动前,bootloader必须先将CPU设定在SVC mode并且关掉IRQFIQ;如果系统有MMUdata cache的话,也必将他们关闭。
Stage
x86上,一个instruction4 bytes(在进入保护模式之前是2 bytes)MBR512 bytes所能存放的指令数不多,对于现在功能日益强大的bootloader来说绝对是不够用的(尤其是一些可以执行多重开机的bootloader)。因此,bootloader的工作又被切割成两个stages,来完成OS加载的工作。
 
stage 1:
 
即由MBR上的code所完成。此512 bytecode所能提供的程序功能有限,因此主要的工作只是负责找到stage 2codedisk上的位置并将code读取出来。
 
stage 2:
 
stage 2已不再受限于512 bytes的大小,因此可以让programmer尽情发挥,拓展bootloader的功能。当然,不管如何,bootloader的主要功能仍然是辅助启动OS,因此stage 2code必须能够判读diskfile system,并以此为依据找到OS image所在的位置并loadmemorystage 2执行完后,系统的所有软硬件就完全转移给OS来控制与管里了。
MBR
现行的hard diskfloppy disk标准规格,以每512 bytes为一个sectordisk上第0sector称作MBR(Master Boot Record),是存放bootloader的地方。
 
BIOS在做完POST的程序后,会依照各个开机装置的priority,依序check他们的MBR。假若MBR上的最后2 byte所存放的值为0xaa55此一magic number,表示此装置的MBR所储存的数据为合法的bootloader程序代码,BIOS即将此MBR512 bytes的数据loadmemory0x0000:0x7c000x0000:0x7dff处。接着BIOS设定CS = 0x0000IP = 0x7c00,将控制权专交给bootloader,从此BIOScomputer运行中就完全失去了作用。
Bootloader概述
Bootloader 是计算器系统用来加载OSmemory的程序
 
对一般的x86 PC来说,power onreset后系统将会先到ROM读取并执行BIOSBIOS执行完POST并在memory0x0000:0x00000x0000:0x0400地址上创建好基本的256interrupt vector后,即将512 bytesbootloader标头载入memory0x0000:0x7c0000之处,接着program counter便跳转到0x0000:0x7c0000执行bootloader
 
embedded system里,bootloader经常是直接烧在ROM中,系统在power on后就立即执行bootloader的程序代码。此时,bootloader就必须身兼x86BIOS的工作,先作POST和硬件初始化的程序,再加载OS。因为embedded system的硬件通常较简单阳春,所以bootloader的设计和程序撰写上相对于x86 PCBIOSbootloader而言是较容易的。
阅读(1159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~