ARM嵌入式系統(tǒng)軟件實(shí)時(shí)時(shí)鐘的設(shè)計(jì)
1 引言
現(xiàn)在的許多設(shè)備對實(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í)候,必須在對應(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é)的,這對實(shí)時(shí)性來說精度是很重要的指標(biāo)。
2 ARM處理器
ARM(Advanced RISC Machines)是一類微處理器的通稱[1]。1991年ARM公司成立于英國劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。ARM現(xiàn)在已遍及工業(yè)控制,消費(fèi)類電子產(chǎn)品,通信系統(tǒng),網(wǎng)絡(luò)系統(tǒng),無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術(shù)的微處理器應(yīng)用占據(jù)了32位RISC微處理器75%以上的市場比例,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)警器、掉電檢測器和400kHz的I2C總線接口。所有16個(gè)寄存器設(shè)計(jì)成可尋址的8位并行寄存器,但不是所有位都有用。當(dāng)一個(gè)RTC寄存器被讀時(shí),所有計(jì)數(shù)器的內(nèi)容將被鎖存,因此,在傳送條件下,可以禁止對時(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)行相互之間以及與外界的通信。為了提供硬件的效率和簡化電路的設(shè)計(jì),PHILIPS開發(fā)了一種用于內(nèi)部IC控制的簡單的雙向兩線串行總線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)行micro;Clinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù)。它具有體積小、穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的對各種文件系統(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)相對于一般的ext2文件系統(tǒng)要求更少的空間。內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,romfs文件系統(tǒng)相對簡單,建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對于系統(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為LART而寫的引導(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中。
評論