写在前面:我关于计算机硬件的总结不多,其实计算机硬件的基础知识是很重要的,真实工作中虽然没有直接用到(软件开发人员),但了解计算机硬件知识,能让你对软件的思考不仅仅停留在表面,还能很快的看出一些问题的症结所在。以后此总结会继续更新并增加新的内容。

一:PC机电源各组输出电压作用

名词解释:


AXT:Advanced Technology Extended的缩写,译为ATX或者ATX主板标准。


AXT是一种主板规格,由因特尔公司在1995年制定。



+12V: 为PC机中的硬盘、光驱、软驱的主轴电机和寻道电机提供电源,并为插槽提供工作电压作为串口设备等电路逻辑信号电平。+12V的电压输出不正常时,会造成硬盘、光驱、软驱的读盘性能不稳定。当电压偏低时,表现为光驱挑盘严重,硬盘的逻辑坏道增加,经常出现坏道,系统容易死机,无法正常使用。偏高时,光驱的转速过高,容易出现失控现象,较容易出现炸盘现象,硬盘表现为失速,飞转。目前,如果+12V供电短缺直接影响PCI-E显卡性能,并且影响到CPU,直接造成死机。



-12V:为串口提供逻辑判断电平,需要电流不大,一般在1A一下,即使电压偏差过大,也不会造成故障,因为逻辑电平的0电平从-3V到-15V,有很宽的范围。



+5V:提供给CPU和PCI、AGP、ISA等集成电路的工作电压,是电脑中主要的工作电源。目前,CPU都使用了+12V和+5V的混合供电。对于它的要求已经没有以前的那么高。只是在最新的IntelATX 12V 2.2版本加强了+5V的供电能力,加强双核CPU的供电。它的电源质量的好坏直接关系着计算机的系统稳定性。现在的主板都是从3.3V 取电,经主板处理驱动CPU,内存及PCI设备。



+3.3V:在以前的AT电源上并没有这一路输出,这是ATX电源专门设置的,为内存提供电源。该电压要求严格,输出稳定,纹波系数要小,输出电流大,要20安培以上。一些中等档次的主板为了安全全都采用大功率场管控制内存的电源供应。不过也会因为内存插反而把这个管子烧毁。使用+2.5V DDR内存和+18V DDR2内存的平台上,主板上都安装了电压变换电路。

二:操作系统启动解释

此处只讲冷启动(Cold Boot/Power On Self Test Activities)


       (1).通电后8284时序发生器开始工作

     (2)总线产生正常信号

     (3)cpu的复位引脚被触发,cpu复位

     (4)DS,ES,SS初始值为0(CPU处于实模式下)

     (5)CS:IP初始值为FFFF:0000(该地址为BIOS的ROM POST的代码)

     (6)跳转到CS:IP指向的地址,开始执行开机自检
下面cpu开始取第一条指令(执行post,开机自检)
     下面是BIOS内固化程序的执行过程

     (7)interrupts are disabled  关中断

     (8)设置cpu标志位,用读写读来测试cpu寄存器

     (9)checksum test of ROM BIOS  检测ROM BIOS的校验和

     (10)initialize DMA(verify/init 8237 timer,begin DMA RAM refresh)
     初始化DMA(校验,初始化8237时钟控制器,开始DMA内存刷新)

     (11)保存复位标志,然后对内存的前32K字节进行读写测试

     (12)初始化8259可编程中断控制器,设置好8个主要的BIOS中断向量(INT 10h-17H) 

     (13)determine and set configuration information
      检测并设置好CMOS配置信息 

     (14) initialize/test CRT controller & test video memory (unless 1234h found in reset word) 
     初始化/测试CRT控制器,测试显存(除非在复位字的位置找到1234h) 

     (15)test ~8259~ Programmable Interrupt Controller 
     测试8259可编程中断控制器 

     (16)test Programmable Interrupt Timer (~8253~) 
     测试8253可编程时钟中断控制器 

     (17)reset/enable keyboard, verify scan code (AAh), clear keyboard, check for stuck keys, setup interrupt vector lookup table 
     复位、激活键盘,校验扫描码,清除键盘缓冲区,检查是否有卡住的键,设置中断查找表 

     (18)hardware interrupt vectors are set 
     设置硬件中断向量

     (19)test for expansion box, test additional RAM
      测试扩展设备,测试扩充内存

     (20)read/write memory above 32K (unless 1234h found in reset word) 
     读写测试32K字节以上的内存(除非在复位字的位置找到1234h) 

     (21)addresses C800:0 through F400:0 are scanned in 2Kb blocks in search of valid ROM. If found, a far call to byte 3 of the ROM is executed. 
     以2K字节大小的块为单位,从c800:0到f400:0扫描,查找有效映射的ROM。找到后,对ROM的第3个字节进行远程调用。 

     (22)test ROM cassette BASIC (checksum test) 

     检测ROM BASIC(校验和测试,现在的BIOS已取消ROM BASIC了……) 
     (23) test for installed diskette drives & ~FDC~ recalibration & seek 
     检测安装了的硬盘驱动器、软盘控制器。

     在这里寻找一个启动设备,这些设备包括Floppy Disk(A:),或者Hard Disk(C:),还可以包括CD-ROM Driver或者其它设备。
    (24) test printer and RS-232 ports. store printer port addresses at 400h and RS-232 port addresses at 408h. store printer time-out values at 478h and Serial time-out values at 47Ch.

     检测打印机口和RS-232串口。把打印口地址保存在内存的400h,串口地址保存在408h。打印机超时值保存在478h,串口超时值保存在47Ch。 
     (25) NMI interrupts are enabled 
     激活NMI中断 

     (26)perform ~INT 19~ (bootstrap loader), pass control to boot record or cassette BASIC if no bootable disk found 
     执行INT 19h(引导装载程序),把控制权转交给引导程序
 
当找到响应的启动设备之后,BIOS将会查找Boot信息时能后续开始OS的启动过程。如果它找到了一个Hard Disk,它将会查找一个位于Cylinder 0, Head 0, Sector 1的Master Boot Record(硬盘的第一个扇区),如果它找到的是Floppy Disk,它也会读区软盘的第一个扇区。 如果找不到任何启动设备,系统将会显示一条错误信息,然后冻结系统。如果找到了响应的启动设备,BIOS会将读到的扇区放在内存7C00h的位置,并跳转到那里执行它。从此以后,就有硬件启动阶段进入了OS启动阶段。

     (27)~WARM BOOT~ procedure is now executed
开始执行热启动

到这里基本的硬件启动和初始化都已经完成了,剩下的就是OS的bootloader工作了。