999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM7支持觸摸屏和實時操作系統的開發與應用

2010-10-18 04:14:16李廣榮宗文波韓建超于海濱劉锏澤
電子產品世界 2010年9期

李廣榮 宗文波 韓建超 楊 丹 于海濱 劉锏澤

摘要:本文介紹了μC/OS-II嵌入式實時操作系統和μC/GUI在ARM7處理器上的移植方法,以及如何利用嵌入式操作系統進行應用程序的開發和管理各種任務。重點討論了μC/OS-II實時操作系統的移植方法和μC/GUI的移植技術,并提供了一種簡單有效的去除觸摸屏抖動的方法;最后通過應用實例對任務的劃分和界面的操作進行了說明。

關鍵詞:觸摸屏;μC/GUI;μC/OS-II;ARM7

概述

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

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

mC/OS-II嵌入式操作系統的移植

mC/OS-II作為操作系統的內核,主要的任務就是完成多任務之間的調度和同步,協調各個硬件源不會沖突。與其它嵌入式操作系統相比,它具有系統透明、可拆減、接口簡單的特點。下面就如何在S3C44B0進行操作系統移植和修改作簡要的描述:

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

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

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

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

(2)修改OS_CPU_C.C文件

a)任務堆棧初始化函數OSTaskStkInit():在編寫任務堆棧初始化函數OSTaskStkInit()之前,必須先根據處理器的結構和特點確定任務的堆棧結構;

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

(3)重點編寫OS_CPU_A.S文件a)開/關中斷函數:在ARM7處理器核中可利用改變程序狀態寄存器CPSR中的相應控制位實現;

b)OSStartHighRdy(void):OSStart()函數調用OSStartHighRdy()來使就緒態任務中優先級最高的任務開始執行;

c)OS_TASK_SW(void):μC/OS-II通過調用OSSched()函數來完成任務調度的,OSSched()先將最高優先級任務的地址裝載到OSTCBHighRdy,再通過調用OS_TASK_SW()執行任務級的任務切換,OS_TASK_SW主要完成保護現場,完成用于的任務,恢復現場;

d)OSIntCtxSw(void):OSIntExit()通過調用OSIntCtxSw(),在中斷服務程序中執行任務切換功能。

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

程序清單 OSTickISR()

OSTickISR

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

BL OSIntEnter

BL user_function ;調用用戶

處理的中斷處理程序

BL OSIntExit

LDMFD SP!,{R0-R3,R12,LR} S3C44B0觸摸屏驅動程序編制

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

int TOUCH_X_MeasureX(void)

{

X=ReadTouchXY(CHX);

return X;

}

int TOUCH_X_MeasureY(void)

{

Y=ReadTouchXY(CHY);

return Y;

}

其中,ReadTouchXY()函數通過TOUCH_X_MeasureX(void)、TOUCH_X_MeasureY(void)讀取對應坐標的X、Y軸的電壓值,并送入主控程序進行坐標轉化,得出當前觸摸屏按壓的位置。

int ReadTouchXY(unsigned char

command)

{

//根據command參數,進行X、Y向觸摸點選擇、去抖、位置的計算等

return ack;//返回觸摸屏對應位

置值;

}

mC/GUI及與操作系統的接口

mC/GUI是運行于操作系統之上的程序,它既需要與操作系統協調,又需要與各種輸入/輸出設備協調,即通過輸入設備接收用戶請求,通過輸出設備發送微處理器的處理結果。因此,mC/GUI的接口主要包括兩個:與操作系統的接口和與輸入/輸出設備的接口,這也正是在移植mC/GUI的過程中所要解決的關鍵問題。mC/GUI與mC/OS-II結合應用時通過上鎖和解鎖來解決資源互斥的問題,其過程是通過在關鍵區域入口設置GUI_X_Lock()以獲得專一訪問權,用完后在出口處設置GUI_X_Unlock()讓出資源,達到多個GUI任務對同一數據在關鍵區域內訪問的互斥。

在mC/GUI移植到mC/OS-II的過程中,需要利用操作系統的資源來實現GUI所需要的功能,即利用μC/OSII提供的時間管理、任務管理和資源共享機制來實現μC/GUI中相應的功能,具體要實現以下函數的重新定義:

(1)時間函數

GUI_X_Delay() //延遲指定的時間段后返回

GUI_X_ExecIdle() //視窗管理器的非堵塞函數調用

GUI_X_GetTime() //返回當前

系統的時間,以毫秒為單位

(2)內核接口函數

GUI_X_InitOS() //初始化內核

接口模塊

GUI_X_GetTaskID() //返回一個

當前任務/線程唯一的32位標識符

GUI_X_Lock() //給GUI上鎖

GUI_X_UnLock() //解鎖GUI

GUI_X_Log() //返回調試信息

(3)LCD底層驅動程序要使mC/GUI能夠在目標系統上運行,首先要對mC/GUI進行配置和修改,也就是移植。移植工作主要是指對配置頭文件中的宏定義根據具體情況進行修改,包括LCD宏和LCD控制器宏。使用mC/GUI庫函數時,必須在主函數前調用頭文件“gui.h”,并根據需要做適當的修改。值得注意的是,在此文件的預定義語句中,必須將GUI_SUPPORT_TOUCH設為1。如果需要在屏幕上顯示中文,除了添加中文字庫到工程中外,還需要將GULDEFAULT_FONT設為&GULFontHZ12,HZ12代表使用的中文字體。如果需要在mC/GUI的控件中使用中文,也需要在控件的預定義語句中作相應的修改。由于ARM7芯片S3C44B0X內部集成了LCD控制器,LCD底層驅動程序主要是設計與LCD屏相關的參數以及其特殊的控制寄存器,主要包括以下的參數和寄存器:

#de ne SCR_XSIZE (640)

//LCD水平尺寸

#de ne SCR_YSIZE (240)

//LCD垂直尺寸

#de ne LCD_XSIZE (640)

//LCD水平分辨率

#de ne LCD_YSIZE (240)

//LCD垂直分辨率

#define ARRAY_SIZE_COLOR (SCR_XSIZE/1*SCR_YSIZE)

//LCD水平與垂直比例

#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)

//LCD水平字節尺寸

#de ne SCR_XSIZE (640)

//LCD水平尺寸

#de ne SCR_XSIZE (640)

//LCD水平尺寸寄存器的定義根據不同的微處理器和LCD顏色、尺寸等來定義,這里以S3C44B0X說明:

rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

rLCDCON2=(LINEVAL)

|(HOZVAL_COLOR<<10)|(10<<21);

rLCDSADDR1= (0x3<<27)|(((U32)frameBuffer>>22)<<21)|M5D((U32)frameBu er>>1);

rLCDSADDR3= (LCD_XSIZE/2)|(((SCR_XSIZE-LCD_XSIZE)/2)<<9);

嵌入式操作系統下應用程序的開發

在嵌入式操作系統下開發基于ARM7的應用程序主要是進行任務的劃分,根據每個任務的緊急程度建立不同優先級,下面就任務劃分的原則和實例進行說明:

任務劃分原則

將一個軟件系統分解成并行任務時,主要考慮系統內功能的異步性。通過分析數據流圖中的變換,確定哪些變換是并行的,哪些變換本質上是順序執行的。通過這種方法,一個變換對應一個任務,或一個變換包括幾個任務,同時應遵循如下原則:

● I/O依賴性:由于I/O速度的限制,對它操作的程序應獨立為一個任務;

● 時間關鍵性:將有時間關鍵性的功能分離出來,組成獨立的任務,賦予高優先級;

● 計算功能:計算功能要占用較多CPU時間間,應賦予他們較低的優先級;

● 功能內聚:將緊密相關的功能組成一個任務,使各種功能共享資源或相同事件的驅動;

● 時間內聚:將在同一時間內完成的任務,即使功能不相關,組成一個獨立的任務;

● 周期執行功能:相同周期內執行的各功能組成一個任務,頻率高的賦予高優先級。

應用實例

本文以實際項目為例進行分析,在本項目中觸摸屏作為輸入設備、系統檢測輸出窗口,通過控制器嵌入mC/OS-II操作系統和mC/GUI配合使用實現完成相應按鈕指令的功能,并在后臺的特定任務中完成各種中斷、計算、通訊等功能。因此進行了如表1所列的任務劃分和定義。

觸摸屏的應用程序可以根據觸摸屏的實際使用情況來編寫,但在編寫時應該注意模塊化的編程思想,以便它能作為一種輸入平臺簡便的移植到相關的應用中。本文編寫了一個泵的控制系統作為觸摸屏應用設計的實例。利用圖形軟件mC/GUI編寫的控制系統操作界面如圖1所示,當用觸摸筆或者手指直接點擊圖中可編輯的按鈕控件(如最高壓力、設定流量和設定時間),彈出參數輸入對話框,如圖2所示。mC/GUI的設計具有模塊化的特點,在不同的模塊中包含了不同的層,比如LCD驅動包含了所有與LCD的接口。同樣,mC/GUI也提供了通用觸摸屏的應用程序接口(API),應用程序可以通過將它的函數庫添加到工程中來方便的使用。

結語

在mC/OS-II實時操作系統和ARM平臺上開發應用軟件已經成為現代工業領域熱點,可以大大地降低軟件程序編寫的時間和任務難度,提高了各模塊的獨立性,縮短開發周期,并且系統具有更好的穩定性、可移植性和可維護性。本文以實際的項目為應用背景,開發的基于ARM7支持觸摸屏(mC/GUI)的實時操作系統(mC/OS-II)具有良好的人機交互界面,完善的驅動、控制、顯示、檢測和計算功能,支持單機和網絡控制運行。

主站蜘蛛池模板: 国产aaaaa一级毛片| 青青操国产视频| 伊人精品成人久久综合| 亚洲第一在线播放| 四虎永久免费网站| 国产精品成| 日本AⅤ精品一区二区三区日| 欧美色综合久久| 五月天久久综合| 国产欧美日韩91| 丁香婷婷激情综合激情| 免费AV在线播放观看18禁强制| 久爱午夜精品免费视频| 国产麻豆精品在线观看| 呦系列视频一区二区三区| 久久精品国产免费观看频道| 国产香蕉国产精品偷在线观看| 亚洲欧美一区二区三区蜜芽| 国产精品一老牛影视频| 暴力调教一区二区三区| 9丨情侣偷在线精品国产| 不卡无码网| 无码又爽又刺激的高潮视频| 久久精品日日躁夜夜躁欧美| 美女高潮全身流白浆福利区| 国产亚洲高清在线精品99| 成人午夜福利视频| 狠狠色综合久久狠狠色综合| 亚洲AV无码一区二区三区牲色| 这里只有精品在线播放| 日韩在线成年视频人网站观看| 亚洲aaa视频| 日韩在线成年视频人网站观看| 亚洲综合色婷婷中文字幕| 亚洲色大成网站www国产| 日韩免费毛片| 青青青国产免费线在| 亚洲一级毛片免费观看| 欧美色视频在线| 色综合婷婷| 久草性视频| 免费人欧美成又黄又爽的视频| 国产在线视频二区| 永久成人无码激情视频免费| 色婷婷国产精品视频| 亚洲一区毛片| 亚洲精品麻豆| 伊人中文网| 日本伊人色综合网| 亚洲精品制服丝袜二区| 国产精品成人AⅤ在线一二三四| 72种姿势欧美久久久大黄蕉| 啦啦啦网站在线观看a毛片| 中文天堂在线视频| 97视频免费看| 免费毛片在线| 国产极品美女在线| 国产手机在线ΑⅤ片无码观看| 99久久精品免费视频| 国产1区2区在线观看| 91精品视频网站| 国产亚洲欧美在线人成aaaa| 亚洲视频在线网| 色综合天天视频在线观看| 精品久久香蕉国产线看观看gif| 蜜臀AVWWW国产天堂| 四虎国产精品永久一区| 成人免费一级片| 日韩免费中文字幕| 91国内视频在线观看| 亚洲天堂网视频| 天天色综合4| 日韩成人在线一区二区| 欧美第一页在线| 亚洲精品爱草草视频在线| 国产尤物在线播放| 男女男精品视频| 国产免费怡红院视频| 少妇露出福利视频| 日本a∨在线观看| 日韩精品一区二区三区免费在线观看| 激情亚洲天堂|