www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要:首先介紹μC/OS-II操作系統(tǒng)的特點,重點分析μC/OS-II在EP7312上的移植方法,介紹μC/OS-II在EP7312中的開發(fā)過程。 關(guān)鍵詞:嵌入式操作系統(tǒng) μC/OS-II EP73

摘要:首先介紹μC/OS-II操作系統(tǒng)的特點,重點分析μC/OS-II在EP7312上的移植方法,介紹μC/OS-II在EP7312中的開發(fā)過程。 關(guān)鍵詞:嵌入式操作系統(tǒng) μC/OS-II EP7312 引 言   隨著Internet和后PC時代的到來,嵌入式系統(tǒng)的應(yīng)用愈來愈廣泛,嵌入式產(chǎn)品在人們的生活中無處不在。今天,嵌入式系統(tǒng)帶來的工業(yè)年產(chǎn)值已超過 1萬億美元,已經(jīng)在IT產(chǎn)業(yè)中占有很大的比重。   通常,應(yīng)用程序?qū)η度胧杰浖幕疽笫求w積小、執(zhí)行速度快、具有較好的裁減性和可移植性。嵌入式軟件的靈魂是嵌入式操作系統(tǒng)。在特定的操作系統(tǒng)之上開發(fā)應(yīng)用軟件,可以讓程序開發(fā)人員屏蔽掉很多低層硬件細節(jié),使得應(yīng)用程序調(diào)試方便、移植簡單、易維護,同時開發(fā)周期也短。目前,實時操作系統(tǒng)很多,如 VxWorks、Window CE、pSOS、QNX、LynxOS等等。這些操作系統(tǒng)都具有高可靠性、很強的實時性等特點,但它們都是商業(yè)操作系統(tǒng),價格昂貴,人們往往很難接受。 μC/OS-II的出現(xiàn)是對這些商業(yè)操作系統(tǒng)的一個很大的沖擊。μC/OS-II是源碼公開的實時操作系統(tǒng),是一個自由操作系統(tǒng)。程序開發(fā)人員可以改寫源代碼,使之符合自己的要求。裁減掉不需要的部分,使操作系統(tǒng)變得小巧、靈活,并且能滿足用戶特定操作系統(tǒng)的需要。 1 μC/OS-II簡介   μC/OS-II并非一個完整的實時操作系統(tǒng),它只是一個實時內(nèi)核。μC/OS-II不像其它實時操作系統(tǒng)一樣,提供給用戶的是一個標準的API函數(shù),程序開發(fā)人員利用操作系統(tǒng)提供的API函數(shù)進行應(yīng)用程序的開發(fā)。要想在μC/OS-II內(nèi)核上進行應(yīng)用程序的開發(fā),就需要程序開發(fā)人員在實時內(nèi)核的基礎(chǔ)上建立自己的實時操作系統(tǒng)。首先,把μC/OS-II移植到自己的硬件目標板上,寫出相應(yīng)的驅(qū)動程序以及用戶圖形界面等等;在這些接口函數(shù)之上,加上用戶自己的應(yīng)用程序,就構(gòu)成了嵌入式軟件。 2 μC/OS-II在EP7312上的移植   μC/OS-II的移植條件是:只要該處理器有堆棧,有CPU內(nèi)部寄存器入棧、出棧指令;使用的C編譯器支持內(nèi)嵌匯編(inline assembly)或者該C語言可擴展,可連接匯編模塊,使得關(guān)中斷、開中斷能在C語言程序中實現(xiàn)。Cirrus Logic公司生產(chǎn)的EP7312芯片內(nèi)部采用的是ARM720T處理器,內(nèi)部有37個寄存器。其中R13通常用作堆棧指針。堆棧尋址是隱含的,堆棧指針所指定的存儲單元就是堆棧的棧頂,堆棧尋址通常有兩種方式向上生長和向下生長。ARM處理器有ARM和Thumb兩種指令集。每種指令集都有豐富的指令可以對堆棧進行操作。堆棧指針指向最后壓入堆棧的有效數(shù)據(jù),稱為滿堆棧(full stack);堆棧指針指向下一個數(shù)據(jù)項放入的空位置,稱為空堆棧(empty stack)。根據(jù)堆棧的生長方向不同,可以生成4種類型的堆棧,即滿遞增、空遞增、滿遞減、空遞減。我們所使用的ARM SDT(ARM Software Development Kit)開發(fā)系統(tǒng)內(nèi)含的編譯器,同樣也支持內(nèi)嵌匯編,所以μC/OS-II完全可以移植到EP7312上。

  μC/OS-II核心代碼很小,程序開發(fā)人員要把它移植到自己的目標板中只需做少量的工作。圖1是μC/OS-II硬件和軟件的體系結(jié)構(gòu)。   雖然μC/OS-II大部分源代碼是用C語言寫的,但是完成和處理器一些有關(guān)的代碼時,還是必須要用匯編語言來實現(xiàn)的。寄存器的讀、寫只能通過匯編語言的存儲和加載指令來實現(xiàn)。要使μC/OS-II能夠正常工作, 處理器必須滿足以下要求:  ① 處理器的C編譯器能產(chǎn)生可重入代碼; ?、?用C語言可以打開和關(guān)閉中斷;  ③ 處理器支持中斷,并且能夠產(chǎn)生定時中斷(通常在10"100Hz之間); ?、?處理器能夠支持容納一定量數(shù)據(jù)的硬件堆棧; ?、? 處理器有將堆棧指針和其它寄存器讀出和存儲到堆?;騼?nèi)存中的指令。   μC/OS-II的移植包括以下幾個部分。 (1)設(shè)置與編譯器有關(guān)的代碼[OS_CPU.H]   在不同的處理器中有不同的字長,所以必須定義一系列數(shù)據(jù)類型以確保移植的正確性。另外,在μC/OS-II中,不使用C的short、int和 long等數(shù)據(jù)類型,這些都是和編譯器相關(guān)的。下面就是μC/OS-II定義的一部分數(shù)據(jù)類型。 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /*無符號8位整數(shù) */ typedef signed char INT8S; /*有符號8位整數(shù) */ typedef unsigned int INT16U; /*無符號16位整數(shù) */ typedef signed int INT16S; /*有符號16位整數(shù) */ typedef unsigned long INT32U; /*無符號32位整數(shù) */ typedef signed long INT32S; /*有符號32位整數(shù) */ typedef float FP32; /*單精度浮點數(shù) */ typedef double FP64; /*雙精度浮點數(shù) */   μC/OS-II需要先禁止中斷訪問代碼的臨界區(qū),并且在訪問完畢后重新允許中斷。μC/OS-II定義了兩個宏來禁止和允許中斷:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。 #define OS_ENTER_CRITICAL() IRQFIQDE #define IRQFIQDE __asm { mrs r0, CPSR; stmfd sp!, {r0}; orr r0, r0, #NOINT; msr CPSR_c, r0; } #define OS_EXIT_CRITICAL() IRQFIQRE #define IRQFIQRE __asm { ldmfd sp!, {r0}; msr CPSR_c, r0; } #endif   (2)編寫4個匯編語言函數(shù)[OS_CPU_A.S]   μC/OS-II的移植實例要求用戶編寫4個簡單的匯編語言函數(shù): OSStartHighRdy() OSCtxSw() OSIntCtxSw() UCOS_IRQHandler 詳細內(nèi)容見本刊網(wǎng)絡(luò)補充版(http://www.dpj.com.cn)。   (3)用C語言編寫6個與操作系統(tǒng)有關(guān)的函數(shù)[OS_CPU_C.C] 這6個函數(shù)是: OSTaskStkInit() OSTaskCreatHook() OSTaskDelHook() OSTaskSwHook() OSTaskStatHook() OSTaskTickHook()   這6個函數(shù)只對OSTaskStkInit()編寫代碼,后5個函數(shù)必須聲明,但是內(nèi)部并沒有代碼。OSTaskCreate()和 OSTaskCreateExt()通過調(diào)用OSTaskStkInit()來初始化任務(wù)的堆棧結(jié)構(gòu)。這個函數(shù)的移植代碼,可參考文獻[3]。 3 測試、編寫驅(qū)動和應(yīng)用程序   做完以上工作以后,就要測試移植的是否正確。測試一個μC/OS-II實時內(nèi)核并不復(fù)雜,就是讓這個實時內(nèi)核在自己的目標板上跑起來。開始時,可以運行一些簡單的任務(wù)和時鐘節(jié)拍中斷任務(wù),如果調(diào)試成功就可以在上面添加應(yīng)用程序。   μC/OS-II移植完成以后,就要在這個實時內(nèi)核之上編寫接口驅(qū)動程序。由于嵌入式操作系統(tǒng)體積更小,功能更強,且快速、穩(wěn)定,更具有針對性,因此不像其它操作系統(tǒng)那樣,對系統(tǒng)的所有接口設(shè)備都需要驅(qū)動、管理、調(diào)度和監(jiān)視。由于嵌入式產(chǎn)品是針對特殊的用途而設(shè)計的,有很強的專一性,因此,在編寫驅(qū)動程序時內(nèi)容更精簡,更具有穩(wěn)定性,編寫出的驅(qū)動模塊更小。編寫驅(qū)動程序應(yīng)完成以下基本功能:①對設(shè)備初始化和釋放;②把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);③讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù);④檢測和處理設(shè)備出現(xiàn)的錯誤。實現(xiàn)了以上功能以后,一個嵌入式操作系統(tǒng)就基本構(gòu)成了。   完成了μC/OS-II的移植和驅(qū)動程序的編寫以后,利用操作系統(tǒng)提供的API函數(shù)編寫應(yīng)用程序,調(diào)用μC/OS-II中與應(yīng)用程序相關(guān)的系統(tǒng)服務(wù)。調(diào)試通過后,固化到目標板上,這個嵌入式應(yīng)用軟件就完成了。[!--empirenews.page--]

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

在嵌入式系統(tǒng)和底層驅(qū)動開發(fā)中,C語言因其高效性和可控性成為主流選擇,但缺乏原生單元測試支持成為開發(fā)痛點。本文提出一種基于宏定義和測試用例管理的輕量級單元測試框架方案,通過自定義斷言宏和測試注冊機制,實現(xiàn)無需外部依賴的嵌入...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 驅(qū)動開發(fā)

在Linux設(shè)備驅(qū)動開發(fā)中,等待隊列(Wait Queue)是實現(xiàn)進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動開發(fā) C語言 Linux

在數(shù)字化時代,電子墨水屏(E-Ink)因其獨特的顯示效果和低功耗特性,在電子書、智能手寫本等領(lǐng)域得到了廣泛應(yīng)用。然而,電子墨水屏的刷新率一直是其發(fā)展的瓶頸,如何在保證低功耗的同時提高刷新率,成為了驅(qū)動開發(fā)中的一個重要課題...

關(guān)鍵字: 電子墨水屏 E-Ink 驅(qū)動開發(fā)

在Linux驅(qū)動開發(fā)中,設(shè)備樹(Device Tree)作為一種描述硬件信息的數(shù)據(jù)結(jié)構(gòu),扮演著至關(guān)重要的角色。它使得操作系統(tǒng)能夠以一種更加靈活和標準化的方式識別和管理硬件設(shè)備。然而,在實際的開發(fā)過程中,設(shè)備樹配置錯誤或理...

關(guān)鍵字: Linux 驅(qū)動開發(fā) Debug

在嵌入式系統(tǒng)與設(shè)備驅(qū)動開發(fā)的廣闊領(lǐng)域中,時鐘、定時器以及延時函數(shù)扮演著至關(guān)重要的角色。它們不僅是系統(tǒng)時間管理的基石,更是實現(xiàn)高效、精確控制硬件行為的關(guān)鍵工具。本文將深入探討這三種機制在驅(qū)動開發(fā)中的具體應(yīng)用、實現(xiàn)方式及注意...

關(guān)鍵字: 驅(qū)動開發(fā) 嵌入式系統(tǒng) 延時函數(shù)

在Linux內(nèi)核的廣闊領(lǐng)域中,驅(qū)動開發(fā)是連接硬件與軟件、實現(xiàn)設(shè)備功能的關(guān)鍵環(huán)節(jié)。在這個過程中,文件操作函數(shù)與I/O操作函數(shù)作為兩大核心工具,各自扮演著不可或缺的角色。本文旨在深入探討這兩種函數(shù)在Linux驅(qū)動開發(fā)中的區(qū)別...

關(guān)鍵字: I/O操作函數(shù) 文件操作函數(shù) Linux 驅(qū)動開發(fā)

加利福尼亞庫爾弗城2024年7月16日 /美通社/ --?Snail, Inc. (納斯達克股票代碼: SNAL) (以下簡稱"蝸牛游戲"或"公司")是一家領(lǐng)先的全球獨立開發(fā)商和發(fā)行商,專注于互動數(shù)字娛樂,今日宣布方舟:...

關(guān)鍵字: iOS 安卓系統(tǒng) 移植 移動平臺

上海2023年2月16日 /美通社/ -- 近日,諾華中國宣布與中國紅十字基金會正式啟動"中國地中海貧血救助項目"廣西地區(qū)專項援助,將在當?shù)囟ㄏ蛸Y助困難家庭地中海貧血患兒,同時通過相關(guān)醫(yī)生培...

關(guān)鍵字: BSP 控制 移植 大眾

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博醫(yī)學(xué)(血液病)廣東研究中心南方春富(兒童)血液病研究院、南方醫(yī)科大學(xué)南方醫(yī)院共同主辦的高博醫(yī)學(xué)論壇·華南造血干細胞移植論壇通過線下線上...

關(guān)鍵字: 移植 HD PID 血細胞

捐款近4000萬 上海2022年12月7日 /美通社/ -- 2022年12月7日下午,中芯國際"芯肝寶貝計劃"十年紀念暨2022年度捐贈儀式在上海仁濟醫(yī)院舉行。十年來,該項目捐贈善款總額近4000...

關(guān)鍵字: 中芯國際 移植
關(guān)閉