RTC & CMOS 技術詳解
背景介紹: 以下文章引用自 史萊姆論壇 CMOS,(是指互補金屬氧化物半導體——一種大規模應用於集成電路晶片製造的原料)是微機主機板上的一塊可讀寫的RAM芯 片,用來儲存當前系統的硬體配置和用戶對某些參數的設定。CMOS可由主機板的電池供電,即使系統掉電,訊息也不會丟失。 CMOS RAM本身只是一塊存儲器,只有資料儲存功能,而對CMOS中各項參數的設定要通過專門的程序。 早期的CMOS設置程序駐留 在軟碟上的(如IBM的PC/AT機型),使用很不方便。現在多數廠家將CMOS設置程序做到了BIOS晶片中,在開機時通過特定的按鍵 就可進入CMOS設置程序方便地對系統進行設置,因此CMOS設置又被叫做BIOS設置。 早期的CMOS是一塊單獨的晶片MC146818A(DIP封裝),共有64個字節存放系統訊息,見CMOS配置資料表。 386以後的微機一般將 MC146818A晶片集成到其它的IC晶片中(如82C206,PQFP封裝),最新的一些586主機板上更是將CMOS與系統既時時鐘和後備電池集 成到一塊叫做DALLDA DS1287的晶片中。 隨著微機的發展、可設置參數的增多,現在的CMOS RAM一般都有128字節及至256字節 的容量。 CMOS存取方法: 現代PC BIOS要紀錄的資料量大,所以CMOS RAM以128 bytes為單位分成兩塊 要讀取/寫入第一塊的方式就是對IO address 70h寫入索引位址,資料就會出現在71h, 第二塊的讀取/寫入方法依樣畫葫蘆,對IO address 72h寫入索引位址,資料就會出現在73h Linux系統的實做: 由下而上的看法就是核心要安裝RTC的驅動程式,原始檔在driver/rtc/... 裝好之後/dev/rtc就會出現在檔案系統中,再透過ioctl就可以取得/設定系統時間 使用者端的工具就是date,開發者的函式就是settime()/getrime(),宣告在 中 CMOS RAM分佈圖:(取自 MC146818A Datasheet )
留言