计算机启动过程和硬盘接口简单介绍

计算机启动过程和硬盘接口简单介绍

开机流程

  • 按下开机后,CPU的cs:ip 被强制初始化为0xF000 : 0xFFF0 (BIOS的入口地址)
  • 第一条指令:jmp far f000:e05b
  • 接下来BIOS检测和初始化硬件,在0x000~0x3FF处建立中断向量表IVT并填写中断例程。(可通过“int 中断号”来实现相关的硬件调用,也就是对硬件的IO操作)
  • BIOS的最后工作:校验启动盘0盘0道1扇区的内容(必须以0x55和0xaa结尾)
  • 将1扇区(主引导记录MBR)内容加载到0x7c00,再jmp 0:0x7c00

在这里插入图片描述

硬盘控制器端口

让硬盘工作需要通过读写硬盘控制器的端口,硬盘控制器端口就是位于控制器上的寄存器

端口被分为两组,Common Block register 和 Control Block register。

Common Block register:用于向硬盘驱动器写入命令字或者从硬盘控制器获取硬盘状态。

Control Block register:用于控制硬盘工作状态。

端口是按照通道给出的,一个通道上的主,从两块硬盘都用同样的端口。要操作某通道上的某块硬盘,需要通过device寄存器单独指定。

在这里插入图片描述

注:除data寄存器是16位外,其余都是8位

端口介绍:

  • data:用于数据的读取和写入
  • error:读取失败时,会记录失败的信息。写入时,用于指定命令的额外参数
  • sector count: 用于指定待写入或待写入的扇区数。(每成功一次便减1)
  • LBA low:记录LBA(Logical Block Address)地址的0-7位
  • LBA mid:记录LBA的8-15位
  • LBA high:记录LBA的16-23位
  • command:记录命令,identify:0xEC,识别硬盘;read sector:0x20,读扇区;write sector:0x30,写扇区
  • device寄存器和status寄存器如下:

在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值