<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)時(shí)操作系統(tǒng)µC/OS-II在ARM7上的移植

          實(shí)時(shí)操作系統(tǒng)µC/OS-II在ARM7上的移植

          作者: 時(shí)間:2012-04-10 來源:網(wǎng)絡(luò) 收藏

          1 引言

          本文引用地址:http://www.ex-cimer.com/article/171661.htm

          目前,嵌入式系統(tǒng)在家電、移動(dòng)電話、PDA等各種領(lǐng)域的應(yīng)用日益廣泛,程序設(shè)計(jì)也越來越復(fù)雜,這就需要采用一個(gè)通用的嵌入式來對(duì)其進(jìn)行管理和控制。的嵌入式系統(tǒng)開發(fā),可大大減輕程序員的負(fù)擔(dān),提供了多任務(wù)的管理功能,只需專注于每個(gè)任務(wù)的管理。對(duì)于不同的應(yīng)用,可以按照相同的步驟完成系統(tǒng)設(shè)計(jì)。如果更換硬件平臺(tái),則只需要對(duì)操作系統(tǒng)進(jìn)行少量的工作,與硬件無關(guān)的應(yīng)用代碼完全無需修改,同時(shí),可增強(qiáng)代碼的可讀性、可維護(hù)性和可擴(kuò)展性。

          ;是一種專門為微處理器設(shè)計(jì)的搶占式多任務(wù)操作系統(tǒng),具有源代碼公開、可性和可靠性高等特點(diǎn)。由于;是為嵌入式應(yīng)用編寫的通用軟件,故在具體應(yīng)用時(shí)需根據(jù)不同單片機(jī)的特點(diǎn)進(jìn)行移植,其大部分代碼是用標(biāo)準(zhǔn)C語言所寫,只有與處理器相關(guān)的一部分代碼用匯編語言編寫,因而具有很強(qiáng)的移植性,能在從8位到64位單片機(jī)以及DSP等超過40種不同構(gòu)架的微處理器上實(shí)現(xiàn)運(yùn)行。本文主要介紹;在Samsung公司的一款TDMI的嵌入式處理器S3C44B0X上移植應(yīng)用。

          要實(shí)現(xiàn)µC/OS-II在S3C44B0X的構(gòu)建、裁剪和移植,需要有S3C44B0X的編譯器,本文采用的是英蓓特公司推出的EmbestIDE for ARM編譯器。

          2 µC/OS-II在S3C44B0X上移植的可行性分析

          所謂移植,就是使一個(gè)內(nèi)核能在某個(gè)微處理器或微控制器上運(yùn)行。要使µC/OS-II能夠正常運(yùn)行,處理器必須滿足以下幾個(gè)條件:

          (1)處理器的C編譯器能產(chǎn)生可重人代碼;

          (2)在程序中可以打開或者關(guān)閉中斷;

          (3)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在l0~l000Hz之間);

          (4)處理器支持能夠容納一定量數(shù)據(jù)的硬件堆棧;

          (5)處理器有將堆棧指針和其他CPU寄存器存儲(chǔ)和讀出到堆棧(或者內(nèi)存)的指令。Samsung公司的S3C44BOX處理器能夠滿足以上的要求,所以可以將µC/OS-II移植到S3C44B0X上。

          3 µC/OS-II在S3C44B0X上移植的概要

          µC/OS-II硬件和軟件的體系結(jié)構(gòu)如圖1所示。從圖中可以看出,對(duì)µC/OS-II的移植實(shí)際上就是對(duì)與處理器有關(guān)的代碼進(jìn)行重寫或修改。本文中移植代碼結(jié)構(gòu)由四部分組成,分別是用戶代碼部分、核心代碼部分、設(shè)置代碼部分、與處理器相關(guān)的移植代碼部分。用戶代碼即應(yīng)用軟件,用來實(shí)現(xiàn)用戶的具體要求,例如本文中和PC機(jī)的串口通訊代碼;核心代碼部分, 包含OS_CORE.C、COS_FLAG.C、OS_MBOX.C、OS_MEME.C、OS_Q.C、OS_SEM.C、OS_TASK.C、 OS_TIME.C、µC/OS-II.C、µC/OS-II.H 十個(gè)文件;設(shè)置代碼部分,即µC/OS-II配置代碼,包含OS_CFG.H、INCLUDES.H 兩個(gè)文件,用來配置事件控制塊的數(shù)目以及是否包含消息管理相關(guān)代碼等;與處理器相關(guān)代碼即µC/OS-II要移植的處理器配置代碼,包含 OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C三個(gè)文件,在µC/OS-II的移植過程中,用戶所需要關(guān)注的就是這部分文件。

          43.jpg
          圖1 µC/OS-II軟硬件體系結(jié)構(gòu)

          4 µC/OS-II在S3C44B0X上移植代碼分析

          4.1 OS_CPU.H文件分析

          OS_CPU.H包括用#define定義的與處理器有關(guān)的常量、宏和類型定義。

          (1)定義與編譯器相關(guān)的數(shù)據(jù)類型。

          µC/OS-II為了保證可移植性,程序中沒有直接使用int、unsigned int等定義,而是自己定義了一套數(shù)據(jù)類型,例如,INT8U表示8位無符號(hào)整型,INT16U表示16位無符號(hào)整型等。對(duì)于ARM這樣的32位內(nèi)核,INT16U是unsigned short型;若是16位的處理器,則是unsigned int型。不能使用bit型變量,把BOOLEAN型定義成unsigned char型。另外S3C44B0X數(shù)據(jù)寬度和堆棧寬度都是32位,分別將OS_STK和OS_CPU_SR定義成unsigned int型。

          (2)義堆棧增長(zhǎng)方向

          在µC/OS-II中,用OS_STK_GROWTH來設(shè)置堆棧的增長(zhǎng)方向,OS_STK_GROWTH為0表示堆棧從低地址向高地址增長(zhǎng);OS_STK_GROWTH為l表示堆棧從高地址向低地址增長(zhǎng),其宏定義為:

          #define OS_STK_GROWTH l; //堆棧從高地址向低地址增長(zhǎng)

          #define OS_STK_GROWTH 0; //堆棧從低地址向高地址增長(zhǎng)

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();