新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > μC/OS-II在數字微波監控系統中的應用

        μC/OS-II在數字微波監控系統中的應用

        作者: 時間:2011-08-03 來源:網絡 收藏


        (4) Task_SPI_OP:通過SPI接口完成遠端信息交換處理以及數據鏈路各接口環回等設置。

        (5) Task_DATA_OP:主要完成網絡數據管理、AD轉換、公務的控制,控制微波接口、時鐘芯片的設置和讀取,完成誤碼率的計算以及對串行E2PEOM存儲芯片數據的存取。

        (6) Task_COMM1:主要是完成出串口與其它設備間通信數據的收發。

        (7) Task_ODUCOMM0:主要是IDU和ODU設備的通信。

        2.2 任務的創建

        經過分析和設計之后,就可以使用μC/OS- II所提供的函數創建任務,這里給出了如何創建液晶顯示任務的實例,其它任務的創建與之類似,其過程如下:

        OSTaskCreate (Task_LCD_OP,(void *)0, LCDopreate[TaskStkLengh - 1],8);

        Task_LCD_OP是要創建的任務;(void *)0是傳遞給任務的參數,因為這里所創建的任務沒有參數,所以其值為0;LCDopreate[TaskStkLengh - 1]是分配給任務的堆棧,這在程序中是事先定義好的,最后一個數字8是分配給該任務的優先級。

        2.4 任務優先級的劃分

        為了使整個系統的實時性能夠得到滿足,所以要以任務的緊迫性、關鍵性、頻繁性和中斷的重要性等為依據,對不同的任務安排不同優先級別。在系統優先級的分配上,μC/系統級保留了0和1,用戶程序任務優先級從2開始,最低優先級定義為12。

        在該中,任務不同,對實時性要求也不同,通過定時任務來控制。定時任務劃分為20ms到5s多個時間級別,在同一個任務中可以再定時地處理一些事務。其中,單獨設置了一個任務Task_TIME_FLG來處理這些時間等級的劃分和管理,由于它的運行涉及到其它任務的時間標志,是一個關鍵任務,所以必須將其運行優先級設置為用戶程序的最高級別。系統中除了對設備進行設置外,其余時間主要通過串行接口進行信息交互,也是較為重要和緊迫的,這一工作由串口1來承擔,所以在設置Task_COMM1的優先級次之;其次是Task_ODUCOMM0;Task_DATA_OP數據操作任務對實時性要求不高,級別隨之降低;Task_SPI_OP任務因其數據量小,故不是緊迫任務;Task_KEY按鍵任務、Task_LCD_OP液晶顯示是實現人機交互的,所以實時性要求也比較低。

        從以上分析可以把任務的優先級進行如下分配:Task_TIME_FLG為2,Task_COMM1為3,Task_ODUCOMM0為4,Task_DATA_OP為5,Task_SPI_OP為6,Task_KEY為7,Task_LCD_OP為8。

        2.5 任務的調度

        μC/調度的依據是任務就緒隊列表,系統從處于就緒隊列的任務中選擇一個優先級最高的來運行,它可以管理多達64個任務。對于多任務的管理,μC/OS- II 是通過調度器完成。其中任務級的調度是由函數OSSched()完成, 而中斷級的調度是由函數OSIntExiT()完成。

        本系統的任務中,Task_TIME_FLG時間標志處理任務優先級最高,運行也最頻繁,它和其它任務切換是屬于普通的任務切換,而Task_COMM1和Task_ODUCOMM0的任務切換是屬于中斷級的切換,只有在發生中斷時才切換,正常運行時和普通任務的切換方式一樣。其余任務的切換都作為普通切換方式處理。在任務切換過程中如果當前任務需要延時判斷,為保證其它任務的正常運行,可通過調用函數OSTimeDly(2)掛起當前任務,其中鍵顯部分有三級菜單,每一級菜單又有許多選項,為了提高按鍵掃描的實時性,在進入每一級菜單后必須調用該函數掛起當前任務,并掃描有無按鍵,如有則執行對應處理程序,沒有按鍵則把自己掛起,直到有按鍵方可退出。μC/如此處理,程序不會死等,按鍵和菜單顯示配合很協調,只要有按鍵就能得到及時處理。

        2.6 中斷的設置與使用

        在ARM7體系的CPU中,最多可以有32個中斷源。對每個具體的中斷源,可以將其定義為快速FIQ中斷,使其具有最高的優先級;也可以定義為向量IRQ中斷,使其具有中等優先級,但向量IRQ的總數不能超過16個。μC/OS-II本身使用一個定時中斷源作為系統節拍中斷。

        μC/OS-II響應中斷的過程:當系統接收到中斷請求后,并且CPU處于中斷開放狀態,系統就會終止當前運行的任務,按照中斷向量的指向運行中斷服務子程序;當中斷運行結束后,系統就會返回到被中止的任務繼續運行,或者轉向運行另一個更高優先級的就緒任務。

        本系統中使用了兩個定時中斷源、兩個串口中斷源、一個I2C中斷源。μC/OS-II中斷的設置和初始化由target.c中的TargetInit函數完成,通過該函數實現了串口、I2C和定時中斷的初始化設置。其中VICInit實現過程如下,將中斷服務子程序的地址寫到相應的中斷向量寄存器(VICVectAddrx),并從相應的中斷向量控制寄存器(VICVectCntlx)選中相應的中斷,將其啟用。當CPU接收到中斷請求就能找到對應中斷服務程序的地址,并轉到中斷服務程序去運行。

        2.7 堆棧的設置與使用

        堆棧是依據“后進先出(LIFO)”原則組織的連續存儲空間。為滿足任務切換、響應中斷以及存儲任務私有數據的需要,每個任務都配有自己的堆棧。

        由于LPC2214的片內Flash是256KB,片內RAM是16KB,根據需要CPU沒有擴展外部閃存,故要求代碼精練,RAM分配一定要合理。尤其是在液晶顯示任務中,由于顯示的菜單項目較多,因此任務之間切換增加了RAM的需求。如果每個任務堆棧開辟過小,任務切換時就會出現私有數據丟失,堆棧溢出直至程序運行出錯;反之堆棧設置過大,就會使內存RAM空間緊張,因此設置堆棧空間必須適中。本系統中開始設置顯示任務堆棧大小為64個字,調試運行中發現進入多級菜單時會出現程序死鎖的現象,擴大對應任務堆??臻g問題就得到解決。

        3 軟件的調試環境與下載

        該系統需要建立ADS1.2集成仿真環境,使用了廣州周立功單片機發展有限公司提供的專用工程模板。如果硬件沒有擴展外部存儲器,就使用LPC2100的工程模板;否則使用LPC2200的工程模板。在調試過程中選用DebugInFLASH模式燒寫調試;軟硬件調試完成,可選用RelInFlash模式燒寫,后一種燒寫方式會加密芯片,使之無法二次燒寫;如果加密之后需要重新燒寫芯片,就必須使用ISP進行解密之后方可燒寫,調試程序時一定要注意這點。

        4 結束語

        μC/OS-II應用于軟件開發之后,系統的軟件結構更加簡潔實用,系統的實時性和穩定性得到提高,設備在實際應用中表現穩定可靠,并取得一定的經濟效益,μC/OS-II在嵌入式系統中具有廣泛的應用推廣價值。

        本文引用地址:http://www.104case.com/article/187412.htm
        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 习水县| 安化县| 达孜县| 始兴县| 奈曼旗| 巴南区| 弥渡县| 盐亭县| 五大连池市| 临武县| 松溪县| 巴南区| 博爱县| 通城县| 安义县| 商城县| 依安县| 商都县| 陆良县| 随州市| 兴安盟| 班玛县| 壤塘县| 平舆县| 新和县| 镇坪县| 巨野县| 无极县| 淮滨县| 屯门区| 老河口市| 迁西县| 沙洋县| 鄯善县| 宁安市| 绍兴县| 凌云县| 蓬安县| 惠东县| 临桂县| 禹州市|