<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM嵌入式系統(tǒng)軟件實時時鐘的設(shè)計

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

          作者: 時間:2012-10-25 來源:網(wǎng)絡(luò) 收藏

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

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

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



          圖1 PCF8563與S3C44B0X的連接圖


          4 I2C總線
          在現(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC需要進(jìn)行相互之間以及與外界的通信。為了提供硬件的效率和簡化電路的設(shè)計,PHILIPS開發(fā)了一種用于內(nèi)部IC控制的簡單的雙向兩線串行總線I2C(Inter IC總線)。I2C總線支持任何一種IC制造工藝。作為一個專利的控制總線,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通用許可證的保證下,運行micro;Clinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù)。它具有體積小、穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的對各種文件系統(tǒng)的支持,以及豐富的API函數(shù)等優(yōu)點。uClinux除了不能實現(xiàn)fork()外,其余uClinux的API函數(shù)與標(biāo)準(zhǔn)Linux完全相同。
          ①.uClinux的內(nèi)核加載方式
          uClinux的內(nèi)核有兩種可選的運行方式:可以在flash上直接運行,也可以加載到內(nèi)存中運行。Flash運行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動時從flash的某個地址開始逐句執(zhí)行。內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動時讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行。
          ②.uclinux的根(root)文件系統(tǒng)
          uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對于一般的ext2文件系統(tǒng)要求更少的空間。內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,romfs文件系統(tǒng)相對簡單,建立文件系統(tǒng)超級塊(superblock)需要更少的存儲空間。romfs文件系統(tǒng)不支持動態(tài)擦寫保存,對于系統(tǒng)需要動態(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理(ram盤將采用ext2文件系統(tǒng))。

          6 uclinux在S3C44B0X上的移植[4]
          BootLoader引導(dǎo)程序是嵌入式開發(fā)很重要的組成部分。它是CPU 加電后第一個開始運行的代碼,由它最終將操作系統(tǒng)啟動起來并將控制權(quán)交給操作系統(tǒng)內(nèi)核。BLOB(Boot Loader OBject)最初是由Jan-Derk Bakker和Erik Mouw為LART而寫的引導(dǎo)代碼,由于其良好的移植性和強大的功能被移植到了很多其它機器上。BLOB遵守GNU GPL licence。BLOB功能比較強大,它可以:
          ①.. 初始化諸如CPU的主頻、SDRAM的控制管理、中斷、串行口等硬件;
          ②.. 啟動Linux內(nèi)核并提供一個RAMDISK;
          ③.. 通過串口下載內(nèi)核或者RAMDISK到板卡上;
          ④.. 可以將修改過的新的內(nèi)核或者RAMDISK寫到Flash上;
          ⑤.. 可以重新自由設(shè)定存儲中不同的布局;
          ⑥.. 可以提供一個命令行接口給用戶。
          Blob常用的命令有:blob、boot、xdownload、flashreload、dump、reblob、status、flash等。xdownload命令用于下載內(nèi)核和根文件系統(tǒng)到內(nèi)存中,flash命令用來把它們燒到flash中。

          分頻器相關(guān)文章:分頻器原理

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();