色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM7支持觸摸屏和實(shí)時(shí)操作系統(tǒng)的開發(fā)與應(yīng)用

          基于ARM7支持觸摸屏和實(shí)時(shí)操作系統(tǒng)的開發(fā)與應(yīng)用

          作者: 時(shí)間:2010-09-25 來源:電子產(chǎn)品世界 收藏

            摘要:本文介紹了μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng)和μC/GUI在7處理器上的移植方法,以及如何利用嵌入式操作系統(tǒng)進(jìn)行應(yīng)用程序的開發(fā)和管理各種任務(wù)。重點(diǎn)討論了μC/OS-II實(shí)時(shí)操作系統(tǒng)的移植方法和μC/GUI的移植技術(shù),并提供了一種簡單有效的去除抖動(dòng)的方法;最后通過應(yīng)用實(shí)例對(duì)任務(wù)的劃分和界面的操作進(jìn)行了說明。

          本文引用地址:http://cafeforensic.com/article/112971.htm

            關(guān)鍵詞:;μC/GUI;μC/OS-II;7

            概述

            隨著信息技術(shù)的發(fā)展,支持圖形界面的觸摸操作和實(shí)時(shí)操作系統(tǒng)相結(jié)合的應(yīng)用系統(tǒng)已經(jīng)越來越廣泛地應(yīng)用到航空航天、軍事、消費(fèi)類電子、通訊設(shè)備等領(lǐng)域。mC/OS-II操作系統(tǒng)是一種占先式、實(shí)時(shí)操作系統(tǒng)(RTOS),由于其內(nèi)核可拆減、可剝離性,使得它在實(shí)時(shí)控制領(lǐng)域中有著廣泛的應(yīng)用。它不僅減小了因?yàn)橄到y(tǒng)硬件設(shè)計(jì)缺陷帶來的不可靠因素,而且增強(qiáng)了系統(tǒng)的控制實(shí)時(shí)性,從軟件方面進(jìn)一步增強(qiáng)了控制系統(tǒng)的性能。另外,新版本的mC/OS-II已經(jīng)通過了FAA認(rèn)證,很適合應(yīng)用于對(duì)實(shí)時(shí)性要求很高的嵌入式工業(yè)控制領(lǐng)域,如目前應(yīng)用較廣泛的軍用戰(zhàn)斗機(jī)、攻擊機(jī)和火控系統(tǒng)等。

            支持圖形界面操作(mC/GUI)是一種較為流行的人機(jī)交互系統(tǒng),它能夠提供了友好的人機(jī)交互平臺(tái),使得微處理器成為大多數(shù)人都能夠使用和接受的工具。與PC機(jī)不同,由于mC/OS-II基本為“黑盒”式操作系統(tǒng),對(duì)人機(jī)界面的控制與開發(fā)需比較復(fù)雜的編程技術(shù)和時(shí)序控制技術(shù)。ARM7嵌入式實(shí)時(shí)控制系統(tǒng)對(duì)mC/GUI的要求更高,包括輕型、占用資源少、高性能、高可靠性及可配置等。因此,如何將ARM7、mC/GUI、mC/OS-II、驅(qū)動(dòng)和應(yīng)用程序有機(jī)的結(jié)合起來,在ARM7上進(jìn)行運(yùn)行并完成用戶想實(shí)現(xiàn)的任務(wù),成為在嵌入式操作系統(tǒng)開發(fā)中的一項(xiàng)關(guān)鍵技術(shù)。

            mC/OS-II嵌入式操作系統(tǒng)的移植

            mC/OS-II作為操作系統(tǒng)的內(nèi)核,主要的任務(wù)就是完成多任務(wù)之間的調(diào)度和同步,協(xié)調(diào)各個(gè)硬件源不會(huì)沖突。與其它嵌入式操作系統(tǒng)相比,它具有系統(tǒng)透明、可拆減、接口簡單的特點(diǎn)。下面就如何在S3C44B0進(jìn)行操作系統(tǒng)移植和修改作簡要的描述:

            (1)重新修改OS_CPU.H文件

            a)定義數(shù)據(jù)類型:mC/OS-Ⅱ不使用C語言中的short、int、long等與處理器類型有關(guān)的數(shù)據(jù)類型,而代之以移植性強(qiáng)的數(shù)據(jù)類型,這樣既直觀又便于移植;

            b)定義堆棧增長類型和ARM運(yùn)行的模式:雖然ARM處理器對(duì)堆棧向上與向下的兩種增長方式都予以支持,但由于編譯器ADS僅支持堆棧從上往下,并且必須是滿遞減堆棧,所以在文件中用來定義堆棧增長方式的常量OS_STK_GROWTH 的值為1;

            c)需對(duì)外部函數(shù)聲明:如在mC/OS-II.h頭文件中,有些要移植的函數(shù)已經(jīng)聲明,包括:OSTaskStkInit()、OSIntCtxSw(void)、OSStartHighRdy(void) 。

            (2)修改OS_CPU_C.C文件

            a)任務(wù)堆棧初始化函數(shù)OSTaskStkInit():在編寫任務(wù)堆棧初始化函數(shù)OSTaskStkInit()之前,必須先根據(jù)處理器的結(jié)構(gòu)和特點(diǎn)確定任務(wù)的堆棧結(jié)構(gòu);

            b)鉤子函數(shù):mC/OS-II為了用戶在系統(tǒng)函數(shù)中書寫自己的代碼而預(yù)置了一些鉤子函數(shù)(如OSTimeTickHook),這些函數(shù)在移植時(shí)可全為空函數(shù),可根據(jù)用戶的需要添加。

            (3)重點(diǎn)編寫OS_CPU_A.S文件a)開/關(guān)中斷函數(shù):在ARM7處理器核中可利用改變程序狀態(tài)寄存器CPSR中的相應(yīng)控制位實(shí)現(xiàn);

            b)OSStartHighRdy(void):OSStart()函數(shù)調(diào)用OSStartHighRdy()來使就緒態(tài)任務(wù)中優(yōu)先級(jí)最高的任務(wù)開始執(zhí)行;

            c)OS_TASK_SW(void):μC/OS-II通過調(diào)用OSSched()函數(shù)來完成任務(wù)調(diào)度的,OSSched()先將最高優(yōu)先級(jí)任務(wù)的地址裝載到OSTCBHighRdy,再通過調(diào)用OS_TASK_SW()執(zhí)行任務(wù)級(jí)的任務(wù)切換,OS_TASK_SW主要完成保護(hù)現(xiàn)場,完成用于的任務(wù),恢復(fù)現(xiàn)場;

            d)OSIntCtxSw(void):OSIntExit()通過調(diào)用OSIntCtxSw(),在中斷服務(wù)程序中執(zhí)行任務(wù)切換功能。

            e)時(shí)鐘節(jié)拍函數(shù):在本移植中,只使用了ARM的IRQ中斷。由于不同的ARM芯片的中斷系統(tǒng)并不完全一樣,因此不可能編寫出對(duì)所有使用ARM核的處理器通用的中斷及節(jié)拍移植代碼,但是這是后續(xù)任務(wù)管理中重點(diǎn)需要操作系統(tǒng)進(jìn)行處理的,OSTickISR的實(shí)現(xiàn)代碼見程序清單。

            程序清單 OSTickISR()

            OSTickISR

            STMFD SP!, {R0-R3,R12,LR}

            BL OSIntEnter

            BL user_function ;調(diào)用用戶

            處理的中斷處理程序

            BL OSIntExit

            LDMFD SP!,{R0-R3,R12,LR}

           

           

           

            S3C44B0觸摸屏驅(qū)動(dòng)程序編制

            本文采用固定參考電壓模式,在驅(qū)動(dòng)程序開發(fā)過程中,需要關(guān)注時(shí)鐘端、輸入端和輸出端的時(shí)序特性。首先檢測PENIRQ是否為低電平,只有觸摸屏有接觸時(shí)此位才會(huì)為低電平。利用軟件模擬DIN、DOUT和DCLK上的三線串行傳輸時(shí)序,將讀取的X或Y坐標(biāo)數(shù)值的控制字串行送人ADS7843,然后再從對(duì)應(yīng)的函數(shù)讀出該坐標(biāo)值,獲取坐標(biāo)值的源程序如下:

            int TOUCH_X_MeasureX(void)

            {

            X=ReadTouchXY(CHX);

            return X;

            }

            int TOUCH_X_MeasureY(void)

            {

            Y=ReadTouchXY(CHY);

            return Y;

            }

          c語言相關(guān)文章:c語言教程


          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理



          上一頁 1 2 3 下一頁

          關(guān)鍵詞: ARM 觸摸屏 μC/GUI 201009

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉