《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > VxWorks for x86系統(tǒng)中實(shí)時(shí)時(shí)鐘的應(yīng)用
VxWorks for x86系統(tǒng)中實(shí)時(shí)時(shí)鐘的應(yīng)用
摘要: 為了獲得一個有實(shí)際使用價(jià)值的系統(tǒng)時(shí)間,我們就需要系統(tǒng)時(shí)間能與目標(biāo)板的實(shí)時(shí)時(shí)鐘保持同步。實(shí)際上。在VxWorks for x86系列的機(jī)器中,可以通過讀寫特定的端口來讀取/設(shè)置保存在BIOS中的實(shí)時(shí)時(shí)鐘。
Abstract:
Key words :

引言

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

     X86或80X86是Intel公司開發(fā)的微處理器體系結(jié)構(gòu)的泛稱。采用X86架構(gòu)的Intel CPU及其兼容CPU都使用X86指令集,作為個人計(jì)算機(jī)的標(biāo)準(zhǔn)平臺,它們構(gòu)成了當(dāng)今數(shù)量最大的CPU陣營。VxWorks可支持多種不同體系結(jié)構(gòu)的32位CPU,其中就包括現(xiàn)在使用最為廣泛的X86系列CPU。

1 VxWorks for x86系統(tǒng)中的系統(tǒng)時(shí)間

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

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

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

    實(shí)際上。在VxWorks for x86系列的機(jī)器中,可以通過讀寫特定的端口來讀取/設(shè)置保存在BIOS中的實(shí)時(shí)時(shí)鐘。

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

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

     使用以上這些函數(shù)可以編寫一個顯示當(dāng)前系統(tǒng)時(shí)間的函數(shù)GetSysTime(),其內(nèi)容如下:

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

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

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

     函數(shù)BCD2BIN ()用來將BCD碼轉(zhuǎn)換為十進(jìn)制數(shù),它的輸入為BCD碼,返回值為十進(jìn)制數(shù)。其內(nèi)容如下:

     函數(shù)BIOSTimeGet ()用來從端口讀取BIOS時(shí)間,在該函數(shù)內(nèi)部調(diào)用BCD2BIN()函數(shù),其返回值為tm型結(jié)構(gòu)的日期和時(shí)間。具體內(nèi)容如下:



函數(shù)SetSysTime ()可用來將系統(tǒng)時(shí)間設(shè)置為實(shí)時(shí)時(shí)鐘時(shí)間,在該函數(shù)的內(nèi)部調(diào)用BIOSTimeGet ()函數(shù)的內(nèi)容如下:

    調(diào)用SetSysTime()函數(shù)后再調(diào)用GetSysTime()函數(shù),其顯示內(nèi)容就是當(dāng)前實(shí)時(shí)時(shí)鐘的時(shí)間,這表明系統(tǒng)時(shí)間和實(shí)時(shí)時(shí)鐘已實(shí)現(xiàn)了同步。

3 實(shí)時(shí)時(shí)鐘的特定時(shí)間設(shè)置

    在某些應(yīng)用中,有時(shí)我們也希望能校正實(shí)時(shí)時(shí)鐘,也就是能將BIOS中的實(shí)時(shí)時(shí)鐘設(shè)置為某個特定時(shí)間。這個功能同樣可以通過訪問端口0x70,0x71來實(shí)現(xiàn)。

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

    函數(shù)BIN2BCD()可用來將十進(jìn)制數(shù)轉(zhuǎn)換為BCD碼,它的輸入為十進(jìn)制數(shù),返回值為BCD碼。其內(nèi)容如下:

     函數(shù)BIOSTimeSet()用來通過端口設(shè)置BIOS時(shí)間,在該函數(shù)內(nèi)部調(diào)用BIN2BCD()函數(shù),它的輸入為tm型結(jié)構(gòu)的日期和時(shí)間。其內(nèi)容如下:

     函數(shù)SetBIOSTime()可用來將當(dāng)前時(shí)間或某個特定時(shí)間(如:2009-10-1 10:10:10)設(shè)置為實(shí)時(shí)時(shí)鐘的時(shí)間,在該函數(shù)的內(nèi)部調(diào)用BIOSTime-Set ()函數(shù)的內(nèi)容如下:

   在調(diào)用SetBIOSTime()函數(shù)設(shè)置實(shí)時(shí)時(shí)鐘后,再調(diào)用SetSysTime ()函數(shù)即可使系統(tǒng)時(shí)間與剛設(shè)置的實(shí)時(shí)時(shí)鐘保持同步。

    該程序在VxWorks5.4.2,Tomad02.0.2,BSP包為pcPentium的Pentium主板上已調(diào)試運(yùn)行通過。

4 結(jié)束語

    VxWorks因其卓越的性能在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域占據(jù)了領(lǐng)導(dǎo)地位,x86雖然不是一個專門的嵌入式平臺,但因其具有低廉的價(jià)格、豐富的軟硬件資源而得到了廣泛的應(yīng)用。該系統(tǒng)可通過操作目標(biāo)板上的硬件端口來讀寫保存在BIOS中的實(shí)時(shí)時(shí)鐘,并使VxWorks的系統(tǒng)時(shí)間和實(shí)時(shí)時(shí)鐘保持同步。這個方法為VxWorks for x86這一目前流行的嵌入式平臺中的相關(guān)應(yīng)用提供了支持。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
葵司免费一区二区三区四区五区| 国产精品国产精品| 一区二区三区.www| 亚洲国产清纯| 亚洲男女毛片无遮挡| 日韩亚洲不卡在线| 在线看片一区| 黄网动漫久久久| 国产日韩欧美成人| 国产精品视频免费一区| 国产精品久久久久久久久久ktv| 欧美日韩高清区| 欧美极品一区| 欧美日韩精品免费观看视一区二区 | 亚洲欧美精品在线观看| 亚洲一区欧美激情| 亚洲综合国产| 午夜一区二区三区在线观看| 性高湖久久久久久久久| 香蕉免费一区二区三区在线观看| 亚洲免费影视第一页| 亚洲自拍都市欧美小说| 午夜精品久久久久久久99热浪潮 | 午夜精品一区二区三区四区| 午夜久久福利| 欧美一区激情| 亚洲福利国产精品| 亚洲高清视频一区| 亚洲欧洲一级| 日韩视频一区二区三区| 中日韩高清电影网| 亚洲主播在线| 欧美一区二区三区另类 | 欧美午夜精品久久久久久浪潮| 国产精品福利在线观看网址| 国产精品久久毛片a| 国产精品自拍在线| 国产一区二区电影在线观看| 国外成人性视频| 亚洲国产视频一区二区| 99国产精品| 亚洲女与黑人做爰| 久久精品人人做人人爽电影蜜月| 亚洲欧洲另类国产综合| 亚洲人成7777| 亚洲私人影院在线观看| 亚洲一区二区在线免费观看| 欧美一级电影久久| 久久综合影音| 欧美日韩国产免费| 久久影视三级福利片| 欧美高清视频一二三区| 欧美日韩在线另类| 国产欧美一区二区三区在线老狼 | 亚洲免费小视频| 久久er精品视频| 欧美成人小视频| 国产精品成人一区二区三区吃奶 | 一本色道久久精品| 在线视频观看日韩| 一个色综合av| 欧美一级视频一区二区| 最新国产の精品合集bt伙计| 中文在线资源观看网站视频免费不卡| 亚洲素人一区二区| 久久久人成影片一区二区三区观看 | 亚洲欧美卡通另类91av| 久久久之久亚州精品露出| 欧美激情二区三区| 国产精品一卡二| 亚洲国产专区校园欧美| 亚洲欧美日韩精品久久奇米色影视| 亚洲精美视频| 欧美一级艳片视频免费观看| 欧美顶级大胆免费视频| 国产老肥熟一区二区三区| 亚洲激情社区| 欧美在线观看网站| 亚洲一区三区在线观看| 美女精品国产| 国产精品无码专区在线观看| 亚洲国产一区二区视频| 新67194成人永久网站| av成人免费在线| 久久亚洲影音av资源网| 欧美亚洲第一区| 亚洲成人在线视频播放| 亚洲自拍另类| 亚洲天堂成人在线视频| 欧美日韩伦理在线| 一区二区三区免费看| 久久成人国产| 亚洲永久免费观看| 正在播放欧美一区| 麻豆久久精品| 国产精品亚洲人在线观看| 亚洲区免费影片| 亚洲二区在线| 久久精品亚洲乱码伦伦中文| 欧美午夜电影一区| 亚洲国产小视频| 亚洲第一在线| 久久国产手机看片| 国产精品初高中精品久久| 亚洲第一精品电影| 久久99伊人| 久久国产欧美精品| 欧美96在线丨欧| 国色天香一区二区| 欧美影院成人| 欧美一级淫片播放口| 欧美午夜视频网站| 亚洲美女电影在线| 亚洲久久视频| 欧美成年人视频| 在线播放一区| 亚洲国产精品123| 久久久久久久久久久久久久一区| 国产精品入口尤物| 亚洲视频在线观看三级| 亚洲午夜小视频| 欧美日韩在线观看一区二区三区| 亚洲黄色免费| 日韩视频免费观看高清完整版| 欧美va天堂| 亚洲国产成人在线播放| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美韩日亚洲| 欧美伦理影院| 亚洲精品国久久99热| 99视频在线观看一区三区| 欧美精品一区二区三区蜜臀| 亚洲精品久久久久久下一站| 99在线精品免费视频九九视| 欧美日韩精品二区| 一区二区三区产品免费精品久久75 | 欧美一级二级三级蜜桃| 久久久久国产精品人| 好看不卡的中文字幕| 亚洲二区三区四区| 欧美精品www在线观看| a91a精品视频在线观看| 午夜国产精品影院在线观看| 国产欧美婷婷中文| 欧美一区在线直播| 久久亚洲精选| 亚洲国产综合在线| 一区二区三区波多野结衣在线观看| 国产精品成人一区二区| 香蕉久久国产| 鲁大师影院一区二区三区| 最新成人在线| 亚洲尤物在线视频观看| 国产欧美一区二区三区在线老狼 | 日韩亚洲成人av在线| 欧美婷婷在线| 欧美在线3区| 欧美激情二区三区| 中文久久乱码一区二区| 国产一区二区高清不卡| 亚洲欧美综合| 久久天堂成人| 韩国v欧美v日本v亚洲v| 日韩午夜在线| 欧美特黄一级大片| 欧美一区综合| 蜜桃av综合| 亚洲精品美女| 亚洲国产另类精品专区 | 久久综合影视| 在线播放精品| 一区二区三区福利| 国产精品video| 亚洲欧美日韩精品综合在线观看| 免费观看亚洲视频大全| 亚洲激情欧美激情| 亚洲男女自偷自拍| 国产日韩亚洲欧美精品| 亚洲国产欧美一区二区三区久久| 欧美黄色视屏| 亚洲视屏一区| 免费亚洲电影在线观看| 亚洲精选91| 欧美在线网站| 亚洲国产成人av在线| 性色av香蕉一区二区| 伊人蜜桃色噜噜激情综合| 99在线热播精品免费99热| 国产精品美女主播| 亚洲人成人一区二区在线观看 | 欧美精品成人在线| 欧美一区二区三区在线观看视频| 欧美成人tv| 亚洲网站视频福利| 欧美一区二区在线免费播放| 日韩香蕉视频| 久久黄色级2电影| 亚洲黄一区二区| 亚洲午夜精品网| 在线观看视频一区二区|