请选择 进入手机版 | 继续访问电脑版

华客硬盘数据恢复论坛,华客数据恢复,北京数据恢复论坛,数据恢复培训,RAID服务器数据恢复论坛,华客400-065-1013

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4006|回复: 12

基础知识-固件理论

[复制链接]

253

主题

367

帖子

2万

积分

超级版主

Rank: 8Rank: 8

积分
20363
QQ
发表于 2018-2-26 13:17:48 | 显示全部楼层 |阅读模式
本帖最后由 L3777 于 2018-2-26 13:22 编辑

基础知识-固件理论
固件理论基础


一、硬盘是一台微型计算机
一直以来,硬盘的发展趋势是容量越来越大,技术越来越先进,功能也越来越复杂。现代硬盘早已不是简单
的外设,而是复杂的智能设备。实际上,现在的硬盘拥有完整的 CPU 和内存,固件上也采用了类似于操作系统
的分层次的复杂管理程序,因此完全可以看做一台微型计算机。只不过由于硬盘是专用于数据存储用途,不需要
连接像传统 PC 一样的键盘和鼠标进行操作,因此可以看做是一台专门用途的计算机。


二、硬盘的固件结构
由于硬盘是计算机系统,所以要使得它运行起来就必须要有软件。这里的“软件”定义的范畴不同于当我们
在 PC 机上使用硬盘时,我们在硬盘中存储的用户软件。使得硬盘正确运行的内部软件对上层设备和操作系统来
说是透明的,为了区别于用户软件,我们通常把它们称为“固件”。固件是硬盘内部的软件,由硬盘自己的 CPU
来运行。所以,如果我们将硬盘看做一台独立的计算机的话,硬盘的固件就好比 Windows 操作系统,以及上面安
装的一系列程序。
由于固件是最底层的软件,所以依赖于具体的硬件。不同的硬盘厂商使用的固件结构各不相同,就好比 PC
机上 Windows 和 Linux 操作系统的区别一样。但是,各种固件都有一些共同点,使得我们可以将固件大体分为几
个部分,大部分厂商硬盘的固件系统,都会大致遵循这样的设计原则。一般来说,可以将硬盘固件分为如下几个
部分:
  1.伺服子系统。当我们为 PC 机安装打印机、扫描仪、网卡等设备的时候,我们是不是都要安装对应的
         打印机驱动程序、扫描仪驱动程序和网卡驱动程序等。计算机需要有驱动程序,才能驱动硬件进行工
         作。对硬盘来说也是这样。对于硬盘,主轴电机和磁头组件等都是重要的硬件,它们也是需要驱动程
         序才能工作的。固件中的伺服子系统,就可以通俗的理解为磁头和电机驱动程序。伺服子系统驱动电
         机旋转,也控制磁头进行寻道。通常,它需要伺服配置参数才能进行工作。如果这一部分固件损坏,
         很明显,就会造成硬盘的电机和磁头工作不正常。由于这一部分固件是最接近硬件层的,因此伺服固
         件损坏有时候看起来非常像是硬盘的硬件损坏(比如电机不转或者磁头敲头)。
       2.读写子系统。在大多数硬盘的固件设计中,通常在伺服子系统都是使用最底层的物理参数来驱动磁头,
         这时候还没有磁道的概念。而读写子系统的工作,就是建立磁道、扇区的概念,为上层提供 CHS 和
         LBA 寻址方式。读写子系统非常复杂,通常有两种最重要的数据是读写子系统正常工作所必要的,它
         们分别是 ZONE 表(也叫区域分配表)和缺陷表(比如 G-List 和 P-List),可以统称为读写参数。
       3.主固件(Main FW)。这是固件中承担综合管理和任务调度的部分,类似于操作系统的核心。它使得固
         件的各部分有效结合在一起并协同工作。
       4.各种功能例程。这一部分程序多种多样,就好比是电脑中安装的应用程序那样。常见的有低级格式化
         例程、自检诊断例程等等,它们由主固件进行调用。
       5.Interface / Shell 程序。这是固件最顶层的部分,负责 SATA 接口通信,或者终端 COM 接口通信等工作。
        它们是硬盘与主机通信的桥梁。


固件的设计是分层的,通常上层依赖于下层的功能,而下层又为上层提供服务。底层的固件损坏,会导致上层无法正常工作,而固件的不同部分损坏,也会表现为不同的故障现象。因此理解固件层次结构,有助于理解硬盘固件故障的机制,并快速定位故障点。硬盘的固件层次大体上可以表示为下图:




三、固件的物理存储位置
早期的硬盘通常将固件完全存储在 PCB 板上的 ROM 芯片中,后来由于硬盘越来越复杂,固件越来越大,ROM
芯片无法再存储完整的固件。现代硬盘通常将固件分为两部分进行存储:将最重要的基本固件存放在 PCB 板上
的 ROM 芯片中,而将外围部分存储在硬盘盘片上的系统区(又叫服务区)磁道中。硬盘在启动时,ROM 中的基
本固件最先启动,然后再从服务区磁道中载入外围部分,这样整个固件就启动完成了。这样设计后,盘片上的磁
道就被划分为用户区和系统区,用户区磁道是操作系统可以访问的,而系统区磁道对操作系统则是透明的。



四、硬盘固件的启动流程
和 PC 机开机启动一样,硬盘也有一个启动过程,那么硬盘从上电到开始工作,会经历哪些步骤呢?下面我
们从固件的角度来进行讲解。
1. 上电后,Boot Loader 首先取得控制权。Boot Loader 是一段固化在硬盘主控芯片中的程序,在嵌入式设备
中,通常 Boot Loader 负责启动系统,并将 ROM 中的程序载入内存。在大多数资料中,通常将硬盘的
ROM 类比为 PC 机的主板 BIOS。实际上,从计算机体系结构的观点来看,硬盘中真正行使主板 BIOS
功能的应该是 Boot Loader 程序——在上电最开始就获得控制权,执行系统最早期的初始化工作,并负责
载入“操作系统”。不过 Boot Loader 比主板 BIOS 要简单得多,它最主要的任务就是将 ROM 芯片中的代
码载入内存,然后转交控制权到 ROM 代码。
2. ROM 程序被载入后,主固件就开始执行自己的启动过程。最先被激活的是伺服子系统。此时主轴电机开
始旋转,磁头开始飞行,并做好寻道准备。
3. 接下来读写子系统被激活。此时 ZONE 区域分配表被加载,主固件会先初始化完成一个“最小化读写子
系统”。最小化读写子系统已经具备访问硬盘物理磁道和盘片上的服务区的能力,但还不够访问用户扇区,
因为此时 P-List 表或者地址译码器模块还没有加载。
4. 然后主固件会调用读写子系统访问盘片上的服务区磁道,将服务区磁道上的外围固件加载到内存。这些
外围固件通常包含 APP code,地址译码器模块和 SMART 模块等,都是较顶层的功能。当地址译码器模
块载入完毕后,最小化读写子系统就变成了完整的读写子系统,具备了访问用户扇区和提供线性 LBA 地
址转换的能力。
5. 当所有固件载入完毕后,此时硬盘就完成了启动,进入就绪状态,等待主机发来的命令。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

18

帖子

186

积分

新手上路

Rank: 1

积分
186
发表于 2018-7-22 18:07:29 | 显示全部楼层
原理讲的透透的
回复 支持 反对

使用道具 举报

0

主题

29

帖子

1120

积分

中级会员

Rank: 3Rank: 3

积分
1120
发表于 2019-4-26 17:11:19 | 显示全部楼层
  学习一下。
回复 支持 反对

使用道具 举报

0

主题

186

帖子

540

积分

华客高级培训

Rank: 8Rank: 8

积分
540
发表于 2019-7-19 17:41:28 | 显示全部楼层
学习了
回复

使用道具 举报

0

主题

11

帖子

222

积分

新手上路

Rank: 1

积分
222
发表于 2019-7-20 10:36:12 | 显示全部楼层
谢谢分享,我们新手学习一下
回复 支持 反对

使用道具 举报

3

主题

9

帖子

183

积分

新手上路

Rank: 1

积分
183
发表于 2020-1-3 17:40:58 | 显示全部楼层
学习学习
回复

使用道具 举报

0

主题

20

帖子

294

积分

游客

积分
294
发表于 2020-7-9 21:34:06 | 显示全部楼层
新手小白,先学习了
回复 支持 反对

使用道具 举报

匿名  发表于 2020-12-10 19:27:49
学习了使用东西
回复 支持 反对

使用道具

1

主题

8

帖子

119

积分

新手上路

Rank: 1

积分
119
发表于 2021-1-31 09:19:39 | 显示全部楼层
学习了,好东西
回复 支持 反对

使用道具 举报

0

主题

186

帖子

540

积分

华客高级培训

Rank: 8Rank: 8

积分
540
发表于 2021-8-20 06:24:29 | 显示全部楼层
学习中谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|华客硬盘数据恢复论坛,华客数据恢复,北京数据恢复论坛,数据恢复培训,RAID服务器数据恢复论坛,华客400-065-1013 ( 京ICP备09067925号-2

GMT+8, 2022-9-29 02:26 , Processed in 0.357558 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表