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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μC/OS-Ⅱ在ARM系列單片機(jī)S3C44B0x上的移植

          μC/OS-Ⅱ在ARM系列單片機(jī)S3C44B0x上的移植

          作者: 時(shí)間:2009-11-12 來源:網(wǎng)絡(luò) 收藏
          引 言
          目前,嵌入式系統(tǒng)在工業(yè)控制、家用電器、移動(dòng)通信、PDA等各種領(lǐng)域得到了越來越廣泛的應(yīng)用。由于用戶對嵌入式產(chǎn)品的性能要求越來越高,程序設(shè)計(jì)也變得越來越復(fù)雜,這就需要一個(gè)通用的嵌入式實(shí)時(shí)操作系統(tǒng)來對其進(jìn)行管理和控制。對了操作系統(tǒng)的嵌入式系統(tǒng)進(jìn)行設(shè)計(jì)和開發(fā),可以大大減小程序員的負(fù)擔(dān),對于不同的應(yīng)用可以按照相同的步驟來完成系統(tǒng)的設(shè)計(jì)。
          μC/Ⅱ是一種簡單高效、源代碼公開的嵌入式實(shí)時(shí)操作系統(tǒng),具有良好的可擴(kuò)展性和可性,被廣泛的應(yīng)用到各種嵌人式處理器上。μCⅡ操作系統(tǒng)擁有可固化,可裁剪,可剝奪性的實(shí)時(shí)內(nèi)核,可同時(shí)管理64個(gè)系統(tǒng)任務(wù)。利用μCⅡ操作系統(tǒng)的嵌入式微處理器來設(shè)計(jì)和開發(fā)產(chǎn)品,對于提高產(chǎn)品的性能,減少產(chǎn)品的開發(fā)周期和降低開發(fā)成本有著重要的意義。在此較詳細(xì)地分析和介紹了嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-Ⅱ在上的移植過程。

          1 μCOS-Ⅱ概述
          μCOS-Ⅱ是一種源代碼公開、結(jié)構(gòu)小巧、具有可剝奪性實(shí)時(shí)內(nèi)核的嵌入式實(shí)時(shí)操作系統(tǒng)。μCOS-Ⅱ是用ANSI的C語言編寫的,包含一小部分匯編語言代碼,使之可供不同架構(gòu)的微處理器使用,至今,從8位到64位,μCOS-Ⅱ已在超過40種不同架構(gòu)的微處理器上運(yùn)行。μCOS-Ⅱ是專門為嵌入式應(yīng)用而設(shè)計(jì)的,它包含了任務(wù)調(diào)度,任務(wù)管理,時(shí)間管理,內(nèi)存管理和任務(wù)問的通信和同步等基本功能。μCOS-Ⅱ擁有一個(gè)可移植、可固化、可裁剪的實(shí)時(shí)內(nèi)核,它具有執(zhí)行效率高,占用空間小,實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn),被廣泛地移植應(yīng)用到各種嵌入式微處理器中。

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

          2 S3C44B0處理器概述
          微處理器采用高性能、低功耗的32位RISC內(nèi)核7TDMI。 同時(shí),7TDMI核的基礎(chǔ)上,擴(kuò)展了一的外圍器件,使系統(tǒng)成本及外圍器件數(shù)目降低至最低,這些功能部件分為CPU單元,系統(tǒng)時(shí)鐘管理單元,存儲(chǔ)單元和系統(tǒng)功能接口單元,片上集成的主要功能如下:
          在ARM7TDMI基礎(chǔ)上增加了8 KB的CACHE;外部擴(kuò)充存儲(chǔ)器控制器;LCD控制器,并帶有1個(gè)LCD專用DMA通道;2個(gè)通用DMA通道,2個(gè)帶外部請求引腳的DMA;2個(gè)帶有握手協(xié)議的UART,1個(gè)SIO;1個(gè)I2C總線控制器;5個(gè)PWM定時(shí)器及1個(gè)內(nèi)部定時(shí)器;1個(gè)看門狗定時(shí)器;71個(gè)通用可編程I/O口,8個(gè)外部中斷源;功耗控制模式:正常、低、休眠和停止;8路10位ADC;具有日歷功能的RTC;PLL時(shí)鐘發(fā)生器等。

          3 嵌入式操作系統(tǒng)μCOS-Ⅱ的移植
          3.1 移植μCOS-Ⅱ的條件
          所謂移植,就是使一個(gè)實(shí)時(shí)內(nèi)核能在其他的微處理器或微控制器上運(yùn)行。為方便移植,大部分μCOS-Ⅱ的代碼都是用C語言編寫的,但是仍需要用C語言和匯編語言編寫與處理器硬件相關(guān)的代碼,這是因?yàn)棣藽OS-Ⅱ在讀/寫處理器的寄存器時(shí),只能通過匯編語言來實(shí)現(xiàn),要使μCOS-Ⅱ正常運(yùn)行,處理器必須滿足以下要求:
          (1)處理器的C編譯器能產(chǎn)生可重人型代碼;
          (2)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常為10~100 Hz);
          (3)用C語言就可以開/關(guān)中斷;
          (4)處理器能支持一定數(shù)量的數(shù)據(jù)存儲(chǔ)硬件堆棧;
          (5)處理器有將堆棧指針以及其他CPU寄存器的內(nèi)容讀出、并存儲(chǔ)到堆?;騼?nèi)存中去的指令。
          ARMS3C44B0x滿足以上的條件。所以可以將μCOS-Ⅱ移植應(yīng)用到S3C44B0x。
          3.2 搭建移植環(huán)境
          本次移植在如下的環(huán)境中完成:
          (1)編譯工具采用ARM公司的ADS 1.2。ADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM集成開發(fā)工具。現(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS 1.0和ADS 1.1。ADS 1.2由命令行開發(fā)工具,ARM實(shí)時(shí)庫,GUI開發(fā)環(huán)境,實(shí)用程序和支持軟件組成。有了這些部件,用戶就可以非常方便地為ARM系列的處理器編寫和調(diào)試自己的應(yīng)用程序了。
          (2)目標(biāo)板采用杭州立宇泰公司生產(chǎn)的S3C44B0x開發(fā)板,主機(jī)通過JTAG連接目標(biāo)板以建立交叉開發(fā)調(diào)試環(huán)境。
          3.3 μCOS-Ⅱ的移植
          μCOS-Ⅱ的硬件/軟件體系結(jié)構(gòu)如圖1所示,對μCOS-Ⅱ的移植其實(shí)就是對與處理器有關(guān)的代碼進(jìn)行重新編寫或修改。

          由圖1可知,移植μCOS-Ⅱ?qū)嶋H上就是分別對OSCPU.H,OS_CPU_A.ASM和OS_CPU_C.C這三個(gè)文件進(jìn)行重新編寫或修改。由于在本次移植中是將μCOS-Ⅱ移植到ARM系列S3CA4B0x中,接下來將結(jié)合S3CA4B0x微處理器的特性來具體介紹本次移植過程中所做的主要工作。
          (1)移植OS_CPU.H文件
          OS CPU.H文件中包括了用#define定義的與處理器相關(guān)的常量和類型的定義,與μCOS-Ⅱ所定義的變量類型相一致;定義開/關(guān)中斷的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來保護(hù)臨界段代碼免受多任務(wù)或中斷服務(wù)例程的干擾;定義棧的增長方向,在本次移植中棧的增長方向被定義為從上往下增長,OS_STK_GROWTH的值定義為1。在移植該文件時(shí),需要編寫和修改的部分代碼如下所示:
          ①設(shè)置與編譯器相關(guān)的數(shù)據(jù)類型


          ③設(shè)置堆棧的增長方向
          絕大多數(shù)的微處理器和控制器的堆棧是從上往下增長的,但是也有一些處理器和控制器的堆棧增長方向是從下往上增長的μCOS-Ⅱ被設(shè)計(jì)成這兩種情況都可以處理,只要在結(jié)構(gòu)常量OS_STK_GROWTH中指定堆棧的增長方式即可。在本次移植中堆棧的增長方向被設(shè)置成從上往下增長。


          (2)移植OS_CPU_C.C文件
          在該文件中需要編寫10個(gè)簡單的C函數(shù)它們分別是:



          上一頁 1 2 下一頁

          評論


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