BIOS开发笔记:CMOS简介

简介
cmos原来指的是一种生产电子电路的工艺,在pc上一般指的是rtc电路单元,因为早期它是由这种工艺生产出来的,所以又把rtc称作了cmos。
rtc(real time clock)即实时时钟,用于保存记录时间和日期,也可以用来做定时开机功能。 rtc靠一组独立的电源给它供电,这样设计的目的就是为了不受系统电源的影响,可以保持一直有电,哪怕是在关机状态下。 当然这是理想状态下的,因为会有一些不可抗拒的原因,可能会导致断电,比如电池电量消耗完。
rtc的供电设计有两种:台式机上使用常见的rtc电池,笔记本上也有使用rtc电池的,但有些为了节省空间和减低成本,直接共用笔记本电池的电源。 rtc功耗极低,根本不需要忧虑它会对对电池造成大的负担。
要使rtc正常工作,除了电源,还需要一个32.768khz的晶振。 rtc通过对晶振所产生的振荡频率分频和累加,得到年、月、日、时、分、秒等时间信息,并将其保存在一段ram中。
实时传输单元内存
在uefi问世之前,bios存储一些变量(如bios setup设置)的方法就是放在rtc ram中的,只要rtc有电,数据就可以一直保存。 如果要恢复默认设置,或忘记密码等,便可以通过拆卸 rtc 电池的办法来达到目的。
至今,“清cmos”这个词还在沿用,虽然目的都是为了恢复bios setup初始值,但原理已经变了,uefi中“清cmos”并不能达到恢复默认设置的目的,因为数据不是存放在cmos中了,而是bios rom。 那现在的“清cmos”是怎么实现的呢? 原理就是bios启动的时候去判断rtc是否掉过电(如intel中的rtc_pwr_sts),是的话代码就执行恢复动作。 注意,这里的恢复是代码实现的,而原来利用的是rtc掉电,数据会清除的原理!
rtc ram 共有128字节,前14字节是有标准定义的,可以用来控制实时时钟,而其它字节对现在来说都已经过时了,基本没什么用,最多拿来临时存一些数据作标记。
前14字节定义(具体需要参照各平台芯片设计厂商相关的手册)
前面所写的指的是传统的rtc ram,后面又有了一个扩展的rtc ram,它相比传统的rtc ram,可使用的寄存器增加到了256个,不过也很少用到。。
访问
rtc ram分为两部分,第一部分传统cmos,只有128字节,第二部分为扩展cmos,有256字节,需要分开使用70/71或72/73端口访问,每次读写只支持单字节操作。 通过rw查看,如下:
rw中直接可以看到在跳动的秒数,操作系统下的时间和日期都是从rtc读出来的。 如果在os下更改时间或日期,rtc中相关寄存器也会被变更。
代码访问cmos直接使用 ioread8() 和 iowrite8() 就可以了,比较简单,edk2中有相关函数,如下:
uint8 efiapi cmosread8 ( in uintn index ){ iowrite8(0x70, (uint8) index); return ioread8 (0x71); } uint8 efiapi cmoswrite8 ( in uintn index, in uint8 value ){ iowrite8 (0x70, (uint8) index); iowrite8 (0x71, value); return value;}定时开机
定时开机的叫法有几种,如rtc wake up、rtc alarm、wake up from s5 等,原理就是设置rtc中几个alarm寄存器,当alarm寄存器的值跟当前时间一样时,rtc就会产生一个alarm,如果此时rtc alarm enable有被设置启用的话,则会产生一个唤醒事件(wake event)唤醒计算机,达到一个定时开机的作用。
定时开机常见的应用场景有两种,一种是在bios setup做的定时开机功能,另一种则是由app设置的定时开机,如常用于测试跑自动开关机的工具pwrtest.exe(它是微软提供的,在sdk中可找到它,由于ewdk包含sdk,所以ewdk也有,用everything搜一下很快可以找到),原理也是在关机的时候设置了rtc alarm, 然后不断重复这个动作,便实现了自动开关机的功能。

高精度、高可靠性、可引线接合安装的NTC热敏电阻
使用国民技术的N32替换STM32的操作流程
华为Mate10什么时候上市?华为Mate10最新消息:骁龙835+第三代徕卡双摄+麒麟970,华为首款四摄像头?
RS232接口和RS485接口的区别
Vishay推出新款193 PUR-SI Solar系列卡扣式功率铝电容器,提高额定电压
BIOS开发笔记:CMOS简介
中国传感器行业的形势怎么样
苹果已经拒绝了Samsung Pay Mini应用登陆App Store的请求
Imagination推出全新一代PowerVR Furian GPU架构 满足下一代消费类设备图形运算需求
中、美、欧谁将率先实现空间激光通信 看完你就知道了
锂电池可以用直流稳压开关电源充电吗?
同茂直线电机的分类和选型
高利润核心零部件基本由外资企业垄断
电源设计的10阶段测试小贴士
三星显然正在努力提高其5nm EUV产量
微软放在支架的太阳能电池板专利
为什么说美团是未来餐饮的新基建
2022集成电路专业建设发展芯思路线上研讨会圆满结束
自耦降压启动柜常见故障排除
示波器的分类及功能