日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]uC/OS II在S3C2410上的移植

隨著信息化技術的發(fā)展和數字化產品的普及,以計算機技術、芯片技術和軟件技術為核心的嵌入式系統再度成為當前研究和應用的熱點。對功能、可靠性、成本、體積和功耗嚴格要求的嵌入式系統一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,其中嵌入式微處理器和嵌入式操作系統分別是其硬件和軟件的核心。
    ARM處理器由于其具有小體積、低功耗、低成本、高性能等特點,廣泛應用在16/32位嵌入式RISC解決方案中,幾乎占有嵌入式微處理器市場分額的75% ,本文選定三星公司生產的一款基于ARM920T核的高性能低功耗SOC芯片S3C2410作為移植方案的硬件平臺。市場上主流的嵌入式實時操作系統有Vxworks、pSos、WinCE、Linux等,基于實時性、成本以及開發(fā)難度方面的考慮,我們選擇uC/OS II——開放源代碼的嵌入式實時操作系統。
1 uC/OS II介紹
    uC/OS II(Micro Control Operation System Two)是一個可以基于ROM運行的、可裁減的、搶占式(見圖1)實時多任務內核,具有高度可移植性,特別適合于微處理器和控制器,是和很多商業(yè)操作系統性能相當的實時操作系統(RTOS)。為了提供最好的移植性能,uC/OS II最大程度上使用ANSI C語言進行開發(fā),并且已經移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU(包括DSP)。

 uC/OS II可以簡單的視為一個多任務調度器,在這個任務調度器之上完善并添加了和多任務操作系統相關的系統服務,如信號量、郵箱等。其主要特點有公開源代碼,代碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內核屬于搶占式,最多可以管理60個任務。從1992年開始,由于高度可靠性、魯棒性和安全性,uC/OS II已經廣泛使用在從照相機到航空電子產品的各種應用中。

2 uC/OS II在S3C2410上的可移植性
    所謂移植,就是使這個實時內核能在某個微處理器上運行。為了方便移植,大部分的uC/OS II代碼是用c語言寫的,但仍需要用c和匯編語言寫一些與處理器相關的代碼,這是因為uC/OS II在讀寫處理器寄存器時只能通過匯編語言來實現。由于uC/OS II在設計時就已經充分考慮了可移植性,所以uC/OS II的移植相對來說是比較容易的。uC/OS II的框架結構如圖2。

 uC/OSII的正常運行需要處理器平臺滿足以下要求:
a)處理器的C編譯器能產生可重入代碼。
b)用C語言就可以打開和關閉中斷。
c)處理器支持中斷,并且能產生定時中斷(通常在10至100Hz之間)。
d)處理器支持能夠容納一定量數據(可能是幾千字節(jié))的硬件堆棧。
e)處理器有將堆棧指針和其它CPU寄存器讀出和存儲到堆棧或內存中的指令。
    S3C2410處理器采用ARM920T內核,內部共有37個寄存器,其中R13通常用作堆棧指針,只要系統RAM空間允許,堆棧空間理論上沒有限制。ARM處理器提供ARM指令和Thumb指令兩種指令集,每種指令集都包含有豐富的指令對堆棧進行操作,可以隨意的對處理器中的寄存器進行堆棧操作。根據堆棧生長方向的不同,可以生成4種不同的堆棧,分別是滿遞增、空遞增、滿遞減(此移植中使用的是滿遞減方式)、空遞減。芯片內集成5個定時時鐘,任何一個都可以產生定時中斷,滿足第三條要求。ADS集成開發(fā)環(huán)境的內置編譯器可以產生可重入代碼,并且支持內嵌匯編,C環(huán)境中可任意的進行開關中斷操作。綜上所述uC/OS II完全可以移植到S3C2410上運行。

3 主體移植過程
3.1 設置與處理器及編譯器相關的代碼[OS_CPU.H]
    不同的編譯器會使用不同的字節(jié)長度來表示同一數據類型,所以要定義一系列數據類型以確保移植的正確性。下面是uC/OS II定義的一部分數據類型。
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;/*無符號8位*/
typedef signed char INT16S;/*帶符號8位*/
typedef unsigned int INT16U;/*無符號16位*/
typedef signed int INT16S;/*帶符號16位*/
typedef unsigned long INT32U;/*無符號32位數*/
typedef signed long INT32S;/*帶符號32位數*/
typedef float FP32;/*單精度浮點數*/
typedef double FP64;/*雙精度浮點數*/
typedef unsigned int OS_STK;/*堆棧入口寬度*/
typedef unsigned int OS_CPU_SR;/*寄存器寬度*/
    uC/OS II需要先關中斷再訪問臨界區(qū)的代碼,并且在訪問完后重新允許中斷。uC/OS II定義了兩個宏來禁止和允許中斷:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(),本移植實現這兩個宏的匯編代碼。
#define OS_ENTER_CRITICAL()(cpu_sr=OSCPUSaveSR())/*Disable interrupts*/
#define OS_EXIT_CRITICAL()(OSCPURestoreSR(cpu_sr))/*Enable interrupts*/
EXPORT OSCPUSaveSR
OSCPUSaveSR
mrs r1,cpsr
mov r0,r1
orr r1,r1,#0xc0
msr cpsr_cxsf,r1
mov pc,lr
EXPORT OSCPURestoreSR
OSCPURestoreSR
msr cpsr_cxsf,r0
mov pc,lr

3.2 用C語言實現與處理器任務相關的函數[OS_CPU_C.C]
OSTaskStkInit()
OSTaskCreateHook()
OSTaskDelHook()
OSTaskSwHook()
OSTaskStatHook()
OSTimeTickHook()
    實際需要修改的只有OSTaskStkInit()函數,其他五個函數需要聲明,但不一定有實際內容。這五個函數都是用戶定義的,所以OS_CPU_C.C中沒有給出代碼。如果需要使用這些函數,可以將文件OS_CFG.H中的#define constant OS_CPU_HOOKS_EN設為1,設為0表示不使用這些函數。
    OSTaskStkInit()函數由OSTaskCreate()或OSTaskCreateExt()調用,需要傳遞的參數是任務代碼的起始地址、參數指針(pdata)、任務堆棧頂端的地址和任務的優(yōu)先級,用來初始化任務的堆棧,初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結構。堆棧初始化工作結束后,OSTaskStkInit()返回新的堆棧棧頂指針,OSTaskCreate()或OSTaskCreateExt()將指針保存在任務的OS_TCB中。調用OSTaskStkInit()給任務做一個初始的任務上下文堆棧,形狀如圖3。

3.3 處理器相關部分匯編實現
    整個uC/OS II移植實現中,只需要提供一個匯編語言文件,提供幾個必須由匯編才能實現的函數。
a)OSStartHighRdy()
    該函數在OSStart()多任務啟動之后,負責從最高優(yōu)先級任務的TCB控制塊中獲得該任務的堆棧指針sp,通過sp依次將CPU現場恢復,此時系統就將控制權交給用戶創(chuàng)建的該任務的進程,直到該任務被阻塞或者被其他更高優(yōu)先級的任務搶占了CPU。該函數僅僅在多任務啟動時被執(zhí)行一次,用來啟動第一個,也就是最高優(yōu)先級的任務執(zhí)行。
b)OSCtxSw()
    該函數是任務級的上下文切換函數,在任務因為被阻塞而主動請求與CPU調度時執(zhí)行,主要工作是先將當前任務的CPU現場保存到該任務堆棧中,然后獲得最高優(yōu)先級任務的堆棧指針,從該堆棧中恢復此任務的CPU現場,使之繼續(xù)執(zhí)行,從而完成一次任務切換。
C)OSIntExit()
    該函數是中斷級的任務切換函數,在時鐘中斷ISR中發(fā)現有高優(yōu)先級任務在等待時,需要在中斷退出后不返回被中斷的任務,而是直接調度就緒的高優(yōu)先級任務執(zhí)行。其目的在于能夠盡快讓高優(yōu)先級的任務得到響應,保證系統的實時性能。
d)OSTickISR()
    該函數是時鐘中斷處理函數,主要任務是負責處理時鐘中斷,調用系統實現的OSTimeTick函數,如果有等待時鐘信號的高優(yōu)先級任務,則需要在中斷級別上調度其執(zhí)行。另外兩個相關函數是OSIntEnter()和OSIntExit(),都需要在ISR中執(zhí)行。

4 測試
    至此代碼移植過程已經完成,下一步工作就是測試。測試一個象uC/OS II一樣的多任務實時內核并不復雜,甚至可以在沒有應用程序的情況下測試。換句話說,就是讓這個實時內核在目標板上跑起來,讓內核自己測試自己。這樣做有兩個好處:第一,避免使本來就復雜的事情更加復雜;第二,如果出現問題,可以知道問題出在內核代碼上而不是應用程序。剛開始的時候可以運行一些簡單的任務和時鐘節(jié)拍中斷服務例程。一旦多任務調度成功地運行了,再添加應用程序的任務就是非常簡單的工作了。

5 結束語
    采用基于ARM9的S3C2410嵌入式微處理器,可以使系統具備高性能的運算能力的同時便于與各種外設連接擴展,簡化了硬件設計,維持小型化的同時降低了系統成本。uC/OS II作為一個源代碼公開的操作系統,在具體應用中穩(wěn)定可靠,并且支持uIP TCP/IP協議棧、ucGUI等,可擴展性強,功能強大。本系統采ARM9+uC/OS II開發(fā)設計,具有精度高、運行穩(wěn)定、實時性好、抗干擾能力強、性價比高的特點,可以在各種工業(yè)場合中廣泛應用,達到了設計的初衷。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險積極籌備個人養(yǎng)老金的產品設計和系統開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產品,推動商業(yè)養(yǎng)老保險、個人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險等產品供給。 搭養(yǎng)老政策東風 ...

關鍵字: 溫度 BSP 東風 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎單元,承載著生存與活動的最基本功能。而對于理想空間的解構意義卻在物理性容器之外,體現出人們對于空間和生活深層關系的思考,同時也塑造著人與空間的新型連接...

關鍵字: 溫度 BSP 智能化 進程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績預告。今年前三季度,公司預計實現營業(yè)收入7.54億元至8.33億元,同比增長60.24%至77.03%;歸母凈利潤預計為1.73億...

關鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經濟和信息化局發(fā)布2022年度第一批北京市市級企業(yè)技術中心創(chuàng)建名單的通知,諾誠健華正式獲得"北京市企業(yè)技術中心"認定。 北京市企業(yè)技...

關鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國際數據公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...

關鍵字: IDC BSP 數字化 數據中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團成立60周年的紀念日。趁著首都銀行集團成立60周年與首都銀行(中國)在華深耕經營12年的“大日子”,圍繞作為外資金融機構對在華戰(zhàn)略的構想和業(yè)...

關鍵字: 數字化 BSP 供應鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團公司上海通運國際物流有限公司(Nipp...

關鍵字: 溫控 精密儀器 半導體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國進出口商品交易會("廣交會")于"云端"開幕。本屆廣交會上高新技術企業(yè)云集,展出的智能產品超過140,...

關鍵字: 中國智造 BSP 手機 CAN

要問機器人公司哪家強,波士頓動力絕對是其中的佼佼者。近來年該公司在機器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機器人會后空翻,自主爬樓梯等。這不,波士頓動力又發(fā)布了其機器人組團跳男團舞的新視頻,表演的機器人包括...

關鍵字: 機器人 BSP 工業(yè)機器人 現代汽車

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國高端家電品牌G50峰會》于浙江寧波落幕,來自兩百余名行業(yè)大咖、專家學者共同探討了在形勢依然嚴峻的當下,如何以科技創(chuàng)新、高端化轉型等手段,幫助...

關鍵字: LINK AI BSP 智能家電

嵌入式軟件

15715 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉