1. gzyueqian
      18078865874
      首頁 > 新聞中心 > > 正文

      ARM嵌入式系統(tǒng)軟件實(shí)時(shí)時(shí)鐘的設(shè)計(jì)

      更新時(shí)間: 2007-08-11 13:07:35來源: 粵嵌教育瀏覽量:929

        【摘要】本文使用PCF8563芯片為嵌入式系統(tǒng)提供一個(gè)獨(dú)立的實(shí)時(shí)時(shí)鐘,它獨(dú)立自主地運(yùn)行,CPU從它那里獲得時(shí)間信息。文中簡(jiǎn)介了嵌入式ARM處理器和I2C總線的通訊協(xié)議;通過uclinux的交叉編譯、移植和燒寫uclinux內(nèi)核,在UP-NETARM3000上成功的運(yùn)行uclinux系統(tǒng);在移植的uclinux系統(tǒng)上掛載NFS文件系統(tǒng),運(yùn)行其中的應(yīng)用程序;并通過C程序在uclinux下實(shí)現(xiàn)了對(duì)PCF8563的讀寫功能,成功地添加了實(shí)時(shí)時(shí)鐘。

        【關(guān)鍵詞】實(shí)時(shí)時(shí)鐘; ARM處理器; uclinux移植; PCF8563;I2C總線

        1 引言
         
        現(xiàn)在的許多設(shè)備對(duì)實(shí)時(shí)時(shí)鐘都有很高的要求,在片集成的實(shí)時(shí)時(shí)鐘往往只注意到了其使用的方便,而沒有考慮在實(shí)際應(yīng)用中還有很多特殊的要求。本文討論如何使用獨(dú)立的外擴(kuò)實(shí)時(shí)時(shí)鐘,來滿足這些要求。
      什么是實(shí)時(shí)系統(tǒng)?就是系統(tǒng)運(yùn)行時(shí)的反饋信息或者指令,必須在要求的時(shí)間內(nèi)發(fā)出或者返回,否則視為無效。例如,數(shù)據(jù)采集的時(shí)候,必須在對(duì)應(yīng)的時(shí)間內(nèi)得到信號(hào),以保證數(shù)據(jù)采集的有效性。那么什么是實(shí)時(shí)時(shí)鐘?就是采用獨(dú)立的晶振(或集成),擁有獨(dú)立供電系統(tǒng),永不間斷的運(yùn)行,從而給系統(tǒng)提供可靠的系統(tǒng)時(shí)間。
         
        集成的實(shí)時(shí)時(shí)鐘和獨(dú)立實(shí)時(shí)時(shí)鐘的比較:
         
        以博創(chuàng)UP-NETARM3000開發(fā)板為例,它使用的是三星公司生產(chǎn)的S3C44B0XARM7處理器,該處理器內(nèi)部集成了一個(gè)實(shí)時(shí)時(shí)鐘,其中的2個(gè)中斷源INT_RTC和INT_ADC中斷源在26個(gè)中斷源中優(yōu)先級(jí)。RTC的電壓要求2.5V或3V,但是不支持3.3V。也就是說開發(fā)板上的實(shí)時(shí)時(shí)鐘不能脫離開發(fā)板獨(dú)立地運(yùn)行,同時(shí)中斷級(jí)別低,電壓范圍窄,精度不可調(diào),不具備通用性。而外擴(kuò)的獨(dú)立實(shí)時(shí)時(shí)鐘電壓范圍寬,使用I2C總線,中斷級(jí)別高,同時(shí)獨(dú)立于開發(fā)板運(yùn)行,通用性好。特別是精度是可以矯正調(diào)節(jié)的,這對(duì)實(shí)時(shí)性來說精度是很重要的指標(biāo)。

        2 ARM處理器
         
        ARM(Advanced RISC Machines)是一類微處理器的通稱[1]。1991年ARM公司成立于英國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。ARM現(xiàn)在已遍及工業(yè)控制,消費(fèi)類電子產(chǎn)品,通信系統(tǒng),網(wǎng)絡(luò)系統(tǒng),無線系統(tǒng)等各類產(chǎn)品市場(chǎng),基于ARM技術(shù)的微處理器應(yīng)用占據(jù)了32位RISC微處理器75%以上的市場(chǎng)比例,ARM 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。

        3 PCF8563
         
        PCF8563是PHILIPS公司生產(chǎn)的低功耗CMOS實(shí)時(shí)時(shí)鐘/日歷芯片, 芯片總線速度為400kbits/s,每次讀寫數(shù)據(jù)后,其內(nèi)嵌的字地址寄存器會(huì)自動(dòng)產(chǎn)生增量。PCF8563可廣泛應(yīng)用于移動(dòng)電話、便攜儀器、傳真機(jī)、電池電源等產(chǎn)品中。PCF8563有16個(gè)8位寄存器,其中包括:可自動(dòng)增量的地址寄存器、內(nèi)置32.768kHz的振蕩器(帶有一個(gè)內(nèi)部集成電容)、分頻器(用于給實(shí)時(shí)時(shí)鐘RTC提供源時(shí)鐘)、可編程時(shí)鐘輸出、定時(shí)器、報(bào)警器、掉電檢測(cè)器和400kHz的I2C總線接口。所有16個(gè)寄存器設(shè)計(jì)成可尋址的8位并行寄存器,但不是所有位都有用。當(dāng)一個(gè)RTC寄存器被讀時(shí),所有計(jì)數(shù)器的內(nèi)容將被鎖存,因此,在傳送條件下,可以禁止對(duì)時(shí)鐘/日歷芯片的錯(cuò)讀。同時(shí)它還擁有PHILIPS的優(yōu)良品質(zhì),在3V電壓,25攝氏度下,功耗為250nA,非常低。本文選用PCF8563來外擴(kuò)實(shí)時(shí)時(shí)鐘,其硬件連接示意圖如圖1所示:

       
      圖1  PCF8563與S3C44B0X的連接圖

        4 I2C總線
         
        在現(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC需要進(jìn)行相互之間以及與外界的通信。為了提供硬件的效率和簡(jiǎn)化電路的設(shè)計(jì),PHILIPS開發(fā)了一種用于內(nèi)部IC控制的簡(jiǎn)單的雙向兩線串行總線I2C(Inter IC總線)。I2C總線支持任何一種IC制造工藝。作為一個(gè)專利的控制總線,I2C已經(jīng)成為世界性的工業(yè)標(biāo)準(zhǔn)[2]。

        5 uclinux系統(tǒng)[3]
         
        uClinux是微控制器領(lǐng)域中的Linux系統(tǒng)。它通常用于具有很少內(nèi)存或Flash的嵌入式操作系統(tǒng)。在GNU通用許可證的保證下,運(yùn)行µClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù)。它具有體積小、穩(wěn)定、良好的移植性、的網(wǎng)絡(luò)功能、完備的對(duì)各種文件系統(tǒng)的支持,以及豐富的API函數(shù)等優(yōu)點(diǎn)。uClinux除了不能實(shí)現(xiàn)fork()外,其余uClinux的API函數(shù)與標(biāo)準(zhǔn)Linux完全相同。
         
        ①.uClinux的內(nèi)核加載方式
         
        uClinux的內(nèi)核有兩種可選的運(yùn)行方式:可以在flash上直接運(yùn)行,也可以加載到內(nèi)存中運(yùn)行。Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動(dòng)時(shí)從flash的某個(gè)地址開始逐句執(zhí)行。內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行。
         
        ②.uclinux的根(root)文件系統(tǒng)
         
        uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對(duì)于一般的ext2文件系統(tǒng)要求更少的空間。內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,romfs文件系統(tǒng)相對(duì)簡(jiǎn)單,建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理(ram盤將采用ext2文件系統(tǒng))。

        6 uclinux在S3C44B0X上的移植[4]
         
        BootLoader引導(dǎo)程序是嵌入式開發(fā)很重要的組成部分。它是CPU 加電后個(gè)開始運(yùn)行的代碼,由它終將操作系統(tǒng)啟動(dòng)起來并將控制權(quán)交給操作系統(tǒng)內(nèi)核。BLOB(Boot Loader OBject)初是由Jan-Derk Bakker和Erik Mouw為L(zhǎng)ART而寫的引導(dǎo)代碼,由于其良好的移植性和強(qiáng)大的功能被移植到了很多其它機(jī)器上。BLOB遵守GNU GPL licence。BLOB功能比較強(qiáng)大,它可以:
         
        ①.. 初始化諸如CPU的主頻、SDRAM的控制管理、中斷、串行口等硬件;
        ②.. 啟動(dòng)Linux內(nèi)核并提供一個(gè)RAMDISK;
        ③.. 通過串口下載內(nèi)核或者RAMDISK到板卡上;
        ④.. 可以將修改過的新的內(nèi)核或者RAMDISK寫到Flash上;
        ⑤.. 可以重新自由設(shè)定存儲(chǔ)中不同的布局;
        ⑥.. 可以提供一個(gè)命令行接口給用戶。
         
        Blob常用的命令有:blob、boot、xdownload、flashreload、dump、reblob、status、flash等。xdownload命令用于下載內(nèi)核和根文件系統(tǒng)到內(nèi)存中,flash命令用來把它們燒到flash中。
         
        在PC機(jī)上建立起uclinux的編譯環(huán)境,在終端中運(yùn)行博創(chuàng)開發(fā)板自帶光盤上的install.sh文件,它將在你的PC機(jī)上安裝交叉編譯環(huán)境和一個(gè)在44B0X上運(yùn)行uclinux-2.4.x文件夾和許多有用的文件夾。建立交叉編譯環(huán)境也可以通過下在通用的gcc編譯器來實(shí)現(xiàn),它是一個(gè).sh文件,其運(yùn)行方法在后面有介紹。實(shí)際上就是建立uclinux的庫文件的過程。開源的好處就在于這一切都是透明的,不需要你去配置,只要會(huì)安裝就可以了。
         
        通過串口燒寫uclinux內(nèi)核和根文件系統(tǒng),這在Windows下使用超級(jí)終端。Linux下使用minicom。基本設(shè)置是波特率115200,8個(gè)數(shù)據(jù)位,無奇偶校驗(yàn),停止位1,無數(shù)據(jù)流控制。
         
        同時(shí)要在PC機(jī)上建立NFS文件共享服務(wù),本文的共享目錄是/root/nfs。進(jìn)入服務(wù)器配置選項(xiàng),里面有NFS,網(wǎng)絡(luò)服務(wù)器配置等。配置過程時(shí)建立要選擇共享的目錄和訪問的IP段。

        7 PCF8563的讀寫程序
         
        PCF8563 使用的是I2C總線,他的讀寫過程遵循總線的讀寫過程,S3C44B0X的I2C總線控制器為一個(gè)多主的控制器,其讀寫流程如圖2所示。

        根據(jù)流程編寫了PCF8563的讀寫程序。該程序通過uclinux的交叉編譯工具編譯成為可以在S3C44B0X上面運(yùn)行的程序,過程如下:該程序和它的頭文件放到同一個(gè)目錄下,然后打開終端在終端下執(zhí)行:

        cd 所在目錄
        arm-elf-gcc -elf2flt rtc main.c
        這樣就會(huì)生成一個(gè)uclinux下的可執(zhí)行文件,通過NFS掛載過去,步驟如下:
        ifconfig eth0 202.204.96.196
        mount -t nfs 202.204.96.198:/root/nfs /host
        用cd命令進(jìn)入所掛載的目錄,直接執(zhí)行就可以了。

        該過程在實(shí)際操作過程中可以用一種簡(jiǎn)便的方法來實(shí)現(xiàn),這也是經(jīng)行uclinux下開發(fā)程序的簡(jiǎn)便之處,那就是makefile 文件。我們?cè)谝慌_(tái)服務(wù)器主機(jī)上建立一個(gè)虛擬機(jī)VM work station,里面安裝的是linux系統(tǒng)和uclinux的交叉編譯環(huán)境,在需要編譯的文件所在目錄下建立一個(gè)makefile文件,內(nèi)容如下:

        all: main.c         //編譯的文件
        arm-elf-gcc -elf2flt -o rtc main.c  //編譯讀寫程序
        cp rtc /root/nfs      //復(fù)制rtc到NFS共享目錄下
        chmod +x /root/nfs/rtc     //改變可執(zhí)行文件rtc的屬性
         
        通過telnet獲得虛擬機(jī)的root權(quán)限。然后進(jìn)入main.c所在目錄。這時(shí)候的編譯就只需要在main.c所在目錄下運(yùn)行make命令就可以了,它會(huì)自動(dòng)生成可執(zhí)行文件rtc,自動(dòng)復(fù)制到NFS共享文件夾中。在開發(fā)板上進(jìn)入NFS共享文件夾,運(yùn)行其中的應(yīng)用程序。這種方法對(duì)程序的開發(fā)極其的方便,這也是linux下程序開發(fā)調(diào)試的優(yōu)勢(shì)之一。

        8 結(jié)論:
         
        本文使用PCF8563來代替CPU上集成的實(shí)時(shí)時(shí)鐘,使系統(tǒng)時(shí)間不會(huì)丟失,在硬件上保證了實(shí)時(shí)性;精度相對(duì)集成實(shí)時(shí)時(shí)鐘得到了提高。在其讀寫程序的編寫編譯過程中,還對(duì)uclinux下的高效程序開發(fā)方法進(jìn)行了實(shí)踐。在有較高的精度要求時(shí),可以對(duì)時(shí)鐘的精度進(jìn)行調(diào)整以適應(yīng)需求。同時(shí)這種擴(kuò)展方法具有一定的通用性,可以在各種單片機(jī)和ARM應(yīng)用系統(tǒng)中使用,有一定的使用和借鑒價(jià)值。

        參考文獻(xiàn):
        
        [1]  李駒光等.《ARM應(yīng)用系統(tǒng)開發(fā)祥解》.北京:清華大學(xué)出版社,2003
        [2]  慕春棣.《嵌入式系統(tǒng)的構(gòu)建》.清華大學(xué)自動(dòng)化系試用教材.2003年1月
        [3]  劉崢嶸、張智超等編著.《嵌入式Linux應(yīng)用開發(fā)詳解》.北京:機(jī)械工業(yè)出版社.2004
        [4]  北京博創(chuàng)科技有限公司.UP-NETARM3000uClinux開發(fā)指南.2003年11月

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜两性色韩国在线视频 | 中文字幕亚洲综合久久综合 | 亚洲欧美日韩中文在线v日本 | 久久亚洲精品永久网站 | 日韩OL精品视频在线观看 | 中文字幕久久久 |