请问如何编程实现对CMOS的读写操作?最好能告知CMOS内各项的物理地址,多谢了!

解决方案 »

  1.   

    only port access, 70h and 71hhttp://asp.6to23.com/nowcan/tech/cmos.htm
      

  2.   

    but in winNT, you must use driver to access hardware port.
    In user mode, no way.
      

  3.   

    读写端口用winio,CMOS内容说明NowCan的主页上有,下面是读写CMOS的一些问题
    http://expert.csdn.net/Expert/topic/2059/2059438.xml?temp=.9067346
      

  4.   

    用winio可在所有 window 系统下读写端口在计算机系统中,对CMOS中数据的读写是通过两个I/O端口来实现的,其中,端口70H是一个字节的只写端口,
    用它来设置CMOS中的数据地址;而端口71H是用来读写端口70H设置的CMOS地址中的数据单元字节内容。CMOS数据保存在地址为00-7F的共128个字节中。在CMOS的128个字节单元中,00H-0FH字节单元中的数据随机性
    太强,不易作为密钥。1BH~2DH,34H~3FH,40H~7FH是CMOS的保留单元。不同的BIOS版本对此保留单元设置
    不一样。2EH、2FH单元中存放的是10H~2DH单元中各字节的校验和。系统每次引导时要读取CMOS信息,
    同时还要检查10H~2DH单元中的各字节的校验和是否与2EH、2FH单元中的数据相同,不同则提示CMOS中数据
    有错。CMOS的10H~2DH单元中内容涉及到软盘、硬盘、内存、显示卡等最基本的硬件配置。CMOS内容对照
    地址 内容 地址 内容 地址 内容 地址 内容 
    00h Time - Seconds 20h Reserved 40h Extended CMOS 60h User Password 
    01h Alarm - Seconds 21h Reserved 41h Extended CMOS 61h User Password 
    02h Time - Minutes 22h Reserved 42h Extended CMOS 62h Extended CMOS 
    03h Alarm - Minutes 23h Reserved 43h Extended CMOS 63h Extended CMOS 
    04h Time - Hours 24h Reserved 44h Extended CMOS 64h Extended CMOS 
    05h Alarm - Hours 25h Reserved 45h Extended CMOS 65h Extended CMOS 
    06h Date - Day of the week 26h Reserved 46h Extended CMOS 66h Extended CMOS 
    07h Date - Day 27h Reserved 47h Extended CMOS 67h Extended CMOS 
    08h Date - Month 28h Reserved 48h Extended CMOS 68h Extended CMOS 
    09h Date - Year 29h Reserved 49h Extended CMOS 69h Extended CMOS 
    0Ah Status Register A 2Ah Reserved 4Ah Extended CMOS 6Ah Extended CMOS 
    0Bh Status Register B 2Bh Reserved 4Bh Extended CMOS 6Bh Extended CMOS 
    0Ch Status Register C 2Ch Reserved 4Ch Extended CMOS 6Ch Extended CMOS 
    0Dh Status Register D 2Dh Reserved 4Dh Extended CMOS 6Dh Extended CMOS 
    0Eh Diagnostic Status 2Eh CMOS Checksum (high byte) 4Eh Extended CMOS 6Eh Extended CMOS 
    0Fh Shutdown Status 2Fh CMOS Checksum (low byte) 4Fh Extended CMOS 6Fh Extended CMOS 
    10h A; 30h Extended Memory (high byte) 50h Extended CMOS 70h Extended CMOS 
    11h Reserved 31h Extended Memory (low byte) 51h Extended CMOS 71h Extended CMOS 
    12h 0 32h Date - Century 52h Extended CMOS 72h Extended CMOS 
    13h Reserved 33h Power On Status 53h Extended CMOS 73h Extended CMOS 
    14h Equipment Installed 34h Reserved 54h Extended CMOS 74h Extended CMOS 
    15h Base Memory (high byte) 35h Reserved 55h Extended CMOS 75h Extended CMOS 
    16h Base memory (low byte) 36h Reserved 56h Extended CMOS 76h Extended CMOS 
    17h Extended Memory (high byte) 37h Reserved 57h Extended CMOS 77h Extended CMOS 
    18h Extended Memory (low byte) 38h Reserved 58h Extended CMOS 78h Extended CMOS 
    19h 0 (C:) Hard Disk Type 39h Reserved 59h Extended CMOS 79h Extended CMOS 
    1Ah 1 (D:) Hard Disk Type 3Ah Reserved 5Ah Extended CMOS 7Ah Extended CMOS 
    1Bh Reserved 3Bh Reserved 5Bh Extended CMOS 7Bh Extended CMOS 
    1Ch Supervisor Password 3Ch Reserved 5Ch Extended CMOS 7Ch Extended CMOS 
    1Dh Supervisor Password 3Dh Reserved 5Dh Extended CMOS 7Dh Extended CMOS 
    1Eh Reserved 3Eh Reserved 5Eh Extended CMOS 7Eh Extended CMOS 
    1Fh Reserved 3Fh Reserved 5Fh Extended CMOS 7Fh Extended CMOS
      

  5.   

    多谢帮助,我需要在Vxworks下做一个修改CMOS时间的函数,我从相应的时间单元里读出的值好像有问题,例如从00h(seconds)读出的值累加到89才会清零, CMOS内各时间单位内存储时间的格式究竟怎样?还有年和世纪这两项的用法请指教.
      

  6.   

    Vxworks我没试过,不过在windows下,我用winio自带的例子试过,先写00h到70 port,在从71 port读,好像没有问题呀,你可以去下载个winio试试
      

  7.   

    ASM,汇编程序嵌入到程序中,可以直接读写