<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于 ARM 嵌入式的遠程監控系統設計

基于 ARM 嵌入式的遠程監控系統設計

作者: 時(shí)間:2009-03-03 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/163937.htm


S3C2410 芯片支持多種操作系統,如 WINCE、uCLinux 等。但考慮到 的實(shí)時(shí)性要求,這里使用的是 µC/OS-II 實(shí)時(shí)操作系統。µC/OS-II 是一個(gè)源碼公開(kāi)、可 移植、可固化、可裁剪、占先式的實(shí)時(shí)多任務(wù)操作系統。其絕大部分源碼是用 ANSI C 寫(xiě)的。 整個(gè)系統分為兩大層:硬件層和軟件層。這里主要研究軟件層的架構。軟件層主 要分為四個(gè)部分:實(shí)時(shí)操作系統內核,與處理器相關(guān)部分,與應用程序相關(guān)部分,用戶(hù)的應 用程序。
移植 µC/OS-II 系統需要修改的文件有:應用程序相關(guān)文件: OS_CFG.H INCLUDE.H; 處理器相關(guān)文件: OS_CPU.H、 OS_CPU_A.ASM、OS_CPU_C.C 。
3.2.1 與處理器相關(guān)的代碼 這是移植中最關(guān)鍵的部分。內核將應用系統和底層硬件有機的結合成一個(gè)實(shí)時(shí)系統,要 使同一個(gè)內核能適用于不同的硬件體系,就需要在內核和硬件之間有一個(gè)中間層,這就是與 處理器相關(guān)的代碼。處理器不同。這部分代碼也不同。我們在移植時(shí)需要自己移植這部分代 碼。
a)OS_CPU.H

包括了用#define 定義的與處理器相關(guān)的常量,宏和類(lèi)型定義,有系統數據類(lèi)型定義,棧 增長(cháng)方向定義,關(guān)中斷和開(kāi)中斷定義,系統軟中斷的定義等等。
b)OS_CPU_A.ASM
這部分需要對處理器的寄存器進(jìn)行操作,所以必須用匯編語(yǔ)言來(lái)編寫(xiě)。包括四個(gè)子函數: OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任務(wù) 系統啟動(dòng)函數 OSStart()中調用。完成的功能是:設置系統運行標志位 OSRunning = TRUE; 將就緒表中最高優(yōu)先級任務(wù)的棧指針 Load 到 SP 中,并強制中斷返回。這樣就緒的最高優(yōu)先 級任務(wù)就如同從中斷里返回到運行態(tài)一樣,使得整個(gè)系統得以運轉。OSCtxSw()在任務(wù)級任 務(wù)切換函數中調用的。任務(wù)級切換是通過(guò) SWI 或者 TRAP 人為制造的中斷來(lái)實(shí)現的。ISR 的向 量地址必須指向 OSCtxSw()。這一中斷完成的功能:保存任務(wù)的環(huán)境變量(主要是寄存器的值, 通過(guò)入棧來(lái)實(shí)現),將當前 SP 存入任務(wù) TCB 中,載入就緒最高優(yōu)先級任務(wù)的 SP,恢復就緒最高 優(yōu)先級任務(wù)的環(huán)境變量,中斷返回。這樣就完成了任務(wù)級的切換。OSIntCtxSw()在退出中斷
服務(wù)函數 OSIntExit()中調用,實(shí)現中斷級任務(wù)切換.由于是在中斷里調用,所以處理器的寄 存器入棧工作已經(jīng)做完,就不用作這部分工作了。具體完成的任務(wù);調整棧指針(因為調用 函數會(huì )使任務(wù)棧結構與系統任務(wù)切換時(shí)堆棧標準結構不一致),保存當前任務(wù) SP,載入就緒 最高優(yōu)先級任務(wù)的 SP,恢復就緒最高優(yōu)先級任務(wù)的環(huán)境變量,中斷返回。這樣就完成了中斷 級任務(wù)切換。OSTickISR()系統時(shí)鐘節拍中斷服務(wù)函數,這是一個(gè)周期性中斷,為內核提供
時(shí)鐘節拍。頻率越高系統負荷越重。其周期的大小決定了內核所能給應用系統提供的最小時(shí) 間間隔服務(wù)。一般只限于 ms 級(跟 MCU 有關(guān)),對于要求更加苛刻的任務(wù)需要用戶(hù)自己建立中 斷來(lái)解決.該函數具體內容:保存寄存器(如果硬件自動(dòng)完成就可以省略),調 OSIntEnter(), 調用 OSTimeTick(),調用 OSIntExit(),恢復寄存器,中斷返回。
c) OS_CPU_C.C
該文件中共定義了 6 個(gè)函數,但是最重要的是 OSTaskStkInit().其他都是對系統內核的擴展 時(shí)用的. OSTaskStkInit()是在用戶(hù)建立任務(wù)時(shí)系統內部自己調用的,對用戶(hù)任務(wù)的堆棧 進(jìn)行初始化。使建立好的進(jìn)入就緒態(tài)任務(wù)的堆棧與系統發(fā)生中斷并且將環(huán)境變量保存完畢時(shí) 的棧結構一致。這樣就可以用中斷返回指令使就緒的任務(wù)運行起來(lái)。


3.2.2 與應用相關(guān)的代碼
這部分包括兩個(gè)文件:OS_CFG.H, INCLUDES.H。 用戶(hù)根據自己的應用系統來(lái)定制合適 的內核服務(wù)功能。 OS_CFG.H 來(lái)配置內核,用戶(hù)根據需要對內核進(jìn)行定制,留下需要的部 分,去掉不需要的部分,設置系統的基本情況。比如系統可提供的最大任務(wù)數量,是否定制 郵箱服務(wù),是否需要系統提供任務(wù)掛起功能,是否提供任務(wù)優(yōu)先級動(dòng)態(tài)改變功能等等。 INCLUDES.H 系統頭文件,整個(gè)實(shí)時(shí)系統程序所需要的文件,包括了內核和用戶(hù)的頭文件。


3.3、用戶(hù)圖形接口
雖然 µC/OS-II 操作系統具有很高的實(shí)時(shí)性,但不像 WINCE、uCLinux 等操作系統那樣 有良好的圖形界面支持。所以,在使用液晶和觸摸屏的情況下需要移植用戶(hù)圖形接口程序。
這里使用的是 µC/GUI。µC/GUI 是一個(gè)軟件模塊集合,通過(guò)該模塊可以在我們的嵌入式產(chǎn)品 中加入用戶(hù)圖形接口(GUI)。µC/GUI 具有很高的執行效率,并且與處理器和 LCD 控制器相 獨立。該模塊可以工作在單任務(wù)或者多任務(wù)環(huán)境,可以支持不同大小的顯示方式。
通過(guò) µC/GUI 我們可以很方便的在液晶屏繪制圖形和界面。如果需要多種字體支持,必 須自己將相應的字體字庫加入到 µC/GUI 中。為了避免出現亂碼,盡量使用 GB2312 國標字 庫。


3.4、關(guān)于字庫的兼容性問(wèn)題

我們國內通常使用的漢字字庫是 GB 碼,但國際上使用的是 UNICODE 碼 ,所以如果數

據終端使用的是手機、PDA 等移動(dòng)通信設備,那么在數據發(fā)送前必須進(jìn)行字碼轉換,即 GB 碼 轉換為 UNICODE 碼或者 UNICODE 碼轉換為 GB 碼。
由于 GB 碼與 UNICODE 碼在排列組合上沒(méi)有任何規律,所以通常字碼轉換的方法就是 查表法。


4 、結束語(yǔ)
9 嵌入式系統的與以往的不同,高性能的處理器芯片大 大提高了系統的性能。使監控系統能夠工作在比較惡劣的環(huán)境中。并且在上充分考慮到 了系統的可擴展性和兼容性問(wèn)題,實(shí)現了本系統與其他系統的無(wú)縫連接。以滿(mǎn)足不同工作環(huán) 境的需要。
作者創(chuàng )新觀(guān)點(diǎn):本文監控系統應用范圍更廣,更靈活、方便。通過(guò)各個(gè)功能模塊 的不同組合,可以十分方便快速的應用于各個(gè)領(lǐng)系域,真正實(shí)現智能化、自動(dòng)化且具有較高 的性?xún)r(jià)比。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>