如何知道CMOS RAM的容量??

shaotine_wu 2010-06-17 10:13:41
如何知道CMOS RAM的容量??
...全文
700 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaotine_wu 2010-07-03
  • 打赏
  • 举报
回复
再次感谢各位的热心帮忙!谢谢!!
我想可以结贴了!分有点少,希望大虾们不要介意!下次补上!
火雲邪神 2010-07-02
  • 打赏
  • 举报
回复
ding ding ding ding ding
辰岡墨竹 2010-07-01
  • 打赏
  • 举报
回复
终于考完试了,看着帖子好像还没结的样子。DelphiGuy果然是牛人,大概看了一下博客,很多年前就看过Award BIOS源码了,还在论坛里跟几个人争论的热火朝天。年龄却比我大不了多少岁,真是太厉害了。想必中学时就自己看完i386原版资料了吧。我这里先承认自己有些肤浅。
但是我对CMOS RAM的看法还有一丝“怨念”,请您指教一下。我的看法是最开始ESCD没有正式定义的时候,多数厂商是放到扩展CMOS中的,在一些老的PC资料大全里也看到CMOS里存储的就是ESCD。而且曾经有一段时间(CIH大闹之后几年),很多整机厂商热衷于BIOS写保护,甚至是硬件实现的。如果这样的话岂不是无法更新ESCD了,为什么CMOS Setup却设置却能正确保存?而且Windows 95之后很多系统(尤其是NT和Linux)都不会理睬BIOS里的很多配置信息了,启动之后直接覆盖了BIOS的中断向量,结果现在的BIOS更新程序和CBROM中似乎都淡化了ESCD Block。而且我觉得Award源码里对具体芯片组、PCI组态之类的都是省略的。到时候需要OEM厂商自己添加代码。CMOS的Extended部分是不是用来保存STR状态的?
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 bokutake 的回复:]

我的看法是最开始ESCD没有正式定义的时候,多数厂商是放到扩展CMOS中的,在一些老的PC资料大全里也看到CMOS里存储的就是ESCD。
[/Quote]

这是非常有可能的,否则各厂商就没有必要扩展CMOS空间了,后来需要存储的数据太多了,空间不够用,各厂商的扩展方法又不通用,就搞出个ESCD规范。

[Quote=引用 30 楼 bokutake 的回复:]
而且曾经有一段时间(CIH大闹之后几年),很多整机厂商热衷于BIOS写保护,甚至是硬件实现的。如果这样的话岂不是无法更新ESCD了,为什么 CMOS Setup却设置却能正确保存?
[/Quote]

我估计BIOS写保护只保护Flash ROM的一部分地址,存储ESCD那部分不保护,类似内存控制器对一部分内存地址空间进行写保护一样。不过也不一定,有些老机器设置了BIOS写保护之后再修改BIOS Setup,每次开机都显示“updating ESCD...”,似乎确实写不进去了。CMOS数据是ESCD的一小部分,BIOS是在内存中配置好ESCD再写回Flash ROM和CMOS RAM的,所以即便ESCD更新不了,CMOS RAM那部分数据还是可以保存的。

  • 打赏
  • 举报
回复
可以访问,但是只能访问前64字节,这个限制有点莫名其妙。
_Haibara_Ai_ 2010-06-22
  • 打赏
  • 举报
回复
windows下用驱动程序访问正常
和DOS下数据一致

普通程序在WINDOWS下访问~~貌似有权限问题
shaotine_wu 2010-06-22
  • 打赏
  • 举报
回复
恩,自己动手在纯DOS下试验了下,呵呵,确实在纯DOS下是可以完全读出128字节的
感谢各位大虾的热心帮助!!!!!特别要感谢DelpiGuy!这次分给的有点少,下次一定多给!呵呵
shaotine_wu 2010-06-22
  • 打赏
  • 举报
回复
在WINDOW下的读出的所谓的CMOS数据和在纯DOS下读出的CMOS数据是不同的,即使是时间也是不一样的,貌似我们在WINDOW下读出是桌面显示的系统时间,而在纯DOS下读出的是CMOS时间。这有点意思!
shaotine_wu 2010-06-22
  • 打赏
  • 举报
回复
这种限制有点像实模式下内存检测中的A20开关作用。在A20开关闭合的时候内存访问只能是1M,如果要访问超过1M的就会绕回。难道有这种可能?纯属联想,错了不要见怪!呵呵
  • 打赏
  • 举报
回复
进一步验证:在纯DOS环境下访问全部128字节是正常的,没有出现64字节回绕的问题。
看来这是Windows限制访问后64字节造成的问题。
nanlingcg 2010-06-21
  • 打赏
  • 举报
回复
太底层了,只能先看看各位老大们的叙述了,当个学习资料好!!!
帮您们顶上去.
欢迎更多的朋友参加探讨--只可用技术语言!!!

shaotine_wu 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 delphiguy 的回复:]

我测试了一下,写入7f地址的数据也出现在3f位置,难道是64字节的?
不过有一个例外,0c地址(RTC状态寄存器C)的数据是00,但4c地址的数据是40h。
[/Quote]
你在试着运行一次或是多运行几次,你就会发现0C和4C的位置数据是变动的,可能会都变成00h
这其中有没有权限访问的原因??
  • 打赏
  • 举报
回复
我测试了一下,写入7f地址的数据也出现在3f位置,难道是64字节的?
不过有一个例外,0c地址(RTC状态寄存器C)的数据是00,但4c地址的数据是40h。
  • 打赏
  • 举报
回复
没注意到还真的是如此,看了一下我的855GME芯片组的笔记本,确实后64字节复制了前64字节,待研究(先在纯DOS下读取试试)。
shaotine_wu 2010-06-21
  • 打赏
  • 举报
回复
但是我用的是华硕的P5KPL AM SE的主板啊,是128字节的
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 shaotine_wu 的回复:]

但是我在访问CMOS的时候只能读到64字节的内容,其他地址的内容都是和前64字节一样的,这是问什么??
[/Quote]

这应该是你的主板的CMOS RAM只有64字节空间(现在还能找到这么老的系统吗),读后面的就地址回绕了,见5楼。
aitaofan 2010-06-21
  • 打赏
  • 举报
回复
学习中......
太虚野老 2010-06-21
  • 打赏
  • 举报
回复
学习~ ,
shaotine_wu 2010-06-21
  • 打赏
  • 举报
回复
但是我在访问CMOS的时候只能读到64字节的内容,其他地址的内容都是和前64字节一样的,这是问什么??
  • 打赏
  • 举报
回复
密码是早就存在的配置参数,当然继续保留在CMOS RAM以保持兼容,不过在FLASH ROM中也有。就我看到的BIOS代码(网上能找到一个Award BIOS 6.00PG的源代码),CMOS RAM数据只是保存在Flash ROM中的一部分配置数据的复本。
加载更多回复(13)
RAM Stress Test(RST)内存测试软件使用指南 近日比较关注内存的检测问题,找到了名为“RAM Stress Test”的软件(简称“R. S. T.)。但是下载下来,只有区区的2M多,并且是nero格式的文件,这么小的文件能检测内存吗?于是在Google上查找相关说明,经过跋山涉水,终于找到一片,但是很不幸,在一家被挡在墙外的网站上,也就只好半转载、半理解得写出了这一篇使用说明。 先看软件介绍。这个可以从网络上搜索。例如,它是一个独立开发的系统,没有依附任何操作系统,相容于x86系列,只要BIOS认的到的容量都能测。也有人写道,是什么专业测试软件,很贵(500美元)等等,其实只需要知道能测试内存好坏就可以了。 DDR测试软件简要说明书 0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF 第1颗粒 第2颗粒 第3颗粒 第4颗粒 第5颗粒 第6颗粒 第7颗粒 第8颗粒 如以上的示范图: 闪动的代表8颗粒的区域 横着数0-7带表第一颗区域8-F代表第二颗区域,0-7带表第三颗区域,8-F代表第四颗区域 依次带表8颗颗粒的内存条. ⒈DDR8位与16位的单面测法: 注意:DDR的颗粒排列循序是1-2-3-4-5-6-7-8 ⑴.0-7(第1颗粒)区域如果出现乱码,代表这根DDR内存条的第一颗粒已经损坏 ⑵. 8-F(第2颗粒)区域如果出现乱码,代表这根DDR内存条的第二颗粒已经损坏 ⑶. 0-7(第3颗粒)区域如果出现乱码,代表这根DDR内存条的第三颗粒已经损坏 ⑷.8-F(第4颗粒)区域如果出现乱码,代表这根DDR内存条的第四颗粒已经损坏 ⑸. 0-7(第5颗粒)区域如果出现乱码,代表这根DDR内存条的第五颗粒已经损坏 ⑹. 8-F(第6颗粒)区域如果出现乱码,代表这根DDR内存条的第六颗粒已经损坏 ⑺. 0-7(第7颗粒)区域如果出现乱码,代表这根DDR内存条的第七颗粒已经损坏 ⑻. 8-F(第8颗粒)区域如果出现乱码,代表这根DDR内存条的第八颗粒已经损坏 ⒉如果你是128M的双面DDR内存,如以上显示界面图: 1-16M ------------------------------------------------------------------------------------------------------------ 16-32M ------------------------------------------------------------------------------------------------------- 32-48M ------------------------------------------------------------------------------------------------------------ 48-64M------------------------------------------------------------------------------------------------------------- 从1M到64M的上面的4根虚线上出现乱码的话,代表这跟内存的的第一面的颗粒有问题(判断哪个颗粒的好坏按照以上的说明) 64-80M ------------------------------------------------------------------------------------------------------------ 80-96M ------------------------------------------------------------------------------------------------------- 96-112M------------------------------------------------------------------------------------------------------------ 112-128M---------------------------------------------------------------------------------------------------------- 从64M到128M的上面的4根虚线上出现乱码的话,代表这跟内存的的第二面的颗粒有问题(判断哪个颗粒的好坏按照以上的说明) 注意:在内存的PCB板上的两边标着1与92的代表第一面93与184的代表第二面,1-128M的8根虚线是用来区分两面区域的作用. ⒊SD的8位与16位的单面测法: 注意:SD的颗粒排列循序是8-4-7-3-6-2-5-1 ⑴.0-7(第1颗粒)区域如果出现乱码,代表这根DDR内存条的第8颗粒已经损坏 ⑵. 8-F(第2颗粒)区域如果出现乱码,代表这根DDR内存条的第4颗粒已经损坏 ⑶. 0-7(第3颗粒)区域如果出现乱码,代表这根DDR内存条的第7颗粒已经损坏 ⑷.8-F(第4颗粒)区域如果出现乱码,代表这根DDR内存条的第3颗粒已经损坏 ⑸. 0-7(第5颗粒)区域如果出现乱码,代表这根DDR内存条的第6颗粒已经损坏 ⑹. 8-F(第6颗粒)区域如果出现乱码,代表这根DDR内存条的第2颗粒已经损坏 ⑺. 0-7(第7颗粒)区域如果出现乱码,代表这根DDR内存条的第5颗粒已经损坏 ⑻. 8-F(第8颗粒)区域如果出现乱码,代表这根DDR内存条的第1颗粒已经损坏 4.通过以上的说明SD的双面是跟DDR的是一样的但是颗粒的好坏判断要按照 他们的排列循序来判断的. 5.PCB板的短路或者虚焊的测法:在以8根虚线上都出现乱码代表这根内存的PCB板有问题. 6.不点亮内存的测试方法:很多内存短路和颗粒损坏后都不能点亮,不点亮的可以用. 一根好的内存去带动他.必须SD的带SD的.DDR的带DDR的.内存软件会自动跳过好的那根去检测坏的那条. 7.使用方法:直接把软盘插入软驱,在主板的CMOS里设置软驱起动,起动后本软件会自动引导到测试界面进行检测
我们按下起动键时,供电电压还是不稳定的,主板控制芯片组会向CPU发出一个RESET信号,让CPU初始化。当电源稳定供电后,芯片组便撤去RESET信号,CPU马上就从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。系统BIOS的启动代码首先要做的事情就是进行POST(加电自检)。POST的主要任务是检测系统中的一些关键设备是否存在和能否正常工作,如内存和显卡等。如果这个时候系统的喇叭发出的不是一声清脆的“嘀”声,那就有可能是内存条或是显示卡等出故障了]首先,计算机加电后,主机电源立即产生“Power Good”低电位信号,该信号通过时钟产生(驱动)器输出有效的RESET信号,使CPU进入复位状态,并强制系统进入ROM-BIOS程序区。系统BIOS区的第一条指令是“jump star”,即跳转到硬件自检程序start。为了方便地实现BIOS的功能,BIOS运行时要用到一些RAM,因此大多数BIOS要做的第一件事就是检测系统中的低端RAM。如果检测失败,那么大多数BIOS将无法调入RAM中,开机后无任何反应,微机黑屏。自检程序允许必要的附加卡上的BIOS程序首先进入它们自己的系统并初始化,但在此之前,主板上的BIOS必须找到附加卡上的BIOS程序,才能在主板BIOS和操作系统之前运行。如显示卡本身就带有启动程序的BIOS芯片,该芯片内的程序负责启动显示卡,为显示其它信息作准备,并在屏幕上显示显示卡的版本及版权信息。所以,开机引导时,在检测键盘和其它驱动器以前,我们首先看到的是屏幕上显示的有关显示卡的信息如果上面的过程完成了,电脑开始显示ROM-BIOS的版本、版权信息以及检测出的CPU型号、主频和内存容量。在这个过程中,自检程序还要测试DAM(内存)控制器及ROM-BIOS芯片的字节数。这些检测,如果出现错误,则为致命性错误,会导致死机或死循环如果正常,继续检验中断控制器、定时器、键盘、扩展I/O接口、IDE接口、软驱等设备并进行初始化。检测中如果出现错误,作为一般性错误,显示错误信息;如果正常,则继续进行下一步。在这之前,机器一直判断用户是否按了“Del”键,如果按了就进入ROM-BIOS中的系统设置程序,将系统的配置情况(如软、硬盘型号)以参数的形式存入CMOS RAM中,然后重新启动。
之后,自检程序将根据CMOS RAM中的内容来识别系统的一些硬件设置,并对这些部件进行初始化,如果遇到CMOS RAM中的设置参数与系统实际的硬件不符就会导致错误或死机。如果以上的工作都完成了的话,电脑就开始从硬盘读取数据,引导操作系统。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧