打印
[嵌入式linux]

Linux 上电到启动

[复制链接]
844|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
千岁寒|  楼主 | 2018-8-23 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • PC机加电 ROM BIOS 自检。
  • BIOS 加载 bootsect 到内存 0x7C00 处,然后跳转 执行bootsect。
  • bootsect将自身移动到 0x90000 处,并将 setup 加载到 0x902000 处;调用BIOS中断并显示 loading system ......;然后再将 system则加载到 0x10000 处(前提 system 的长度不会超 0x80000);确定根文件系统设备号。
  • 跳转到 0x902000 执行 setup。
  • setup 利用 BIOS 中断读取机器系统数据,并将这些数据保存到 0x90000 处。
  • 然后 将 system 从 0x10000~0x8FFFF 移动到内存绝对地址 0x0000 处
  • 设置CR0等寄存器并进入32位的保护模式,跳转到 0x0000 执行system.head
  • head(采用AT&T汇编)加载各个数据段寄存器并重新设置中断描述符表。
  • IDT、GDT 以及 LDT 被加载,处理器和协处理器也已确认,分页工作也设置好了(页目录表被放在绝对地址0x0000,会覆盖掉head程序段)。
  • 最后利用返回指令将预先放置在堆栈中的/init/main.c 程序的入口地址弹出,即实现调用 init/main.c 中的 main()程序。——— 进入C的世界!!!


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

244

帖子

4

粉丝