<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > VxWorks for x86系統中實(shí)時(shí)時(shí)鐘的應用

VxWorks for x86系統中實(shí)時(shí)時(shí)鐘的應用

作者: 時(shí)間:2010-06-17 來(lái)源:網(wǎng)絡(luò ) 收藏
0引言

是美國WRS(Wind River System)公司推出的一個(gè)具有微內核、可裁剪的高性能強實(shí)時(shí)操作,該實(shí)時(shí)操作在航空、廣播、運輸、醫療、自動(dòng)化生產(chǎn)和科學(xué)研究等領(lǐng)域中有著(zhù)廣泛的應用,尤其是在國防和軍事上的一些高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中,就更體現出了其優(yōu)越的性能。

X86或80X86是Intel公司開(kāi)發(fā)的微處理器體系結構的泛稱(chēng)。采用X86架構的Intel CPU及其兼容CPU都使用X86指令集,作為個(gè)人計算機的標準平臺,它們構成了當今數量最大的CPU陣營(yíng)。可支持多種不同體系結構的32位CPU,其中就包括現在使用最為廣泛的X86系列CPU。

1 中的系統時(shí)間

我們知道,在VxWorks 系統中沒(méi)有直接讀取RTC(實(shí)時(shí)時(shí)鐘控制器)的函數,在目標板每次加電或重啟后,用time.h中的函數第一次讀到的時(shí)間始終是“THU JAN 01 00:00:00 1970”。這里取到的系統時(shí)間是從開(kāi)機到現在的時(shí)間,也就是說(shuō),VxWorks的系統日期和時(shí)間是相對于一個(gè)基準的日期時(shí)間計算出來(lái)的,這一基準時(shí)間就是“THU JAN O1 00:00:00 1970”,其他日期時(shí)間對系統來(lái)說(shuō)都是相對于這一基準時(shí)間已經(jīng)過(guò)的秒數。因此,這樣取到的系統時(shí)間是沒(méi)有任何使用價(jià)值的。

然而,在實(shí)際應用中,我們經(jīng)常需要用到“真實(shí)的”VxWorks系統時(shí)間,比如在文件系統中創(chuàng )建文件時(shí),我們就希望文件創(chuàng )建的時(shí)間是實(shí)時(shí)時(shí)鐘的時(shí)間,同時(shí)在日志文件中記錄的時(shí)間也希望是實(shí)時(shí)時(shí)鐘的時(shí)間。但是,在文件系統中能直接訪(fǎng)問(wèn)的卻是上述那個(gè)“沒(méi)有使用價(jià)值的”系統時(shí)間。這種情況就為應用帶來(lái)了很大的不便。

為了獲得一個(gè)有實(shí)際使用價(jià)值的系統時(shí)間,我們就需要系統時(shí)間能與目標板的實(shí)時(shí)時(shí)鐘保持同步。

實(shí)際上。在VxWorks 系列的機器中,可以通過(guò)讀寫(xiě)特定的端口來(lái)讀?。O置保存在BIOS中的實(shí)時(shí)時(shí)鐘。

2 VxWorks for x86中系統時(shí)間和實(shí)時(shí)時(shí)鐘的同步

使用VxWorks的ansiTime庫(time.h)中的time()函數可以讀取當前秒鐘形式的日歷時(shí)間,也就是系統加電后相對于基準時(shí)間所經(jīng)過(guò)的秒數;使用locatime ()函數則可以將此日歷時(shí)間轉換成tm型結構的日期和時(shí)間;之后,再使用asctime()函數可將tm型結構的日期和時(shí)間轉換成包含日期和時(shí)間的字符串。

使用以上這些函數可以編寫(xiě)一個(gè)顯示當前系統時(shí)間的函數GetSysTime(),其內容如下:



系統加電后,調用GetSysTime (函數,其顯示內容為“time is:THU JAN 01 00:00:00 1970”。而在實(shí)際應用中,通常希望獲取保存在BIOS中的實(shí)時(shí)時(shí)鐘,并使用這個(gè)實(shí)時(shí)時(shí)鐘來(lái)設置系統時(shí)間,從而使系統時(shí)間與實(shí)時(shí)時(shí)鐘保持同步。因此,在VxWorks for x86系統中,可以通過(guò)讀寫(xiě)端口0x70,0x71來(lái)訪(fǎng)問(wèn)BIOS中的實(shí)時(shí)時(shí)鐘。其中,端口地址0x70對應的是實(shí)時(shí)時(shí)鐘的索引寄存器(表1所列是實(shí)時(shí)時(shí)鐘索引寄存器的定義),端口地址0x71對應的是實(shí)時(shí)時(shí)鐘的數據寄存器。實(shí)時(shí)時(shí)鐘的秒、分、時(shí),日、月、年在索引寄存器中的存放地址分別是0x00、0x02、0x04,0x07、0x08、0x09。

需要注意的是,從端口中讀到的數據,其格式為BCD碼,因此在使用前還需要將其轉換為十進(jìn)制數。

在把轉換后的實(shí)時(shí)時(shí)鐘的秒、分、時(shí),日、月、年等數據賦給tm型結構變量的相應成員后,可使用ansiTime庫(time.h)中的mktime ()函數將tm型結構的日期和時(shí)間轉換成秒鐘形式的日歷時(shí)間,并烙其賦給timespec型結構變量的tv-sec成員(timespec型結構的tv_nsec成員可設置為0),這樣,通過(guò)使用clockLjb庫中的clock_settime()函數就可以將系統時(shí)間設置為實(shí)時(shí)時(shí)鐘的時(shí)間,從而實(shí)現系統時(shí)間與實(shí)時(shí)時(shí)鐘同步。




上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: VxWorks for x86 系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>