版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式技術(shù)及應(yīng)用——ARM與C/OS-Ⅱ八、基于C/OS-Ⅱ的軟件設(shè)計(jì)中北大學(xué)信息與通信工程學(xué)院楊光本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介uCOS-II的不足之處只有多任務(wù)調(diào)度的簡(jiǎn)單內(nèi)核內(nèi)存管理過(guò)于簡(jiǎn)單,幾乎沒(méi)有動(dòng)態(tài)內(nèi)存管理功能文件系統(tǒng)和圖形界面需要外掛對(duì)于設(shè)備驅(qū)動(dòng)程序沒(méi)有專(zhuān)門(mén)統(tǒng)一的接口具體的擴(kuò)展工作建立文件系統(tǒng);外設(shè)及驅(qū)動(dòng)程序的實(shí)現(xiàn);基于Unicode漢字庫(kù)的實(shí)現(xiàn)方法;基本繪圖函數(shù)的實(shí)現(xiàn);其它實(shí)用API函數(shù);基于COS-II擴(kuò)展RTOS的體系結(jié)構(gòu)1.系統(tǒng)外圍設(shè)備的硬件部分系統(tǒng)外圍設(shè)備的硬件部分包括:液晶顯示屏(LCD)、USB通信模塊、鍵盤(pán)、海量Flash存儲(chǔ)器、系統(tǒng)的時(shí)鐘和日歷。外圍設(shè)備的硬件部分是保證系統(tǒng)實(shí)現(xiàn)指定任務(wù)的最底層的部件。2、驅(qū)動(dòng)程序模塊驅(qū)動(dòng)程序是連接底層的硬件和上層的API函數(shù)的紐帶,有了驅(qū)動(dòng)程序模塊,就可以把操作系統(tǒng)的API函數(shù)和底層的硬件分離開(kāi)來(lái)。硬件的改變、刪除或者添加,只需要隨之改變、刪除或者添加提供給操作系統(tǒng)的相應(yīng)的驅(qū)動(dòng)程序就可以了。而不會(huì)影響到API函數(shù)的功能,更不會(huì)影響到用戶的應(yīng)用程序。3.操作系統(tǒng)的API函數(shù)在操作系統(tǒng)中提供標(biāo)準(zhǔn)的應(yīng)用程序接口(API)函數(shù),可以加速用戶應(yīng)用程序的開(kāi)發(fā),統(tǒng)一應(yīng)用程序的標(biāo)準(zhǔn),同時(shí)也給操作系統(tǒng)版本的升級(jí)帶來(lái)了方便。在API函數(shù)中,提供了大量的常用模塊,可以大大簡(jiǎn)化用戶應(yīng)用程序的編寫(xiě)。4.實(shí)時(shí)操作系統(tǒng)的多任務(wù)管理C/OS-Ⅱ作為操作系統(tǒng)的內(nèi)核,主要的任務(wù)就是完成多任務(wù)之間的調(diào)度和同步。5.系統(tǒng)的消息隊(duì)列這里所說(shuō)的系統(tǒng)的消息隊(duì)列是以C/OS-Ⅱ的消息隊(duì)列派生出來(lái)的系統(tǒng)消息傳遞機(jī)制,用來(lái)實(shí)現(xiàn)系統(tǒng)的各個(gè)任務(wù)之間、用戶應(yīng)用程序的各個(gè)任務(wù)之間以及用戶應(yīng)用程序和系統(tǒng)的各個(gè)任務(wù)之間的通信。6.系統(tǒng)任務(wù)系統(tǒng)任務(wù)主要包括液晶顯示屏(LCD)的刷新任務(wù)、系統(tǒng)鍵盤(pán)掃描任務(wù)。這兩個(gè)任務(wù)是操作系統(tǒng)的基本任務(wù),隨著操作系統(tǒng)的啟動(dòng)而運(yùn)行。7.用戶應(yīng)用程序用戶的應(yīng)用程序建立在系統(tǒng)的主任務(wù)(Main_Task)基礎(chǔ)之上。用戶應(yīng)用程序主要通過(guò)調(diào)用系統(tǒng)的API函數(shù)對(duì)系統(tǒng)進(jìn)行操作,完成用戶的要求。在用戶的應(yīng)用程序中也可以創(chuàng)建用戶自己的任務(wù)。任務(wù)之間的協(xié)調(diào)主要依賴(lài)于系統(tǒng)的消息隊(duì)列。本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介圖形用戶接口函數(shù)基于32位嵌入式處理器的硬件平臺(tái),有著較高的運(yùn)算速度和大容量的內(nèi)存。為人機(jī)交互建立GUI無(wú)疑為最首選的方式。本小節(jié)將建立針對(duì)常用的圖形界面的應(yīng)用建立相應(yīng)的API函數(shù)。主要包括:基本繪圖函數(shù)。基于Unicode的漢字字庫(kù)典型的控件繪圖API函數(shù)繪圖是操作系統(tǒng)的圖形界面的基礎(chǔ),本系統(tǒng)為圖形界面提供了豐富的繪圖函數(shù)。在多任務(wù)操作系統(tǒng)中,繪圖設(shè)備上下文(DC)是繪圖的關(guān)鍵。繪圖設(shè)備上下文(DC)保存了每一個(gè)繪圖對(duì)象的相關(guān)參數(shù)(比如:繪圖畫(huà)筆的寬度、繪圖的原點(diǎn)坐標(biāo)等)。在多任務(wù)操作系統(tǒng)中,通過(guò)繪圖設(shè)備上下文(DC)來(lái)繪圖,可以保證在不同的任務(wù)繪圖的參數(shù)是相互獨(dú)立的,不會(huì)互相影響。DC的定義typedef
struct{
int
DrawPointx;
int
DrawPointy;//繪圖所使用的坐標(biāo)點(diǎn)
int
PenWidth; //畫(huà)筆寬度
U32PenMode;//畫(huà)筆模式
U32PenColor; //畫(huà)筆的顏色
int
DrawOrgx; //繪圖的坐標(biāo)原點(diǎn)位置
int
DrawOrgy;
int
DrawRangex; //繪圖的區(qū)域范圍
int
DrawRangey; U8bUpdataBuffer; //是否更新后臺(tái)緩沖區(qū)
U32Fontcolor;//字符顏色}DC,*PDC;DC的初始化在繪圖設(shè)備上下文(DC)中保存了每一個(gè)繪圖對(duì)象的相關(guān)參數(shù)。在系統(tǒng)啟動(dòng)的時(shí)候,通過(guò)調(diào)用initOSDC()函數(shù)初始化繪圖設(shè)備上下文(DC),為以后創(chuàng)建繪圖設(shè)備上下文(DC)分配存儲(chǔ)空間。DC的使用典型的繪圖函數(shù)(a)voidinitOSDC();PDCCreateDC();voidDestoryDC(PDC
pdc);voidMoveTo(PDC
pdc,intx,inty);voidLineTo(PDC
pdc,intx,inty);voidDrawRectFrame(PDC
pdc,int
left,inttop,intright,intbottom);voidCircle(PDC
pdc,intx0,inty0,intr);典型的繪圖函數(shù)(b)voidSetDrawOrg(PDC
pdc,int
x,inty,int*oldx,int*oldy)設(shè)置繪圖設(shè)備上下文(DC)的原點(diǎn)典型的繪圖函數(shù)(c)voidSetDrawRange(PDC
pdc,int
x,inty,int*oldx,int*oldy)設(shè)置繪圖設(shè)備上下文(DC)的繪圖范圍x,y:設(shè)定的橫向、縱向繪圖的范圍,如果x(或者y)為1,則表示x(或者y)方向的比例隨著y(或者x)方向的范圍按比例縮放。如果參數(shù)為-1,表示方向相反DC創(chuàng)建PDCpdc;pdc=CreateDC();DC設(shè)置舉例PDCpdc;pdc=CreateDC();SetDrawOrg(pdc,170,50,&oldx,&oldy);SetDrawRange(pdc,800,-1,&oldxrange,&oldyrange);上面的程序代碼創(chuàng)建一個(gè)繪圖設(shè)備上下文(DC),將原點(diǎn)坐標(biāo)設(shè)定在液晶屏設(shè)備坐標(biāo)的(170,50),并把繪圖的邏輯坐標(biāo)的水平值設(shè)置成800,垂直范圍按照液晶屏實(shí)際的橫縱比例縮放。
實(shí)驗(yàn)1繪圖的API函數(shù)字符集與字體模塊矢量字體基于矢量的的字體,稱(chēng)之為可縮放的字體,輪廓字體,或矢量字體。由于這些字體在存儲(chǔ)時(shí)亦只存儲(chǔ)了其輪廓,因此,在不同的縮放大小下依然能保持美觀而不會(huì)出現(xiàn)“鋸齒”。這點(diǎn)是很適合其完整地在Web上傳輸。一般說(shuō)來(lái),Logo、線形藝術(shù)作品、圖表、動(dòng)畫(huà)、抽象藝術(shù)作品等凡較容易定義顏色區(qū)域的圖形,用矢量圖都能產(chǎn)生很好的效果。計(jì)算機(jī)是以處理數(shù)字為基礎(chǔ),如果要處理文字就需要規(guī)定一個(gè)編碼系統(tǒng)用不同的數(shù)字來(lái)表示相應(yīng)的字符。我們較為熟悉的有GB、GBK、BIG5、ASCII等等。由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常相互沖突。事實(shí)上,兩種編碼可能使用相同的數(shù)字代表兩個(gè)不同的字符;或者使用不同的數(shù)字代表相同的字符。在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針。其編碼容量可涵蓋世界上幾乎所有的語(yǔ)言,不僅包括拉丁語(yǔ),希臘語(yǔ),斯拉夫語(yǔ),希伯來(lái)語(yǔ),阿拉伯語(yǔ),亞美尼亞語(yǔ),還包括中文,日文和韓文這樣的象形文字,以及平假名,片假名,孟加拉語(yǔ),泰米爾語(yǔ),泰國(guó)語(yǔ),老撾語(yǔ)等。目前還有大約8000個(gè)代碼指針未用,可供擴(kuò)展。基于Unicode的字庫(kù)什么是Unicode使用Unicode的優(yōu)點(diǎn)字符的存儲(chǔ)方式編寫(xiě)Unicode的程序Unicode字模的提取Unicode字庫(kù)的顯示及相關(guān)函數(shù)什么是UnicodeUnicode是統(tǒng)一編碼的緊縮寫(xiě)法世界上常用的編碼系統(tǒng)有數(shù)百種之多,但所有的這些編碼系統(tǒng),沒(méi)有哪一個(gè)能有足夠的字符,可以適用于多種語(yǔ)言文本由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常相互沖突Unicode出現(xiàn)改變了這一切在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針使用Unicode的優(yōu)點(diǎn)使用Unicode避免了亂碼的產(chǎn)生,使得國(guó)際間文本數(shù)據(jù)交換成為可能解決了多語(yǔ)言文本同平面共存的問(wèn)題實(shí)現(xiàn)了軟件的全球化,避免了軟件產(chǎn)品在貫穿多個(gè)平臺(tái)、語(yǔ)言和國(guó)家時(shí)的重建字符的存儲(chǔ)方式
在圖形操作系統(tǒng)中,字符(包括:中文、英文)通常有2種存儲(chǔ)方式。一種方式存儲(chǔ)的是字符的圖形點(diǎn)陣另一種方式是存儲(chǔ)漢字的矢量圖形
在嵌入式處理中,因?yàn)樘幚砥鞯男阅芎颓度胧较到y(tǒng)資源還不如PC機(jī),而且,嵌入式只是針對(duì)專(zhuān)一控制而應(yīng)用的系統(tǒng)?;旧?,沒(méi)有必要使用矢量字庫(kù)。Unicode字庫(kù)分配
本系統(tǒng)中編碼采用雙字節(jié)版本的Unicode格式收集了ASCII字符(0x0000-0x00ff)256個(gè)特殊圖形符號(hào)(0x2600-0x267f和0x2700-0x27bf)320個(gè)中文字符(0x4e00-0x9fff)20992個(gè)。Unicode字庫(kù)相關(guān)函數(shù)
轉(zhuǎn)換函數(shù)voidInt2Unicode(intnumber,U16str[]);intUnicode2Int(U16str[]);voidstrChar2Unicode(U16ch2[],constcharch1[]);輸出函數(shù)voidTextOut(PDC
pdc,intx,inty,U16*ch,U8bunicode,U8fnt);voidTextOutRect(PDC
pdc,structRECT*prect,U16*ch,U8bunicode,U8fnt)
典型的控件 控件是可視化開(kāi)發(fā)的基礎(chǔ)。對(duì)于開(kāi)發(fā)應(yīng)用程序的用戶來(lái)說(shuō),控件是一個(gè)獨(dú)立的組件,它有著自己的顯示方式,自己的動(dòng)態(tài)內(nèi)存管理模式,甚至有的控件還可以向系統(tǒng)發(fā)送自己的消息。用戶不需要掌握控件的內(nèi)部到底是如何工作的,用戶只需要通過(guò)控件提供的API函數(shù),改變控件相應(yīng)的屬性,從而改變控件的顯示方式??丶囊肟梢苑奖阌脩舻拈_(kāi)發(fā),加速用戶應(yīng)用程序界面的編寫(xiě)速度。為運(yùn)行在操作系統(tǒng)上的應(yīng)用程序的界面提供了統(tǒng)一的標(biāo)準(zhǔn),方便了使用。系統(tǒng)中的控件文本框控件列表框控件圖片框控件按鈕控件窗體控件的使用流程通用的系統(tǒng)控件對(duì)一個(gè)通用的系統(tǒng)控件,包含了如下的數(shù)據(jù)結(jié)構(gòu):
typedef
struct{ U32CtrlType; //控件的類(lèi)型
U32CtrlID; //控件的ID
structRECT
ListCtrlRect;//控件的位置和大小
U32FontSize; //控件的字符大小
U32style; //控件的的邊框風(fēng)格
U8bVisible; //是否可見(jiàn)
}OS_Ctrl;主要函數(shù)介紹列表框控件CreateTextCtrl定義:PTextCtrlCreateTextCtrl(U32CtrlID,structRECT*prect,U32FontSize,U32style,char*KeyTable,PWnd
parentWnd)功能:創(chuàng)建文本框控件,返回指向文本控件的指針參數(shù)說(shuō)明:CtrlID:創(chuàng)建的文本框控件的ID,此控件ID必須是唯一的rect:指向文本框控件大小和位置的指針FontSize:文本框的字體大小,可以是表1-1數(shù)值中的一種style:文本框的風(fēng)格,可以是表3-1中的一種KeyTable:文本框的字符映射表,即按鍵對(duì)應(yīng)的在文本框中顯示的字符.如果是NJLL,表示使用默認(rèn)的字符映射表.parentWnd:指向控件父窗口的指針,如果是NJLL,表示沒(méi)有父窗口,空間屬于桌面
DestoryTextCtrl
定義:voidDestoryTextCtrl(PTextCtrl
pTextCtrl)功能:刪除文本框控件參數(shù)說(shuō)明:pTextCtrl:指向文本框的指針
SetTextCtrlText
定義:voidSetTextCtrlText(PTextCtrl
pTextCtrl,U16*pch)功能:設(shè)置文本框的文本參數(shù)說(shuō)明:pTextCtrl:指向文本框的指針pch:指向文本框顯示文字的字符串指針
GetTextCtrlText
定義:U16*GetTextCtrlText(PTextCtrl
pTextCtrl)
功能:返回指向文本框文字的指針實(shí)驗(yàn)2文本框控件,列表框控件本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介什么是文件系統(tǒng)(FileSystem)文件系統(tǒng)的定義
——處理文件的操作系統(tǒng)的部分稱(chēng)為文件系統(tǒng).是操作系統(tǒng)中統(tǒng)一管理信息資源的一種軟件,管理文件的存儲(chǔ)、檢索、更新,提供安全可靠的共享和保護(hù)手段,并且方便用戶使用文件系統(tǒng)的功能
——文件的構(gòu)造、命名、存取、采用、保護(hù)和實(shí)現(xiàn)等。文件系統(tǒng)的存儲(chǔ)媒質(zhì)
——磁盤(pán)、軟盤(pán)、光盤(pán)、FLASH盤(pán)等等文件系統(tǒng)的發(fā)展DOS1.0(1981)DOS3.0(1984)Win95(1995)Win95Osr2(1996)Win98(1998)Win3.1(1992)FAT12FAT16VFATFAT32FAT12/FAT16/FAT32的比較FAT12FAT16FAT32SizeofFATentry12bits16bits32bitsMaxnumofclusters4,08665,526268,435,456Clustersizeused0.5KB-4KB2KB-32KB4KB-32KB最大磁盤(pán)容量16,736,256
(16M)2,147,123,200
(2G)about2^41
(2T)基于FLASH的嵌入式文件系統(tǒng)FLASH讀寫(xiě)的特點(diǎn)(1)必須以Page為單位進(jìn)行讀寫(xiě);(2)寫(xiě)之前必須先擦除原有內(nèi)容;(3)擦除操作必須對(duì)Block進(jìn)行,即一次至少擦除一個(gè)Block的內(nèi)容針對(duì)這種情況,將Flash的一個(gè)Page定為1個(gè)扇區(qū),將其1個(gè)Block,32個(gè)扇區(qū)定為一個(gè)簇,這樣,簇的容量剛好為512*32=16K,滿足FAT16對(duì)簇大小的要求FLASH文件系統(tǒng)的要求(1)掉電安全:嵌入式系統(tǒng)的運(yùn)行環(huán)境一般比較惡劣,但同時(shí)又要求有較高的可靠性。這就對(duì)FLASH文件系統(tǒng)進(jìn)出了較高的要求,無(wú)論程序崩潰或系統(tǒng)掉電,都不能影響文件系統(tǒng)的一致性和完整性,文件系統(tǒng)的寫(xiě)入、垃圾回收等操作對(duì)系統(tǒng)異常中止都非常敏感,極易造成數(shù)據(jù)丟失和數(shù)據(jù)垃圾,在文件系統(tǒng)設(shè)計(jì)和選用時(shí)應(yīng)考慮;(2)平均使用(wear-leveling):由于FLASH扇區(qū)的擦除次數(shù)有限制,要求能夠均勻使用各扇區(qū),以延長(zhǎng)FLASH的使用壽命;(3)高效垃圾回收(garbagecollection):任何存儲(chǔ)器在分配使用一段時(shí)間后,都會(huì)出現(xiàn)空區(qū)和碎片數(shù)據(jù),為保證存儲(chǔ)空間的使用率。方法是先移動(dòng)扇區(qū)數(shù)據(jù),再擦除整個(gè)扇區(qū);(4)低空間消耗(lovoverhead):指文件系統(tǒng)管理結(jié)構(gòu)在FLASH存儲(chǔ)器上的空間消耗,該空間用于FS建立,而不能用于實(shí)際數(shù)據(jù)的存儲(chǔ),可以提高有用數(shù)據(jù)的存儲(chǔ)空間FLASH文件系統(tǒng)的分類(lèi)(1)集中管理文件系統(tǒng)特點(diǎn):存儲(chǔ)器空間的使用信息集中存放在存儲(chǔ)器的某個(gè)地方,存儲(chǔ)器的其它區(qū)域用于存放數(shù)據(jù),數(shù)據(jù)必須依賴(lài)關(guān)鍵信息區(qū)才能被索引和使用缺點(diǎn):需要大量緩存空間,當(dāng)某扇區(qū)需要更新時(shí),先將扇區(qū)數(shù)據(jù)備份到RAM中,再進(jìn)行擦除操作,最后將修改后的備份寫(xiě)入FLASH,缺點(diǎn)是難以保證掉電安全,不能均勻使用存儲(chǔ)器空間,特別是關(guān)鍵信息區(qū),對(duì)文件系統(tǒng)的使用個(gè)性都會(huì)改寫(xiě)該區(qū),導(dǎo)致FLASH快速損壞;FLASH文件系統(tǒng)的分類(lèi)(2)線性文件系統(tǒng)概述:每個(gè)文件相關(guān)的信息都連續(xù)存放在存儲(chǔ)器中,實(shí)現(xiàn)簡(jiǎn)單,讀寫(xiě)快速,文件系統(tǒng)的關(guān)鍵信息分布存放;優(yōu)點(diǎn):安全性好;能保證存儲(chǔ)器的平均使用,延長(zhǎng)了FLASH的使用壽命;缺點(diǎn):對(duì)文件操作效率低,不易實(shí)現(xiàn)添加、插入、剪切等操作;FLASH文件系統(tǒng)的分類(lèi)(3)日志文件系統(tǒng)概述:日志結(jié)構(gòu)的文件系統(tǒng)使用順序的、只增的日志作為磁盤(pán)上唯一的組織文件系統(tǒng)數(shù)據(jù)的結(jié)構(gòu),文件的描述可以仍采用傳統(tǒng)的索引組織方式。方法是在內(nèi)存中將幾次FS的修改匯集成一個(gè)大的日志條目(被稱(chēng)為段映像),然后動(dòng)態(tài)分配磁盤(pán)空間并通過(guò)一次寫(xiě)操作寫(xiě)到磁盤(pán)上的一個(gè)連續(xù)的、固定大小的日志段(Segment)中。并定時(shí)或當(dāng)系統(tǒng)發(fā)出同步寫(xiě)請(qǐng)求時(shí)保證日志同步寫(xiě)到磁盤(pán)上;優(yōu)點(diǎn):恢復(fù)快速。幾種開(kāi)源的FLASH文件系統(tǒng)TFS(TinyFileSystem)概述:TFS是由原Lucent公司的EdSutter開(kāi)發(fā)的嵌入式系統(tǒng)引導(dǎo)平臺(tái)Umon的一部分。TFS是一種線性結(jié)構(gòu)的文件系統(tǒng),由多個(gè)存放的文件塊組成。一個(gè)文件塊包含一個(gè)文件的所有信息。優(yōu)點(diǎn):TFS提供了掉電安全機(jī)制和垃圾回收機(jī)制,需要額外的輔助空間,用于垃圾回收時(shí)的文件緩存和過(guò)程狀態(tài),如果出現(xiàn)終止,系統(tǒng)根據(jù)輔助空間的信息進(jìn)行文件系統(tǒng)的恢復(fù);缺點(diǎn):文件的插入、剪切和個(gè)性需要較大的運(yùn)行開(kāi)銷(xiāo),即使是很小的修改,也要求將整修文件重寫(xiě)幾種開(kāi)源的FLASH文件系統(tǒng)JFFS(JournalingFlashFileSystem)概述:由瑞典Axis通信公司開(kāi)發(fā)的文件系統(tǒng),主要針對(duì)NOR型Flash存儲(chǔ)器設(shè)計(jì),提供了掉電安全,平均使用等特性,是基于Linux,由于遵循GPL開(kāi)放源代碼,易實(shí)現(xiàn)移植;FAT16文件系統(tǒng)基本結(jié)構(gòu)FAT文件系統(tǒng)由下面四部分組成保留區(qū)Reservedregion存放引導(dǎo)記錄,BIOS信息等FAT區(qū)FAT信息列表
(12/16/32bits)根目錄區(qū)目錄信息列表
(32bytes)文件和目錄區(qū)存放簇信息reservedFAT(p)FAT(b)RootdirFileanddirectory……保留區(qū)ReservedRegion引導(dǎo)記錄基本信息
……引導(dǎo)代碼BIOS參數(shù)塊
(BPB)字節(jié)/扇區(qū)(512,1024,2048,4096)扇區(qū)/簇(1,2,4,8,16,32,64,128)根目錄數(shù)總扇區(qū)值介質(zhì)類(lèi)型
(硬盤(pán),軟盤(pán),F(xiàn)LASH)reservedFAT(p)FAT(b)RootdirFileanddirectory……FAT區(qū)通常有
FAT(P)(primary)和FAT(B)(backup)每一個(gè)簇都有一個(gè)對(duì)應(yīng)的FAT目錄Cluster2Cluster3Clustern-1Clustern……FAT數(shù)據(jù)區(qū)reservedFAT(p)FAT(b)RootdirFileanddirectory………FAT鏈表
(FAT16)……目錄樹(shù)建立文件系統(tǒng)COS-II本身不提供文件系統(tǒng),針對(duì)嵌入式的應(yīng)用,為適應(yīng)大容量數(shù)據(jù)存儲(chǔ)的需要,參考FAT16的格式,可以建立起一套簡(jiǎn)單的文件系統(tǒng)。文件系統(tǒng)簡(jiǎn)介此文件系統(tǒng)可以保存最多512個(gè)文件文件數(shù)據(jù)以簇為單位進(jìn)行存儲(chǔ)。為了便于管理和提高訪問(wèn)速度,文件系統(tǒng)中不提供存儲(chǔ)子目錄的管理。文件名的格式為8.3的格式文件名稱(chēng)均為大寫(xiě)文件系統(tǒng)的組織形式文件的訪問(wèn)讀取文件的時(shí)候,首先在文件目錄表中找到相應(yīng)的文件所對(duì)應(yīng)的首簇的號(hào)碼,讀取完成一個(gè)簇以后,如果文件的長(zhǎng)度大于16KB(一個(gè)簇),就從文件分配表中查找到下一個(gè)簇的號(hào)碼,然后繼續(xù)讀取,直到文件分配表中的下一個(gè)簇號(hào)碼為FFFFH時(shí)為止文件系統(tǒng)實(shí)現(xiàn)過(guò)程文件相關(guān)的API函數(shù)文件的打開(kāi)文件的讀取文件的寫(xiě)入文件的關(guān)閉文件的列表文件結(jié)構(gòu)體文件結(jié)構(gòu)體的定義如下:typedef
struct{ U8Buffer[BLOCK_SIZE]; //文件緩沖區(qū)
U32fileblock; //文件當(dāng)前的簇的位置
U32filemode; //打開(kāi)文件的模式
U32filebufnum; //文件緩沖區(qū)中已經(jīng)讀取/寫(xiě)入的字節(jié)數(shù)
U32fileCurpos; //讀寫(xiě)的當(dāng)前位置
U32filesize; //文件的大小}FILE;可見(jiàn),在FILE結(jié)構(gòu)中包括了文件的緩沖區(qū)和其他的相關(guān)信息。文件系統(tǒng)的相關(guān)函數(shù)始始化文件系統(tǒng)voidinitOSFile(charfilename[],U32OpenMode)讀文件到緩沖區(qū)U32ReadOSFile(FILE*pfile,U8*ReadBuffer,U32nReadbyte)把緩沖區(qū)內(nèi)容寫(xiě)入文件U32WriteOSFile(FILE*pfile,U8*WriteBuffer,U32nWritebyte)關(guān)閉文件,釋放緩沖區(qū)voidCloseOSFile(FILE*Pfile)實(shí)驗(yàn)3文件的操作本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介系統(tǒng)消息在多任務(wù)操作系統(tǒng)中,各個(gè)任務(wù)之間,用戶應(yīng)用程序的各個(gè)任務(wù)之間以及用戶應(yīng)用程序和系統(tǒng)的各個(gè)任務(wù)之間的通常是通過(guò)消息來(lái)傳遞信息和同步的。消息與任務(wù)本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介外設(shè)及驅(qū)動(dòng)程序外設(shè)驅(qū)動(dòng)程序可以對(duì)系統(tǒng)提供訪問(wèn)外圍設(shè)備的接口,把操作系統(tǒng)(軟件)和外圍設(shè)備(硬件)分離開(kāi)來(lái)。當(dāng)外圍設(shè)備改變的時(shí)候,只需更換相應(yīng)的驅(qū)動(dòng)程序,不必修改操作系統(tǒng)的內(nèi)核以及運(yùn)行在操作系統(tǒng)中的軟件。本小節(jié)中,將建立幾種典型外設(shè)的驅(qū)動(dòng)程序標(biāo)準(zhǔn)接口。串行口 串行口符合RS-232標(biāo)準(zhǔn),通訊的最高速度可以達(dá)到115200bps。串行口的接口函數(shù)如下:voidUart_Init(int
Uartnum,int
mclk,intbaud);voidUart_Printf(char*fmt,...);charUart_Getch(char*Revdata,int
Uartnum,inttimeout);voidUart_SendByte(int
Uartnum,intdata);實(shí)驗(yàn)4串行口通信液晶顯示驅(qū)動(dòng)程序液晶屏是內(nèi)部有控制電路的液晶模塊分辨率320x240使用雙緩沖機(jī)制顯示緩沖區(qū)在系統(tǒng)的內(nèi)存里開(kāi)辟了一塊內(nèi)存作為液晶屏顯示的后臺(tái)緩沖區(qū)LCDBuffer,其定義如下:U32LCDBuffer[LCDHEIGHT][LCDWIDTH];其中,LCDBuffer為按雙字映射存儲(chǔ)的緩沖區(qū)(即:每四個(gè)字節(jié)表示一個(gè)點(diǎn)),寫(xiě)入的時(shí)候調(diào)用液晶屏的voidLCD_Refresh()函數(shù),就可以把緩沖區(qū)的內(nèi)容顯示在液晶屏上。因?yàn)榫彌_區(qū)是按雙字存儲(chǔ)的,所以LCDBuffer[y][x]對(duì)應(yīng)的就是屏幕點(diǎn)(x,y)的像素值,每一個(gè)點(diǎn)用一個(gè)32位的整數(shù)表示,可以滿足實(shí)現(xiàn)32位真彩色圖片的顯示,保證不同的液晶屏的兼容性。不同的液晶屏只需要更新LCD320.c和LCD320.h文件中的驅(qū)動(dòng)程序即可液晶模塊的控制液晶模塊有兩種工作模式:圖形方式:在圖形方式下,模塊上的緩沖區(qū)映射的是液晶屏上顯示的圖形點(diǎn)陣文本方式:在文本模式下,模塊上的緩沖區(qū)對(duì)應(yīng)的是液晶屏上顯示的文本字符,包括:英文字符和英文標(biāo)點(diǎn)符號(hào)。液晶屏的操作主要包括:初始化、設(shè)置液晶屏的工作模式(文本或者圖形)、更新顯示、開(kāi)啟(或者關(guān)閉)背光。液晶驅(qū)動(dòng)程序接口voidLCD_Init(void);voidLCD_printf(char*fmt,...);voidLCD_ChangeMode(U8mode);voidLCD_Refresh();voidLCDBkLight(U8isOpen);鍵盤(pán)驅(qū)動(dòng)程序本控制器使用的是4x4的鍵盤(pán)(16鍵),在S3C44B0X的GPD端口上由程序掃描控制,無(wú)需外圍芯片在操作系統(tǒng)中,鍵盤(pán)掃描是通過(guò)uCOS-II的專(zhuān)門(mén)的一個(gè)任務(wù)來(lái)控制的支持系統(tǒng)的組合按鍵(相當(dāng)于Ctrl、Shift等),最多可以支持16鍵中所有的功能按鍵同時(shí)組合鍵盤(pán)驅(qū)動(dòng)接口U32GetKey();低16位為鍵盤(pán)號(hào)碼,高16位對(duì)應(yīng)功能鍵掃描碼(1有效)。此函數(shù)為死鎖函數(shù),調(diào)用以后,除非有按鍵按下,否則,函數(shù)不會(huì)返回。voidSetFunctionKey(U16Fnkey);設(shè)定功能鍵掃描碼,1有效??梢蕴峁┙M合按鍵。功能鍵不能單獨(dú)返回。U32GetNoTaskKey();類(lèi)似于GetKey(),但是,此函數(shù)不會(huì)釋放此任務(wù)的控制權(quán),除非有更高級(jí)的任務(wù)運(yùn)行。鍵盤(pán)消息在系統(tǒng)中,鍵盤(pán)有專(zhuān)門(mén)的任務(wù)來(lái)管理。當(dāng)有按鍵按下的時(shí)候就會(huì)相應(yīng)鍵盤(pán)消息鍵盤(pán)的消息類(lèi)型為OSM_KEY消息參數(shù)WParam表示系統(tǒng)的鍵盤(pán)按鍵號(hào)碼LParam表示按鍵時(shí)同時(shí)按下的功能鍵等待鍵盤(pán)消息可以通過(guò)如下代碼來(lái)等待并處理鍵盤(pán)消息POSMSGpMsg=0;//消息循環(huán)for(;;){
pMsg=WaitMessage(0);//等待消息
switch(pMsg->Message){ caseOSM_KEY:
onKey(pMsg->WParam, pMsg->LParam); break; }
DeleteMessage(pMsg);//刪除消息,釋放資源}其它實(shí)用API函數(shù)為了便于用戶的應(yīng)用開(kāi)發(fā),操作系統(tǒng)還提供了一些常用的API函數(shù)和數(shù)據(jù)結(jié)構(gòu)。主要包括:雙向鏈表的相關(guān)API函數(shù)系統(tǒng)的時(shí)間相關(guān)API函數(shù)系統(tǒng)的圖形相關(guān)API函數(shù)雙向鏈表API函數(shù)voidinitOSList();初始化鏈表,為鏈表分配動(dòng)態(tài)空間voidAddListNode(PList
plist,void*pNode);在指定的位置為鏈表增加一個(gè)節(jié)點(diǎn)voidDeleteListNode(PList
pList);刪除鏈表的指定節(jié)點(diǎn)PList
GetLastList(PList
pList);返回鏈表的最后一個(gè)節(jié)點(diǎn)系統(tǒng)的時(shí)間API函數(shù)voidInitRtc();voidGet_Rtc(PstructTimetime);U8Rtc_IsTimeChange(U32hichChange);voidSet_Rtc(PstructTimetime);voidRtc_Format(char*fmtchar,U16*outstr);圖形相關(guān)API函數(shù)voidCopyRect(structRECT*prect1,structRECT*prect2);voidSetRect(structRECT*prect,intleft,inttop,intright,intbottom);voidInflateRect(structRECT*prect,int
cx,intcy);U8IsInRect(structRECT*prect,intx,inty);本節(jié)提要132546基于COS-II擴(kuò)展RTOS圖形用戶接口設(shè)計(jì)外設(shè)及驅(qū)動(dòng)文件系統(tǒng)的設(shè)計(jì)系統(tǒng)的消息嵌入式GUI簡(jiǎn)介GUI的概念GUI的定義
GraphicsUserInterface,是指計(jì)算機(jī)與其使用者之間的圖形化對(duì)話接口。GUI的主要特征:
——Windows,采用窗口界面,每個(gè)窗口是用戶或系統(tǒng)的一個(gè)工作區(qū)域。一個(gè)屏幕上可以有多個(gè)窗口。
——Icons,采用形象化的圖標(biāo)或圖符,易于操作者理解與操作。
——Menu,采用菜單,可供用戶選擇的功能提示
——PointingDevices,指鼠標(biāo)器、觸摸屏等,便于用戶直接對(duì)屏幕對(duì)象進(jìn)行操作。嵌入式GUI的特點(diǎn)體積小功能強(qiáng);圖形算法簡(jiǎn)潔、快速,占用系統(tǒng)資源少可靠性高;模塊結(jié)構(gòu),便于移植和定制嵌入式GUI的實(shí)現(xiàn)方法1)照需求開(kāi)發(fā)滿足自身特定需要的GUI系統(tǒng);2)將GUI作為一個(gè)軟件層從應(yīng)用程序中剝離,GUI的支持邏輯由應(yīng)用程序自己負(fù)責(zé);3)設(shè)計(jì)一個(gè)支持大多數(shù)常見(jiàn)的GUI對(duì)象的應(yīng)用編程接口庫(kù),使其具有與其他通用開(kāi)發(fā)工具相類(lèi)似的調(diào)用方法(如Win32)的GUI系統(tǒng)幾種典型的嵌入式GUICompactX-WindowSystem:可擴(kuò)展性好、可移植性好,代碼尺寸大Microwindows
:開(kāi)放源碼的嵌入式GUI軟件,可移植性好,圖形功能出色。OpenGUI
:自由軟件。匯編實(shí)現(xiàn)的內(nèi)核,并利用MMX指令進(jìn)行了優(yōu)化,OpenGUI運(yùn)行速度非??臁VС?2位處理器,可以在MS-DOS,QNX和Linux下運(yùn)行。主要用來(lái)在這些系統(tǒng)中開(kāi)發(fā)圖形應(yīng)用程序和游戲Qt/Embedded:QT庫(kù)開(kāi)發(fā)商Trolltech
推出的面向嵌入式系統(tǒng)的QT版本??梢浦残院?,價(jià)格較貴。MiniGUI:自由軟件,面向嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)的圖形用戶界面支持系統(tǒng)。它主要運(yùn)行于Linux,還可以運(yùn)行在任何一種具有POSIX線程支持的POSIX兼容系統(tǒng)上嵌入式GUICompactX-WindowSystem:可擴(kuò)展性好、可移植性好,代碼尺寸大Microwindows
:開(kāi)放源碼的嵌入式GUI軟件,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識(shí)產(chǎn)權(quán)新員工培訓(xùn)課件
- 春風(fēng)十里才子歸來(lái)
- 主播直播培訓(xùn)
- 二零二五年度建筑垃圾清運(yùn)合同示范3篇
- 珠寶瓷器知識(shí)培訓(xùn)課件
- “雙減”政策下語(yǔ)文作業(yè)的設(shè)計(jì)趨勢(shì)
- 臨床C1q 腎病病因、發(fā)病機(jī)制、關(guān)鍵診斷特征、病理三鏡、鑒別診斷及病理圖譜
- 兒科超聲對(duì)小兒急腹癥診斷要點(diǎn)和注意事項(xiàng)
- 四川省瀘州市江陽(yáng)區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期1月期末考試英語(yǔ)試題(含答案)
- 湖南省長(zhǎng)沙市2025年新高考適應(yīng)性考試地理試題(含答案)
- 住宅設(shè)計(jì)效果圖協(xié)議書(shū)
- 新版中國(guó)食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024河南鄭州市金水區(qū)事業(yè)單位招聘45人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 食物損失和浪費(fèi)控制程序
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- 2024四川太陽(yáng)能輻射量數(shù)據(jù)
- 石油鉆采專(zhuān)用設(shè)備制造考核試卷
- 法人變更股權(quán)轉(zhuǎn)讓協(xié)議書(shū)(2024版)
- 研究生中期考核匯報(bào)模板幻燈片
- 培訓(xùn)機(jī)構(gòu)與學(xué)校合作協(xié)議書(shū)范本
評(píng)論
0/150
提交評(píng)論