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

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > mC/OS-II在GPRS終端系統(tǒng)中的應(yīng)用

          mC/OS-II在GPRS終端系統(tǒng)中的應(yīng)用

          ——
          作者: 時間:2007-11-23 來源:電子設(shè)計應(yīng)用 收藏

            摘 要:本文介紹了實時多任務(wù)中的移植及應(yīng)用,以及的硬件組成和軟件框架,詳細說明了在ARM器件S3C44B0x芯片上的移植過程和的軟件設(shè)計。

            關(guān)鍵詞;GPRS終端;

            實時嵌入式mC/OS-II面向中小型嵌入式應(yīng)用,包含全部功能模塊的內(nèi)核大約為10KB,RAM的應(yīng)用量主要與系統(tǒng)中的任務(wù)數(shù)有關(guān)。

            GPRS是在目前運行的GSM網(wǎng)絡(luò)基礎(chǔ)上發(fā)展起來的數(shù)據(jù)業(yè)務(wù),可以采用與GSM同樣的調(diào)制技術(shù)、頻率,以及同樣的TDMA幀結(jié)構(gòu)。利用現(xiàn)有的基站子系統(tǒng)(BSS),GPRS從一開始就可以提供全面的覆蓋。

            GPRS終端系統(tǒng)的硬件組成

            GPRS終端系統(tǒng)主要由控制部分和GPRS無線模塊組成,如圖1所示。

            

            圖1 GPRS終端的硬件組成原理

            為了適應(yīng)嵌入式技術(shù)在GPRS通信中的應(yīng)用,系統(tǒng)的控制部分采用了S3C44B0x芯片。

            S3C44B0x是16/32位RISC微處理器, 為手持設(shè)備和通常應(yīng)用提供了一種高性價比的解決方案。

            S3C44B0x具有豐富的片內(nèi)資源,可以通過串行接口操作GPRS模塊,操作指令為AT命令集。

            GPRS無線模塊采用了SIM300,該模塊支持GPRS的語音、數(shù)據(jù)和短信息功能,內(nèi)嵌TCP/IP協(xié)議。該模塊主要由射頻天線、內(nèi)部Flash、SRAM、GSM基帶處理器、匹配電源和一個60腳的ZIF插座組成。其中,GSM基帶處理器是核心部件,其作用相當于一個協(xié)議處理器,用來處理外部系統(tǒng)通過串口發(fā)送過來的AT指令。GPRS模塊接收速率可達86.2kbps,發(fā)送速率達21.5kbps,易于集成。

            mC/OS-II的移植

            mC/OS-II是一個移植性很強的,其源代碼分為硬件無關(guān)和硬件有關(guān)兩個部分,移植時只需修改與硬件有關(guān)的部分。移植mC/OS-II到 上,需做以下工作:

            (1) 修改數(shù)據(jù)類型

            為保持與平臺的無關(guān)性,mC/OS-II使用經(jīng)過宏定義的通用類型,如INT16U,表示16 位無符號數(shù)。在移植時,要把它們映射成正確的類型。

            (2) 進入和退出臨界段

            用關(guān)閉和打開中斷的方式,實現(xiàn)進入臨界段函數(shù)OS_ENTER_CRITICAL()和退出臨界段函數(shù)OS_EX2IT_CRITICAL()。

            (3) 設(shè)置堆棧生長方向

            不同的處理器堆棧的生長方向不同,對來說,其生長方向可以向上也可以向下。但是,由于編譯器ADS僅支持堆棧從上往下長,并且必須是滿遞減堆棧,所以這里要設(shè)置的實際使用方向為向下增長,即

            #define OS_STR_GROWTH 1;

            (4) 任務(wù)的切換和調(diào)度

            進行任務(wù)的切換和調(diào)度有兩種方法,一是當前運行的任務(wù)主動調(diào)用OS_Sched() ,判斷是否有更高優(yōu)先級的任務(wù)要運行,如果有就將其切換到就緒態(tài),然后調(diào)用OS_TASK_SW() ,產(chǎn)生一個軟中斷,中斷向量指向函數(shù)OSIntCtxSw() ,在其中修改任務(wù)堆棧,運行新的任務(wù)。二是產(chǎn)生硬件中斷后,在中斷處理函數(shù)中調(diào)用OSIntEx()。

            在上述過程中,產(chǎn)生軟中斷和修改任務(wù)堆棧的代碼都是與處理器相關(guān)的, S3C44B0X 的軟中斷匯編指令是SWI ,壓棧和出棧的匯編指令分別是STM和LDM。

            (5) 堆棧的初始化

            mC/OS-II在創(chuàng)建任務(wù)時會調(diào)用OSTaskStkInt() 函數(shù)對任務(wù)堆棧進行初始化,這里需要將堆棧設(shè)置成和產(chǎn)生中斷后的形式一樣,一般包括任務(wù)起始地址、中斷返回地址、CPU 寄存器等內(nèi)容。另外,還要保證任務(wù)是運行在特權(quán)模式下,而不是用戶模式下。

            (6) 時鐘節(jié)拍中斷

            mC/OS-II用時鐘節(jié)拍中斷實現(xiàn)時間延遲和超時功能,定時頻率一般在10Hz~100Hz。設(shè)置定時器的代碼與CPU 相關(guān),中斷向量必須指向mC/OS-II時鐘節(jié)拍中斷服務(wù)子程序OSTickISR() 。

            系統(tǒng)的流程和任務(wù)的組成

            本系統(tǒng)中,首先調(diào)用OSInit(),初始化mC/OS-II所有的變量和數(shù)據(jù)結(jié)構(gòu),再調(diào)用ARM_init()初始化微控制器的定時器及串口等硬件,通過調(diào)用OSTaskCreate(),依次創(chuàng)建各個任務(wù),最后調(diào)用OSStart()啟動系統(tǒng),開始多任務(wù)調(diào)度。整個系統(tǒng)控制程序模塊及流程如圖2所示。

            

            圖2 系統(tǒng)控制程序模塊及流程

            整個系統(tǒng)中的任務(wù)包括ARM控制部分的鍵盤掃描、LCD顯示任務(wù)和通信任務(wù)以及GPRS終端功能的短消息任務(wù),語音通話任務(wù)等。因此,在mC/OS-II系統(tǒng)中的任務(wù)主要包括:

            鍵盤掃描任務(wù)task_sys_key scan(),包括4



          評論


          相關(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); })();