吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BIOS開發(fā)筆記:CMOS簡介

CHANBAEK ? 來源:UEFI那點(diǎn)事 ? 作者: bin ? 2023-05-26 15:49 ? 次閱讀

簡介

CMOS原來指的是一種生產(chǎn)電子電路的工藝,在PC上一般指的是RTC電路單元,因?yàn)樵缙谒怯蛇@種工藝生產(chǎn)出來的,所以又把RTC稱作了CMOS。

RTC(Real Time Clock)即實(shí)時(shí)時(shí)鐘,用于保存記錄時(shí)間和日期,也可以用來做定時(shí)開機(jī)功能。 RTC靠一組獨(dú)立的電源給它供電,這樣設(shè)計(jì)的目的就是為了不受系統(tǒng)電源的影響,可以保持一直有電,哪怕是在關(guān)機(jī)狀態(tài)下。 當(dāng)然這是理想狀態(tài)下的,因?yàn)闀幸恍┎豢煽咕艿脑颍赡軙?dǎo)致斷電,比如電池電量消耗完。

RTC的供電設(shè)計(jì)有兩種:臺式機(jī)上使用常見的RTC電池,筆記本上也有使用RTC電池的,但有些為了節(jié)省空間和減低成本,直接共用筆記本電池的電源。 RTC功耗極低,根本不需要憂慮它會對對電池造成大的負(fù)擔(dān)。

要使RTC正常工作,除了電源,還需要一個(gè)32.768KHZ的晶振。 RTC通過對晶振所產(chǎn)生的振蕩頻率分頻和累加,得到年、月、日、時(shí)、分、秒等時(shí)間信息,并將其保存在一段RAM中。

圖片

實(shí)時(shí)傳輸單元內(nèi)存

在UEFI問世之前,BIOS存儲一些變量(如BIOS SETUP設(shè)置)的方法就是放在RTC RAM中的,只要RTC有電,數(shù)據(jù)就可以一直保存。 如果要恢復(fù)默認(rèn)設(shè)置,或忘記密碼等,便可以通過拆卸 RTC 電池的辦法來達(dá)到目的。

至今,“清CMOS”這個(gè)詞還在沿用,雖然目的都是為了恢復(fù)BIOS SETUP初始值,但原理已經(jīng)變了,UEFI中“清CMOS”并不能達(dá)到恢復(fù)默認(rèn)設(shè)置的目的,因?yàn)閿?shù)據(jù)不是存放在CMOS中了,而是BIOS ROM。 那現(xiàn)在的“清CMOS”是怎么實(shí)現(xiàn)的呢? 原理就是BIOS啟動的時(shí)候去判斷RTC是否掉過電(如Intel中的RTC_PWR_STS),是的話代碼就執(zhí)行恢復(fù)動作。 注意,這里的恢復(fù)是代碼實(shí)現(xiàn)的,而原來利用的是RTC掉電,數(shù)據(jù)會清除的原理!

RTC RAM 共有128字節(jié),前14字節(jié)是有標(biāo)準(zhǔn)定義的,可以用來控制實(shí)時(shí)時(shí)鐘,而其它字節(jié)對現(xiàn)在來說都已經(jīng)過時(shí)了,基本沒什么用,最多拿來臨時(shí)存一些數(shù)據(jù)作標(biāo)記。

圖片

前14字節(jié)定義(具體需要參照各平臺芯片設(shè)計(jì)廠商相關(guān)的手冊)

前面所寫的指的是傳統(tǒng)的RTC RAM,后面又有了一個(gè)擴(kuò)展的RTC RAM,它相比傳統(tǒng)的RTC RAM,可使用的寄存器增加到了256個(gè),不過也很少用到。。

訪問

RTC RAM分為兩部分,第一部分傳統(tǒng)CMOS,只有128字節(jié),第二部分為擴(kuò)展CMOS,有256字節(jié),需要分開使用70/71或72/73端口訪問,每次讀寫只支持單字節(jié)操作。 通過RW查看,如下:

圖片

圖片

RW中直接可以看到在跳動的秒數(shù),操作系統(tǒng)下的時(shí)間和日期都是從RTC讀出來的。 如果在OS下更改時(shí)間或日期,RTC中相關(guān)寄存器也會被變更。

代碼訪問CMOS直接使用 IoRead8() 和 IoWrite8() 就可以了,比較簡單,EDK2中有相關(guān)函數(shù),如下:

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;
}

定時(shí)開機(jī)

定時(shí)開機(jī)的叫法有幾種,如RTC Wake Up、RTC Alarm、Wake Up From S5 等,原理就是設(shè)置RTC中幾個(gè)Alarm寄存器,當(dāng)Alarm寄存器的值跟當(dāng)前時(shí)間一樣時(shí),RTC就會產(chǎn)生一個(gè)Alarm,如果此時(shí)RTC Alarm Enable有被設(shè)置啟用的話,則會產(chǎn)生一個(gè)喚醒事件(wake event)喚醒計(jì)算機(jī),達(dá)到一個(gè)定時(shí)開機(jī)的作用。

定時(shí)開機(jī)常見的應(yīng)用場景有兩種,一種是在BIOS SETUP做的定時(shí)開機(jī)功能,另一種則是由APP設(shè)置的定時(shí)開機(jī),如常用于測試跑自動開關(guān)機(jī)的工具Pwrtest.exe(它是微軟提供的,在SDK中可找到它,由于EWDK包含SDK,所以EWDK也有,用everything搜一下很快可以找到),原理也是在關(guān)機(jī)的時(shí)候設(shè)置了RTC Alarm, 然后不斷重復(fù)這個(gè)動作,便實(shí)現(xiàn)了自動開關(guān)機(jī)的功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • CMOS
    +關(guān)注

    關(guān)注

    58

    文章

    5735

    瀏覽量

    236091
  • 晶振
    +關(guān)注

    關(guān)注

    34

    文章

    2899

    瀏覽量

    68312
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3055

    瀏覽量

    74328
  • BIOS
    +關(guān)注

    關(guān)注

    5

    文章

    470

    瀏覽量

    45933
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    542

    瀏覽量

    67030
收藏 人收藏

    評論

    相關(guān)推薦

    安卓開發(fā)筆記

    安卓開發(fā)筆記(中文)
    發(fā)表于 04-26 10:57

    基于STM32的USB程序開發(fā)筆記 匯總

    忙了一下午終于有時(shí)間整理了,基于STM32的USB程序開發(fā)筆記匯總,需要的親們點(diǎn)擊鏈接閱讀哈!{:4_95:}基于STM32的USB程序開發(fā)筆記(一)https://bbs.elecfans.com
    發(fā)表于 03-20 16:08

    Modbus庫開發(fā)筆記之十一:關(guān)于Modbus協(xié)議棧開發(fā)的說明

    們不就使用的最終結(jié)果負(fù)責(zé)。當(dāng)然如果發(fā)現(xiàn)任何的不足,我們非常并歡迎大家將發(fā)現(xiàn)的問題告知我們,以便我們持續(xù)的改進(jìn)之。本系列的全部分裝如下:Modbus庫開發(fā)筆記之一:實(shí)現(xiàn)功能的基本設(shè)計(jì)https
    發(fā)表于 08-27 20:32

    壇友經(jīng)驗(yàn)分享之STM32的USB程序開發(fā)筆記

    基于STM32的USB程序開發(fā)筆記(一)基于STM32的USB程序開發(fā)筆記(二)基于STM32的USB程序開發(fā)筆記(三)基于STM32的USB程序開發(fā)筆記(四)基于STM32的USB程
    發(fā)表于 09-04 17:42

    基于STM32的USB程序開發(fā)筆記

    基于STM32的USB程序開發(fā)筆記
    發(fā)表于 04-24 09:23

    Odrive開發(fā)筆記 精選資料推薦

    Odrive開發(fā)筆記文章目錄Odrive開發(fā)筆記接線配置進(jìn)入校準(zhǔn)測試用python來控制odrive電機(jī)控制介紹位置環(huán)速度環(huán)把從一開始做odrive驅(qū)動無刷電機(jī)的所有過程都記錄下來接線1. 首先
    發(fā)表于 09-02 07:33

    求大佬分享STM32CubeMX-HAL庫開發(fā)筆記

    求大佬分享STM32CubeMX-HAL庫開發(fā)筆記
    發(fā)表于 12-02 07:26

    求大佬分享CAN開發(fā)筆記

    求大佬分享CAN開發(fā)筆記
    發(fā)表于 02-07 06:16

    lua開發(fā)筆記分享

    lua開發(fā)筆記(1)單片機(jī)與luaPython與lua單片機(jī)與lua我第一次接觸lua是幾年前偶然發(fā)現(xiàn)了一個(gè)單片機(jī)(MCU)的開源項(xiàng)目——NodeMCU。這個(gè)項(xiàng)目很有意思,他的目的是讓傳統(tǒng)程序員
    發(fā)表于 02-08 06:12

    基于STM32的USB程序開發(fā)筆記

    基于STM32的USB程序開發(fā)筆記STM32 USB 源代碼及筆記下載.rar
    發(fā)表于 10-09 06:05

    STM32的USB程序開發(fā)筆記

    STM32的USB程序開發(fā)筆記
    發(fā)表于 09-29 14:55 ?27次下載
    STM32的USB程序<b class='flag-5'>開發(fā)筆記</b>

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記5_初識JavaScript

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記5_初識JavaScript
    發(fā)表于 10-11 08:48 ?7次下載
    基于LM3S網(wǎng)絡(luò)<b class='flag-5'>開發(fā)筆記</b>5_初識JavaScript

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記3_多網(wǎng)頁開發(fā)

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記3_多網(wǎng)頁開發(fā)
    發(fā)表于 10-11 08:52 ?4次下載
    基于LM3S網(wǎng)絡(luò)<b class='flag-5'>開發(fā)筆記</b>3_多網(wǎng)頁<b class='flag-5'>開發(fā)</b>

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記1_開發(fā)平臺

    基于LM3S網(wǎng)絡(luò)開發(fā)筆記1_開發(fā)平臺
    發(fā)表于 10-11 08:57 ?4次下載
    基于LM3S網(wǎng)絡(luò)<b class='flag-5'>開發(fā)筆記</b>1_<b class='flag-5'>開發(fā)</b>平臺

    Qt嵌入式開發(fā)筆記

    Qt嵌入式開發(fā)筆記,未完整qmake,qt元對象系統(tǒng),內(nèi)存管理,信號與槽,事件處理,多線程開發(fā)
    發(fā)表于 11-03 10:21 ?38次下載
    Qt嵌入式<b class='flag-5'>開發(fā)筆記</b>
    百家乐棋牌交| 阿尔山市| 百家乐de概率| 澳门威尼斯人| 在线百家乐代理| 金鼎国际娱乐| 百家乐双层筹码盘| 百家乐官网数学规律| 太阳城百家乐作弊| 百家乐官网注码技巧| 机器百家乐作弊| 百家乐官网技论坛| 大发888娱乐城官方网站lm0| 东莞百家乐官网的玩法技巧和规则 | 永利高百家乐会员| 百家乐官网赌博机吧| 电玩百家乐的玩法技巧和规则| 百家乐官网技术辅助软件| 大发888娱乐场下载 游戏平台| 最新皇冠网止| 百家乐销售视频| 百家乐官网遥控牌靴| 百家乐百博亚洲| 百家乐官网破解仪恒达| 大发888亚付宝充值| 百家乐如何计牌| 赌百家乐官网的下场| 威尼斯人娱乐城信誉lm0| 百家乐官网庄闲必胜打| 常州市| 威尼斯人娱乐城真钱游戏| 阳谷县| 威尼斯人娱乐网站怎么样| 最可信百家乐官网娱乐城| 汾西县| 幸运水果机下载| 杨公风水24山分金水法| 百家乐官网群博爱彩| 爱玩棋牌下载| 百家乐怎么完才能嬴| 大西洋百家乐官网的玩法技巧和规则 |