• CMOS and BIOS


    1,cmos简介。
       cmos是主板上一块可读写的RAM芯片。用途:主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。cmos芯片是由一块纽扣电池供电。因此在关机状态内部信息也不会丢失。

    2,cmos所在的端口。    cmos芯片是挂在cpu的io空间上的.(x86体系是独立编址的)。cmos拥有两个端口号分别是70h和71h

     端口号 权限  长度 作用
     70h 不可读可写  8bit  用它来设置cmos中的数据地址
     71h  可读可写  8bit  用它来设置70h端口地址中的值

    ----------------------------------------------------------------------------------------------

    3,cmos中的数据地址对照表。(供编程时查)

    地址  数据 备注
     00H  Time - Seconds  硬件时间的秒
     01H  Alarm - Seconds  
     02H  Time - Minutes  硬件时间的分
     03H  Alarm - Minutes  
     04H  Time - Hours  硬件时间的时
     05H  Alarm - Hours  
     06H  Date - Day of the week  
     07H  Date - Day  
     08H  Date - Month  
     09H  Date - Year 29h  
     0AH  Status Register A  
     0BH  Status Register B  
     0CH  Status Register C  
     0DH  Status Register D  
     0EH  Diagnostic Status  
     0FH  Shutdown Status  
     10H  A:  
     11H  Reserved  
     12H  0  
     13H  Reserved  
     14H  Equipment Installed  
     15H  Base Memory (high byte)  
     16H  Base memory (low byte)  
     17H  Extended Memory (high byte)  
     18H  Extended Memory (low byte)  
     19H  0 (C:) Hard Disk Type  
     1AH  1 (D:) Hard Disk Type  
     1BH  Reserved  
     1CH  Supervisor Password  
     1DH  Supervisor Password  
     1EH ~ 2DH  Reserved  
     2EH  CMOS Checksum (high byte)  
     2FH  CMOS Checksum (low byte)  
     30H  Extended Memory (high byte)  
     31H  Extended Memory (low byte)  
     32H  Date - Century  
     33H  Power On Status  
     34H~3FH  Reserved  
     40H~5FH  Extended CMOS  
     60H  User Password  
     61H  User Password  
     62H~7FH  Extended CMOS  
         

    ----------------------------------------------------------------------------------------------

    4,对cmos编程实例(linux下读取cmos中的硬件时间,也可以在DOS下写汇编实现)

    1.#include <stdio.h>
    
    2.#include <sys/io.h>
    
    3.
    
    4.unsigned char cmos_read(unsigned char addr)
    
    5.{
    
    6.    unsigned char tmp = 0;
    
    7.    iopl(3);
    
    8.    outb(addr,0x70);
    
    9.    tmp = inb(0x71);
    
    10.    iopl(0);
    
    11.    return tmp;
    
    12.}
    
    13.
    
    14.
    
    15.int main(void)
    
    16.{
    
    17.    printf("seconds = %x
    ",cmos_read(0));
    
    18.    printf("minute = %x
    ",cmos_read(2));
    
    19.    printf("hour = %x
    ",cmos_read(4));
    
    20.    system("date");
    
    21.    return 0;
    
    22.}

    思考:为什么此时cmos中的时间分钟秒钟和系统时间相同,而唯独小时相差8个小时呢?
               这问题涉及到UTC和时区的问题了。北京时间=UTC+8

    5,bios简介
                  bios又称为基本输入输出系统。是主板上的一个ROM芯片。主要保存着基本输入输出程序,系统
    信息设置,开机上电自检程序和系统启动自举程序等。

    6,bios和cmos的区别与联系?
       我用个比喻吧,bios相当于“代码段”,cmos相当于“数据段”。
         6.1,bios是只读,cmos既可以读也可以写。(区别)
         6.2,BIOS中的系统设置程序是完成CMOS参数设置的手段;
                 CMOSRAM既是BIOS设定系统参数的存放场所。(联系)

    7,bios程序实现的基本功能。
             一是BIOS中断服务程序,即微机系统中软件与硬件之间的一个可编程接口,主要用于 程序软件功能
    与微机硬件之间实现衔接。操作系统对软盘、硬盘、光驱、键盘、显示器等外围设备的管理,都是直接建立
    在BIOS系统中断服务程序的基础上,操 作人员也可以通过访问INT5、INT13等中断点而直接调用BIOS中断
    服务程序。
             二是BIOS系统设置程序,前面谈到微机部件配置记录是放在一块可读 写的CMOSRAM芯片中的,
    主要保存着系统基本情况、CPU特性、软硬盘驱动器、显示器、键盘等部件的信息。在BIOSROM芯片中装
    有“系统设置程 序”,主要用来设置CMOSRAM中的各项参数。这个程序在开机时按下某个特定键即可进入
    设置状态,并提供了良好的界面供操作人员使用。事实上,这个设置 CMOS参数的过程,习惯上也称为“
    BIOS设置”。
             第三是POST上电自检程序,微机按通电源后,系统首先由 POST(PowerOnSelfTest,上电自检)程序
    来对内部各个设备进行检查。通常完整的POST自检将包括对CPU、640K基本内存、1M以 上的扩展内存、
    ROM、主板、CMOS存贮器、串并口、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系
    统将给出提示信息或鸣笛警告。
             第四 为BIOS系统启动自举程序
    ,系统在完成POST自检后,ROMBIOS就首先按照系统CMOS设置中
    保存的启动顺序搜寻软硬盘驱动器及CD—ROM、网 络服务器等有效地启动驱动器,读入操作系统引导记录,
    然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。

  • 相关阅读:
    《算法图解》——第六章 广度有限搜索
    《算法图解》——第一章 算法简介
    《算法图解》——第二章 选择排序
    go-json处理的问题
    Go断言
    Go Example--格式化字符串
    Go Example--strings
    Go Example--组合函数
    Go Example--defer
    Go Example--panic
  • 原文地址:https://www.cnblogs.com/aomi/p/3443344.html
Copyright © 2020-2023  润新知