下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 uC/OS II在S3C2410上的移植摘要:實現(xiàn)了一種全集成可變帶寬中頻寬帶低通濾波器,討論分析了跨導放大器-電容(OTAC)連續(xù)時間型濾波器的結(jié)構(gòu)、設計和具體實現(xiàn),使用外部可編程電路對所設計濾波器帶寬進行控制,并利用ADS軟件進行電路設計和仿真驗證。仿真結(jié)果表明,該濾波器帶寬的可調(diào)范圍為126 MHz,阻帶抑制率大于35 dB,帶內(nèi)波紋小于05 dB,采用18 V電源,TSMC 018m CMOS工藝庫仿真,功耗小于21 mW,頻響曲線接近理想狀態(tài)。關(guān)鍵詞:Butte隨著信息化技術(shù)的發(fā)展和數(shù)字化產(chǎn)品的普及,以計算機技術(shù)、芯片技術(shù)和軟件技術(shù)為核
2、心的嵌入式系統(tǒng)再度成為當前研究和應用的熱點。對功能、可靠性、成本、體積和功耗嚴格要求的嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統(tǒng)以及用戶的應用程序等四個部分組成,其中嵌入式微處理器和嵌入式操作系統(tǒng)分別是其硬件和軟件的核心。 ARM處理器由于其具有小體積、低功耗、低成本、高性能等特點,廣泛應用在16/32位嵌入式RISC解決方案中,幾乎占有嵌入式微處理器市場分額的75% ,本文選定三星公司生產(chǎn)的一款基于ARM920T核的高性能低功耗SOC芯片S3C2410作為移植方案的硬件平臺。市場上主流的嵌入式實時操作系統(tǒng)有Vxworks、pSos、Win
3、CE、Linux等,基于實時性、成本以及開發(fā)難度方面的考慮,我們選擇uC/OS II開放源代碼的嵌入式實時操作系統(tǒng)。1 uC/OS II介紹 uC/OS II(Micro Control Operation System Two)是一個可以基于ROM運行的、可裁減的、搶占式(見圖1)實時多任務內(nèi)核,具有高度可移植性,特別適合于微處理器和控制器,是和很多商業(yè)操作系統(tǒng)性能相當?shù)膶崟r操作系統(tǒng)(RTOS)。為了提供最好的移植性能,uC/OS II最大程度上使用ANSI C語言進行開發(fā),并且已經(jīng)移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU(包括DSP)
4、。 uC/OS II可以簡單的視為一個多任務調(diào)度器,在這個任務調(diào)度器之上完善并添加了和多任務操作系統(tǒng)相關(guān)的系統(tǒng)服務,如信號量、郵箱等。其主要特點有公開源代碼,代碼結(jié)構(gòu)清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內(nèi)核屬于搶占式,最多可以管理60個任務。從1992年開始,由于高度可靠性、魯棒性和安全性,uC/OS II已經(jīng)廣泛使用在從照相機到航空電子產(chǎn)品的各種應用中。2 uC/OS II在S3C2410上的可移植性 所謂移植,就是使這個實時內(nèi)核能在某個微處理器上運行。為了方便移植,大部分的uC/OS II代碼是用c語言寫的,但仍需要用
5、c和匯編語言寫一些與處理器相關(guān)的代碼,這是因為uC/OS II在讀寫處理器寄存器時只能通過匯編語言來實現(xiàn)。由于uC/OS II在設計時就已經(jīng)充分考慮了可移植性,所以uC/OS II的移植相對來說是比較容易的。uC/OS II的框架結(jié)構(gòu)如圖2。 uC/OSII的正常運行需要處理器平臺滿足以下要求:a)處理器的C編譯器能產(chǎn)生可重入代碼。b)用C語言就可以打開和關(guān)閉中斷。c)處理器支持中斷,并且能產(chǎn)生定時中斷(通常在10至100Hz之間)。d)處理器支持能夠容納一定量數(shù)據(jù)(可能是幾千字節(jié))的硬件堆棧。e)處理器有將堆棧指針和其它CPU寄存器讀出和存儲到堆?;騼?nèi)存中的指令。
6、60; S3C2410處理器采用ARM920T內(nèi)核,內(nèi)部共有37個寄存器,其中R13通常用作堆棧指針,只要系統(tǒng)RAM空間允許,堆??臻g理論上沒有限制。ARM處理器提供ARM指令和Thumb指令兩種指令集,每種指令集都包含有豐富的指令對堆棧進行操作,可以隨意的對處理器中的寄存器進行堆棧操作。根據(jù)堆棧生長方向的不同,可以生成4種不同的堆棧,分別是滿遞增、空遞增、滿遞減(此移植中使用的是滿遞減方式)、空遞減。芯片內(nèi)集成5個定時時鐘,任何一個都可以產(chǎn)生定時中斷,滿足第三條要求。ADS集成開發(fā)環(huán)境的內(nèi)置編譯器可以產(chǎn)生可重入代碼,并且支持內(nèi)嵌匯編,C環(huán)境中可任意的進行開關(guān)中斷操作。綜上所述uC
7、/OS II完全可以移植到S3C2410上運行。3 主體移植過程3.1 設置與處理器及編譯器相關(guān)的代碼OS_CPU.H 不同的編譯器會使用不同的字節(jié)長度來表示同一數(shù)據(jù)類型,所以要定義一系列數(shù)據(jù)類型以確保移植的正確性。下面是uC/OS II定義的一部分數(shù)據(jù)類型。typedef unsigned char BOOLEAN;typedef unsigned char INT8U;/*無符號8位*/typedef signed char INT16S;/*帶符號8位*/typedef unsigned int INT16U;/*無符號16位*/typedef sig
8、ned int INT16S;/*帶符號16位*/typedef unsigned long INT32U;/*無符號32位數(shù)*/typedef signed long INT32S;/*帶符號32位數(shù)*/typedef float FP32;/*單精度浮點數(shù)*/typedef double FP64;/*雙精度浮點數(shù)*/typedef unsigned int OS_STK;/*堆棧入口寬度*/typedef unsigned int OS_CPU_SR;/*寄存器寬度*/ uC/OS II需要先關(guān)中斷再訪問臨界區(qū)的代碼,并且在訪問完后重新允許中斷。uC/
9、OS II定義了兩個宏來禁止和允許中斷:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(),本移植實現(xiàn)這兩個宏的匯編代碼。#define OS_ENTER_CRITICAL()(cpu_sr=OSCPUSaveSR()/*Disable interrupts*/#define OS_EXIT_CRITICAL()(OSCPURestoreSR(cpu_sr)/*Enable interrupts*/EXPORT OSCPUSaveSROSCPUSaveSRmrs r1,cpsrmov r0,r1orr r1,r1,#0xc0msr cpsr_cxsf,r1mov pc
10、,lrEXPORT OSCPURestoreSROSCPURestoreSRmsr cpsr_cxsf,r0mov pc,lr3.2 用C語言實現(xiàn)與處理器任務相關(guān)的函數(shù)OS_CPU_C.COSTaskStkInit()OSTaskCreateHook()OSTaskDelHook()OSTaskSwHook()OSTaskStatHook()OSTimeTickHook() 實際需要修改的只有OSTaskStkInit()函數(shù),其他五個函數(shù)需要聲明,但不一定有實際內(nèi)容。這五個函數(shù)都是用戶定義的,所以OS_CPU_C.C中沒有給出代碼。如果需要使用這些函數(shù),可
11、以將文件OS_CFG.H中的#define constant OS_CPU_HOOKS_EN設為1,設為0表示不使用這些函數(shù)。 OSTaskStkInit()函數(shù)由OSTaskCreate()或OSTaskCreateExt()調(diào)用,需要傳遞的參數(shù)是任務代碼的起始地址、參數(shù)指針(pdata)、任務堆棧頂端的地址和任務的優(yōu)先級,用來初始化任務的堆棧,初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結(jié)構(gòu)。堆棧初始化工作結(jié)束后,OSTaskStkInit()返回新的堆棧棧頂指針,OSTaskCreate()或OSTaskCreateExt()將指針保存在任務的OS_TCB中
12、。調(diào)用OSTaskStkInit()給任務做一個初始的任務上下文堆棧,形狀如圖3。3.3 處理器相關(guān)部分匯編實現(xiàn) 整個uC/OS II移植實現(xiàn)中,只需要提供一個匯編語言文件,提供幾個必須由匯編才能實現(xiàn)的函數(shù)。a)OSStartHighRdy() 該函數(shù)在OSStart()多任務啟動之后,負責從最高優(yōu)先級任務的TCB控制塊中獲得該任務的堆棧指針sp,通過sp依次將CPU現(xiàn)場恢復,此時系統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務的進程,直到該任務被阻塞或者被其他更高優(yōu)先級的任務搶占了CPU。該函數(shù)僅僅在多任務啟動時被執(zhí)行一次,用來啟動第
13、一個,也就是最高優(yōu)先級的任務執(zhí)行。b)OSCtxSw() 該函數(shù)是任務級的上下文切換函數(shù),在任務因為被阻塞而主動請求與CPU調(diào)度時執(zhí)行,主要工作是先將當前任務的CPU現(xiàn)場保存到該任務堆棧中,然后獲得最高優(yōu)先級任務的堆棧指針,從該堆棧中恢復此任務的CPU現(xiàn)場,使之繼續(xù)執(zhí)行,從而完成一次任務切換。C)OSIntExit() 該函數(shù)是中斷級的任務切換函數(shù),在時鐘中斷ISR中發(fā)現(xiàn)有高優(yōu)先級任務在等待時,需要在中斷退出后不返回被中斷的任務,而是直接調(diào)度就緒的高優(yōu)先級任務執(zhí)行。其目的在于能夠盡快讓高優(yōu)先級的任務得到響應,保證系統(tǒng)的實時
14、性能。d)OSTickISR() 該函數(shù)是時鐘中斷處理函數(shù),主要任務是負責處理時鐘中斷,調(diào)用系統(tǒng)實現(xiàn)的OSTimeTick函數(shù),如果有等待時鐘信號的高優(yōu)先級任務,則需要在中斷級別上調(diào)度其執(zhí)行。另外兩個相關(guān)函數(shù)是OSIntEnter()和OSIntExit(),都需要在ISR中執(zhí)行。4 測試 至此代碼移植過程已經(jīng)完成,下一步工作就是測試。測試一個象uC/OS II一樣的多任務實時內(nèi)核并不復雜,甚至可以在沒有應用程序的情況下測試。換句話說,就是讓這個實時內(nèi)核在目標板上跑起來,讓內(nèi)核自己測試自己。這樣做有兩個好處:第一,避免使本來就復雜的事情更加復雜;第二,如果出現(xiàn)問題,可以知道問題出在內(nèi)核代碼上而不是應用程序。剛開始的時候可以運行一些簡單的任務和時鐘節(jié)拍中斷服務例程。一旦多任務調(diào)度成功地運行了,再添加應用程序的任務就是非常簡單的工作了。5 結(jié)束語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 混線課程設計
- 2024年度旅游行業(yè)導游及服務員勞動合同范本3篇
- 2020-2021學年江蘇省徐州市泉山區(qū)四年級下學期期中語文真題及答案
- 游戲登錄界面課程設計
- 思維游戲課程設計
- 2020-2021學年江蘇省無錫市惠山區(qū)二年級上冊數(shù)學期中試題及答案
- 我做的樂器課程設計
- 2020-2021學年廣東省廣州市花都區(qū)部編版小學三年級下冊語文期末試題及答案
- 2024年人教版PEP高三歷史下冊階段測試試卷含答案193
- 2022-2023學年河北省唐山市開平區(qū)四年級下學期期末數(shù)學真題及答案
- 湘少版三年級下冊英語單詞默寫1(附單元標題句)
- 試制過程記錄表
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學高一物理第一學期期末質(zhì)量檢測試題含解析
- 道路運輸安全生產(chǎn)目標責任書
- 高中音樂-《錦雞出山》教學課件設計
- 國開大學2023年01月11026《經(jīng)濟學(本)》期末考試答案
- 初中歷史復習策略
- 常用介電常數(shù)
- 隨班就讀案例
- 智能制造工程訓練中心建設方案
- 國家開放大學《管理學基礎》形考任務4參考答案
評論
0/150
提交評論