zoukankan      html  css  js  c++  java
  • Linux0.12引导启动程序

    1.从系统加电起所执行程序的顺序

    ROM BIOS -----> bootsect.S -----> setup.S -----> head.s -----> main.c

    其中,head.s和main.c都属于system模块

    main属于初始化程序,这里不讲


    2.几个程序的比较

    程序名 位置 语言
    ROM BIOS ROM  
    bootsect.S boot/bootsect.S as86汇编语言
    setup.S boot/setup.S as86汇编语言
    head.s boot/head.s GNU汇编语言
    main.c init/main.c C语言

    3.ROM BIOS的功能

    (1)执行某些系统检测

    (2)在物理地址0处开始初始化中断向量

    (3)将启动设备的第一个扇区读入到绝对地址0x7c00处

    (4)跳转到绝对地址0x7c00处


    4.bootsect.S的功能

    (1)把自己移到0x90000处(本来在0x7c00)

    (2)从磁盘把第2-4个扇区的setup模块读入到0x90200处(紧接着bootsect)

    (3)取磁盘参数表中当前启动引导磁盘的参数

    (4)显示“Loading system”字符串

    (5)system模块加载到0x10000处

    (6)确定要文件系统的设备号

    (7)跳转到setup程序开始处(0x90200)


    5. setup.S的功能

    (1)读取机器系统数据,并保存到0x90000开始的位置

    (2)将system模块从0x10000-0x8ffff移到0x00000-0x7ffff处

    (3)加载idtr和gdtr

    (4)开启A20,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f

    (5)设置CR0(从而进入保护模式)

    (6)跳转到system模块最前面部分的head.s(0x0000)


    6.head.s的功能

    (1)加载各个数据段的寄存器

    (2)重新设置idt

    (3)重新设置gdt

    (4)检测A20是否已真的开启

    (5)测试PC是否含有数学协处理器芯片

    (6)设置管理内存的分布处理机制

    (7)将预先入围在堆栈中的/init/main.c程序的入口地址弹出,运行maina()


  • 相关阅读:
    pytorch_基于cifar创建自己的数据集并训练
    Pytorch_3.8_多层感知机
    Pytorch_3.6_ SOFTMAX回归的从零实现
    Linux(debian)下的Python程序守护进程
    Ubuntu16.04安装OpenCV3.4.3
    Beaglebone black 安装docker
    电脑与虚拟机ping
    Beaglebone升级Python3.7过程
    多图上传预览
    放大镜代码
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559851.html
Copyright © 2011-2022 走看看