ARM嵌入式系統(tǒng)軟件實時時鐘的設(shè)計
出處:尤新亮 發(fā)布于:2007-04-19 09:25:22
1 引言
現(xiàn)在的許多設(shè)備對實時時鐘都有很高的要求,在片集成的實時時鐘往往只注意到了其使用的方便,而沒有考慮在實際應用中還有很多特殊的要求。本文討論如何使用獨立的外擴實時時鐘,來滿足這些要求。
什么是實時系統(tǒng)?就是系統(tǒng)運行時的反饋信息或者指令,必須在要求的時間內(nèi)發(fā)出或者返回,否則視為無效。例如,數(shù)據(jù)采集的時候,必須在對應的時間內(nèi)得到信號,以保證數(shù)據(jù)采集的有效性。那么什么是實時時鐘?就是采用獨立的晶振(或集成),擁有獨立供電系統(tǒng),永不間斷的運行,從而給系統(tǒng)提供可靠的系統(tǒng)時間。
集成的實時時鐘和獨立實時時鐘的比較:
以博創(chuàng)UP-NETARM3000開發(fā)板為例,它使用的是三星公司生產(chǎn)的S3C44B0XARM7處理器,該處理器內(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é)的,這對實時性來說是很重要的指標。
2 ARM處理器
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ù)的微處理器應用占據(jù)了32位RISC微處理器75%以上的市場比例,ARM 技術(shù)正在逐步滲入到我們生活的各個方面。
3 PCF8563
PCF8563是PHILIPS公司生產(chǎn)的低功耗CMOS實時時鐘/日歷芯片, 芯片總線速度為400kbits/s,每次讀寫數(shù)據(jù)后,其內(nèi)嵌的字地址寄存器會自動產(chǎn)生增量。PCF8563可廣泛應用于移動電話、便攜儀器、傳真機、電池電源等產(chǎn)品中。PCF8563有16個8位寄存器,其中包括:可自動增量的地址寄存器、內(nèi)置32.768kHz的振蕩器(帶有一個內(nèi)部集成電容)、分頻器(用于給實時時鐘RTC提供源時鐘)、可編程時鐘輸出、定時器、報警器、掉電檢測器和400kHz的I2C總線接口。所有16個寄存器設(shè)計成可尋址的8位并行寄存器,但不是所有位都有用。當一個RTC寄存器被讀時,所有計數(shù)器的內(nèi)容將被鎖存,因此,在傳送條件下,可以禁止對時鐘/日歷芯片的錯讀。同時它還擁有PHILIPS的優(yōu)良品質(zhì),在3V電壓,25攝氏度下,功耗為250nA,非常低。本文選用PCF8563來外擴實時時鐘,其硬件連接示意圖如所示:
PCF8563與S3C44B0X的連接圖
4 I2C總線
在現(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC需要進行相互之間以及與外界的通信。為了提供硬件的效率和簡化電路的設(shè)計,PHILIPS開發(fā)了一種用于內(nèi)部IC控制的簡單的雙向兩線串行總線I2C(Inter IC總線)。I2C總線支持任何一種IC制造工藝。作為一個的控制總線,I2C已經(jīng)成為世界性的工業(yè)標準[2]。
5 uclinux系統(tǒng)[3]
uClinux是微控制器領(lǐng)域中的Linux系統(tǒng)。它通常用于具有很少內(nèi)存或Flash的嵌入式操作系統(tǒng)。在GNU通用許可證的保證下,運行µClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù)。它具有體積小、穩(wěn)定、良好的移植性、的網(wǎng)絡(luò)功能、完備的對各種文件系統(tǒng)的支持,以及豐富的API函數(shù)等優(yōu)點。uClinux除了不能實現(xiàn)fork()外,其余uClinux的API函數(shù)與標準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盤的方法進行處理(ram盤將采用ext2文件系統(tǒng))。
6 uclinux在S3C44B0X上的移植[4]
BootLoader引導程序是嵌入式開發(fā)很重要的組成部分。它是CPU 加電后個開始運行的代碼,由它終將操作系統(tǒng)啟動起來并將控制權(quán)交給操作系統(tǒng)內(nèi)核。BLOB(Boot Loader OBject)初是由Jan-Derk Bakker和Erik Mouw為LART而寫的引導代碼,由于其良好的移植性和強大的功能被移植到了很多其它機器上。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中。
在PC機上建立起uclinux的編譯環(huán)境,在終端中運行博創(chuàng)開發(fā)板自帶光盤上的install.sh文件,它將在你的PC機上安裝交叉編譯環(huán)境和一個在44B0X上運行uclinux-2.4.x文件夾和許多有用的文件夾。建立交叉編譯環(huán)境也可以通過下在通用的gcc編譯器來實現(xiàn),它是一個.sh文件,其運行方法在后面有介紹。實際上就是建立uclinux的庫文件的過程。開源的好處就在于這一切都是透明的,不需要你去配置,只要會安裝就可以了。
通過串口燒寫uclinux內(nèi)核和根文件系統(tǒng),這在Windows下使用超級終端。Linux下使用minicom?;驹O(shè)置是波特率115200,8個數(shù)據(jù)位,無奇偶校驗,停止位1,無數(shù)據(jù)流控制。
同時要在PC機上建立NFS文件共享服務(wù),本文的共享目錄是/root/nfs。進入服務(wù)器配置選項,里面有NFS,網(wǎng)絡(luò)服務(wù)器配置等。配置過程時建立要選擇共享的目錄和訪問的IP段。
7 PCF8563的讀寫程序
PCF8563 使用的是I2C總線,他的讀寫過程遵循總線的讀寫過程,S3C44B0X的I2C總線控制器為一個多主的控制器,其讀寫流程如所示。
根據(jù)流程編寫了PCF8563的讀寫程序。該程序通過uclinux的交叉編譯工具編譯成為可以在S3C44B0X上面運行的程序,過程如下:該程序和它的頭文件放到同一個目錄下,然后打開終端在終端下執(zhí)行:
cd 所在目錄
arm-elf-gcc -elf2flt rtc main.c
這樣就會生成一個uclinux下的可執(zhí)行文件,通過NFS掛載過去,步驟如下:
ifconfig eth0 202.204.96.196
mount -t nfs 202.204.96.198:/root/nfs /host
用cd命令進入所掛載的目錄,直接執(zhí)行就可以了。
該過程在實際操作過程中可以用一種簡便的方法來實現(xiàn),這也是經(jīng)行uclinux下開發(fā)程序的簡便之處,那就是makefile文件。我們在一臺服務(wù)器主機上建立一個虛擬機VM work station,里面安裝的是linux系統(tǒng)和uclinux的交叉編譯環(huán)境,在需要編譯的文件所在目錄下建立一個makefile文件,內(nèi)容如下:
all: main.c //編譯的文件
arm-elf-gcc -elf2flt -o rtc main.c //編譯讀寫程序
cp rtc /root/nfs //復制rtc到NFS共享目錄下
chmod +x /root/nfs/rtc //改變可執(zhí)行文件rtc的屬性
通過telnet獲得虛擬機的root權(quán)限。然后進入main.c所在目錄。這時候的編譯就只需要在main.c所在目錄下運行make命令就可以了,它會自動生成可執(zhí)行文件rtc,自動復制到NFS共享文件夾中。在開發(fā)板上進入NFS共享文件夾,運行其中的應用程序。這種方法對程序的開發(fā)極其的方便,這也是linux下程序開發(fā)調(diào)試的優(yōu)勢之一。
8 結(jié)論:
本文使用PCF8563來代替CPU上集成的實時時鐘,使系統(tǒng)時間不會丟失,在硬件上保證了實時性;相對集成實時時鐘得到了提高。在其讀寫程序的編寫編譯過程中,還對uclinux下的高效程序開發(fā)方法進行了實踐。在有較高的要求時,可以對時鐘的進行調(diào)整以適應需求。同時這種擴展方法具有一定的通用性,可以在各種單片機和ARM應用系統(tǒng)中使用,有一定的使用和借鑒價值。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識2025/7/14 16:59:04









