嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)_第1頁
嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)_第2頁
嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)_第3頁
嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)_第4頁
嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)第1頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三uCOS-II的不足之處只有多任務(wù)調(diào)度的簡單內(nèi)核內(nèi)存管理過于簡單,幾乎沒有動態(tài)內(nèi)存管理功能文件系統(tǒng)和圖形界面需要外掛對于設(shè)備驅(qū)動程序沒有專門統(tǒng)一的接口第2頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三對COS-II進(jìn)行必要的擴(kuò)展要想實(shí)現(xiàn)一個(gè)相對完整、實(shí)用的嵌入式操作系統(tǒng),還需要相當(dāng)多的擴(kuò)展性的工作。如:建立了FAT兼容的文件系統(tǒng)外設(shè)及驅(qū)動程序的實(shí)現(xiàn)基于Unicode的漢字庫基本繪圖函數(shù)的實(shí)現(xiàn)其它實(shí)用API函數(shù)第3頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三基于COS-II擴(kuò)展RTOS

2、的體系結(jié)構(gòu)第4頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三1系統(tǒng)外圍設(shè)備的硬件部分系統(tǒng)外圍設(shè)備的硬件部分包括:液晶顯示屏(LCD)、USB通信模塊、鍵盤、海量Flash存儲器、系統(tǒng)的時(shí)鐘和日歷。外圍設(shè)備的硬件部分是保證系統(tǒng)實(shí)現(xiàn)指定任務(wù)的最底層的部件。2、驅(qū)動程序模塊驅(qū)動程序是連接底層的硬件和上層的API函數(shù)的紐帶,有了驅(qū)動程序模塊,就可以把操作系統(tǒng)的API函數(shù)和底層的硬件分離開來。硬件的改變、刪除或者添加,只需要隨之改變、刪除或者添加提供給操作系統(tǒng)的相應(yīng)的驅(qū)動程序就可以了。而不會影響到API函數(shù)的功能,更不會影響到用戶的應(yīng)用程序。第5頁,共112頁,2022年,5月20日,3點(diǎn)1

3、2分,星期三3操作系統(tǒng)的API函數(shù)在操作系統(tǒng)中提供標(biāo)準(zhǔn)的應(yīng)用程序接口(API)函數(shù),可以加速用戶應(yīng)用程序的開發(fā),統(tǒng)一應(yīng)用程序的標(biāo)準(zhǔn),同時(shí)也給操作系統(tǒng)版本的升級帶來了方便。在API函數(shù)中,提供了大量的常用模塊,可以大大簡化用戶應(yīng)用程序的編寫。4實(shí)時(shí)操作系統(tǒng)的多任務(wù)管理C/OS-作為操作系統(tǒng)的內(nèi)核,主要的任務(wù)就是完成多任務(wù)之間的調(diào)度和同步。5系統(tǒng)的消息隊(duì)列這里所說的系統(tǒng)的消息隊(duì)列是以C/OS-的消息隊(duì)列派生出來的系統(tǒng)消息傳遞機(jī)制,用來實(shí)現(xiàn)系統(tǒng)的各個(gè)任務(wù)之間、用戶應(yīng)用程序的各個(gè)任務(wù)之間以及用戶應(yīng)用程序和系統(tǒng)的各個(gè)任務(wù)之間的通信。第6頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三6系統(tǒng)任務(wù)

4、系統(tǒng)任務(wù)主要包括液晶顯示屏(LCD)的刷新任務(wù)、系統(tǒng)鍵盤掃描任務(wù)。這兩個(gè)任務(wù)是操作系統(tǒng)的基本任務(wù),隨著操作系統(tǒng)的啟動而運(yùn)行。7用戶應(yīng)用程序用戶的應(yīng)用程序建立在系統(tǒng)的主任務(wù)(Main_Task)基礎(chǔ)之上。用戶應(yīng)用程序主要通過調(diào)用系統(tǒng)的API函數(shù)對系統(tǒng)進(jìn)行操作,完成用戶的要求。在用戶的應(yīng)用程序中也可以創(chuàng)建用戶自己的任務(wù)。任務(wù)之間的協(xié)調(diào)主要依賴于系統(tǒng)的消息隊(duì)列。第7頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式文件系統(tǒng)第8頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三什么是文件系統(tǒng)(File System)文件系統(tǒng)的定義 處理文件的操作系統(tǒng)的部分稱為文件系統(tǒng).是操作系統(tǒng)

5、中統(tǒng)一管理信息資源的一種軟件,管理文件的存儲、檢索、更新,提供安全可靠的共享和保護(hù)手段,并且方便用戶使用文件系統(tǒng)的功能 文件的構(gòu)造、命名、存取、保護(hù)等。文件系統(tǒng)的存儲媒質(zhì) 磁盤(軟盤、硬盤)、光盤、FLASH(盤)、RAM、ROM、網(wǎng)絡(luò)甚至設(shè)備等第9頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三基于NAND FLASH的嵌入式文件系統(tǒng)第10頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FLASH讀寫的特點(diǎn)(1)必須以Page為單位進(jìn)行讀寫;(2)寫之前必須先擦除原有內(nèi)容;(3)擦除操作必須對Block進(jìn)行,即一次至少擦除一個(gè)Block的內(nèi)容 針對這種情況,將Flash的

6、一個(gè)Page定為1個(gè)扇區(qū),將其1個(gè)Block,32個(gè)扇區(qū)定為一個(gè)簇,這樣,簇的容量剛好為5123216K,滿足FAT16對簇大小的要求 第11頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FLASH文件系統(tǒng)的要求(1)掉電安全:嵌入式系統(tǒng)的運(yùn)行環(huán)境一般比較惡劣,但同時(shí)又要求有較高的可靠性。這就對FLASH文件系統(tǒng)進(jìn)出了較高的要求,無論程序崩潰或系統(tǒng)掉電,都不能影響文件系統(tǒng)的一致性和完整性,文件系統(tǒng)的寫入、垃圾回收等操作對系統(tǒng)異常中止都非常敏感,極易造成數(shù)據(jù)丟失和數(shù)據(jù)垃圾,在文件系統(tǒng)設(shè)計(jì)和選用時(shí)應(yīng)考慮;(2)平均使用(wear-leveling):由于FLASH扇區(qū)的擦除次數(shù)有限制,

7、要求能夠均勻使用各扇區(qū),以延長FLASH的使用壽命;(3)高效垃圾回收(garbage collection):任何存儲器在分配使用一段時(shí)間后,都會出現(xiàn)空區(qū)和碎片數(shù)據(jù),為保證存儲空間的使用率。方法是先移動扇區(qū)數(shù)據(jù),再擦除整個(gè)扇區(qū);(4)低空間消耗(lov overhead):指文件系統(tǒng)管理結(jié)構(gòu)在FLASH存儲器上的空間消耗,該空間用于FS建立,而不能用于實(shí)際數(shù)據(jù)的存儲,可以提高有用數(shù)據(jù)的存儲空間第12頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FLASH文件系統(tǒng)的分類(1)集中管理文件系統(tǒng)特點(diǎn):存儲器空間的使用信息集中存放在存儲器的某個(gè)地方,存儲器的其它區(qū)域用于存放數(shù)據(jù),數(shù)據(jù)必須

8、依賴關(guān)鍵信息區(qū)才能被索引和使用缺點(diǎn):需要大量緩存空間,當(dāng)某扇區(qū)需要更新時(shí),先將扇區(qū)數(shù)據(jù)備份到RAM中,再進(jìn)行擦除操作,最后將修改后的備份寫入FLASH,難以保證掉電安全,不能均勻使用存儲器空間,特別是關(guān)鍵信息區(qū),對文件系統(tǒng)的使用都會改寫該區(qū),導(dǎo)致FLASH快速損壞;第13頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FLASH文件系統(tǒng)的分類(2)線性文件系統(tǒng)概述:每個(gè)文件相關(guān)的信息都連續(xù)存放在存儲器中,實(shí)現(xiàn)簡單,讀寫快速,文件系統(tǒng)的關(guān)鍵信息分布存放;優(yōu)點(diǎn):安全性好;能保證存儲器的平均使用,延長了FLASH的使用壽命;缺點(diǎn):對文件操作效率低,不易實(shí)現(xiàn)添加、插入、剪切等操作;第14頁,

9、共112頁,2022年,5月20日,3點(diǎn)12分,星期三FLASH文件系統(tǒng)的分類(3)日志文件系統(tǒng)概述:日志結(jié)構(gòu)的文件系統(tǒng)使用順序的、只增的日志作為磁盤上唯一的組織文件系統(tǒng)數(shù)據(jù)的結(jié)構(gòu) ,文件的描述可以仍采用傳統(tǒng)的索引組織方式。方法是在內(nèi)存中將幾次 FS的修改匯集成一個(gè)大的日志條目(被稱為段映像 ) ,然后動態(tài)分配磁盤空間并通過一次寫操作寫到磁盤上的一個(gè)連續(xù)的、固定大小的日志段 (Segment)中。并定時(shí)或當(dāng)系統(tǒng)發(fā)出同步寫請求時(shí)保證日志同步寫到磁盤上;優(yōu)點(diǎn):恢復(fù)快速不會產(chǎn)生丟失的簇、也不會因?yàn)榈綦姸茐奈募到y(tǒng)。第15頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三幾種開源的文件系統(tǒng)第

10、16頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三jffs/jffs2文件系統(tǒng)的優(yōu)缺點(diǎn)JFFS(Journaling Flash File System)概述:由瑞典Axis通信公司開發(fā)的文件系統(tǒng),主要針對NOR型Flash存儲器設(shè)計(jì),提供了掉電安全,平均使用等特性,是基于Linux,由于遵循GPL開放源代碼,易實(shí)現(xiàn)移植;日志文件系統(tǒng)提供了更好的崩潰、掉電安全保護(hù)jffs2支持對flash的均勻磨損在扇區(qū)級別上執(zhí)行閃存擦除寫讀操作功能較好文件系統(tǒng)接近滿時(shí),JFFS2 會大大放慢運(yùn)行速度垃圾收集第17頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Nand上yaffs文件系

11、統(tǒng)的優(yōu)勢專門為Nand flash設(shè)計(jì)的日志文件系統(tǒng)jffsjffs2不適合大容量的Nand flashjffs的日志通過jffs_node建立在RAM中,占用RAM空間:對于128MB的Nand大概需要4MB的空間來維護(hù)節(jié)點(diǎn)啟動的時(shí)候需要掃描日志節(jié)點(diǎn),不適合大容量的Nand flashFAT系統(tǒng)沒有日志第18頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FAT文件系統(tǒng)的發(fā)展DOS 1.0 (1981)DOS 3.0 (1984)Win 95 (1995)Win 95 Osr2 (1996)Win 98 (1998)Win 3.1 (1992)FAT12FAT16VFATFAT32

12、第19頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FAT12/FAT16/FAT32的比較FAT12FAT16FAT32Size of FAT entry12 bits16 bits32 bitsMax num of clusters4,08665,526268,435,456Cluster size used0.5 KB - 4 KB2 KB - 32 KB4 KB - 32 KB最大磁盤容量16,736,256(16M)2,147,123,200(2G)about 241(2T)第20頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FAT16文件系統(tǒng)基本結(jié)構(gòu)FAT

13、文件系統(tǒng)由下面四部分組成保留區(qū) Reserved region存放引導(dǎo)記錄,BIOS信息等FAT 區(qū)FAT信息列表 (12/16/32 bits)根目錄區(qū)目錄信息列表 (32 bytes)文件和目錄區(qū)存放簇信息reservedFAT(p)FAT(b)Root dirFile and directory 第21頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三保留區(qū) Reserved Region引導(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ì)類型 (硬盤,軟

14、盤,F(xiàn)LASH)reservedFAT(p)FAT(b)Root dirFile and directory 第22頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FAT 區(qū)通常有 FAT(P)(primary)和FAT(B)(backup)每一個(gè)簇都有一個(gè)對應(yīng)的FAT目錄Cluster 2Cluster 3Cluster n-1Cluster nFAT數(shù)據(jù)區(qū)reservedFAT(p)FAT(b)Root dirFile and directory 第23頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三FAT 鏈表 (FAT16)目錄樹第24頁,共112頁,2022年,5

15、月20日,3點(diǎn)12分,星期三典型FLASH文件系統(tǒng)的結(jié)構(gòu)系統(tǒng)紀(jì)錄(SR,System Record)文件分配表(FAT,File Allocation Table)文件登記表(FRT,File Register Table)數(shù)據(jù)區(qū)域 (Data Area)(1)系統(tǒng)記錄(SR,System Record) 存放媒質(zhì)信息和最重要的文件系統(tǒng)信息。媒質(zhì)信息諸如Flash存儲器的類型、容量,劃分成多少個(gè)區(qū)塊,每區(qū)塊包含多少個(gè)頁面等。文件系統(tǒng)信息包括版本信息、保留區(qū)塊的數(shù)目和位置、文件分配表和文件登記表所在的位置和大小、數(shù)據(jù)區(qū)域的位置和大小等。(2)文件分配表(FAT,F(xiàn)ile Allocation T

16、able) 存放著Flash存儲器上所有區(qū)塊的占用與空閑情況以及每個(gè)文件的存儲連接結(jié)構(gòu)。采用FAT16文件格式第25頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三(3)文件登記表(FRT,F(xiàn)ile Register Table)存放著Flash文件系統(tǒng)中每一個(gè)文件的文件代號、文件長度、文件屬性以及該文件的存儲鏈在文件分配表中的入口。(4)數(shù)據(jù)區(qū)域(Data Area)用于存放文件的數(shù)據(jù)內(nèi)容。本Flash文件系統(tǒng)中,數(shù)據(jù)分配的最小單位是Flash存儲器的一個(gè)基本擦除單元,即一個(gè)物理區(qū)塊(Block)。FLASH文件系統(tǒng)的結(jié)構(gòu)第26頁,共112頁,2022年,5月20日,3點(diǎn)12分,星

17、期三文件系統(tǒng)的實(shí)現(xiàn)FILE結(jié)構(gòu)體typedef structU8 BufferBLOCK_SIZE;/文件緩沖區(qū)U32 fileblock;/文件當(dāng)前的簇的位置U32 filemode;/打開文件的模式U32 filebufnum; /文件緩沖區(qū)中已經(jīng)讀取/寫入的字節(jié)數(shù)U32 fileCurpos;/讀寫的當(dāng)前位置U32 filesize;/文件的大小FILE;第27頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三與FLASH存儲器的接口函數(shù)塊擦除unsigned char Erase_Cluster(unsigned int cluster)頁寫入int WritePage(uns

18、igned int block,unsigned int page,unsigned char *pPage)頁讀出void ReadPage(unsigned int block,unsigned int page,unsigned char *pPage)第28頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三OpenOSFile的工作的流程圖第29頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三文件系統(tǒng)的相關(guān)函數(shù)始始化文件系統(tǒng) void initOSFile(char filename,U32 OpenMode)讀文件到緩沖區(qū) U32 ReadOSFile(FILE*

19、pfile,U8* ReadBuffer,U32 nReadbyte)把緩沖區(qū)內(nèi)容寫入文件 U32 WriteOSFile(FILE* pfile,U8* WriteBuffer,U32 nWritebyte)關(guān)閉文件,釋放緩沖區(qū) void CloseOSFile(FILE* Pfile)第30頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三ReadOSFile函數(shù)的程序流程圖 ReadOSFile函數(shù)的程序流程圖 第31頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三WriteOSFile函數(shù)的程序流程圖WriteOSFile函數(shù)的程序流程圖 第32頁,共112頁,202

20、2年,5月20日,3點(diǎn)12分,星期三CloseOSFile函數(shù)的程序流程圖CloseOSFile函數(shù)的程序流程圖 第33頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式GUI技術(shù)第34頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三GUI的概念GUI的定義 Graphics User Interface, 是指計(jì)算機(jī)與其使用者之間的圖形化對話接口。GUI的主要特征: Windows,采用窗口界面,每個(gè)窗口是用戶或系統(tǒng)的一個(gè)工作區(qū)域。一個(gè)屏幕上可以有多個(gè)窗口。 Icons,采用形象化的圖標(biāo)或圖符,易于操作者理解與操作。 Menu,采用菜單,可供用戶選擇的功能提示 Poi

21、nting Devices ,指鼠標(biāo)器、觸摸屏等,便于用戶直接對屏幕對象進(jìn)行操作。 第35頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式GUI的特點(diǎn)體積小功能強(qiáng);圖形算法簡潔、快速,占用系統(tǒng)資源少可靠性高;模塊結(jié)構(gòu),便于移植和定制第36頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式GUI的實(shí)現(xiàn)方法1)按照需求開發(fā)滿足自身特定需要的GUI系統(tǒng);2)將GUI作為一個(gè)軟件層從應(yīng)用程序中剝離,GUI的支持邏輯由應(yīng)用程序自己負(fù)責(zé);3)設(shè)計(jì)一個(gè)支持大多數(shù)常見的GUI對象的應(yīng)用編程接口庫,使其具有與其他通用開發(fā)工具相類似的調(diào)用方法(如Win32)的GUI系統(tǒng)第37頁,共1

22、12頁,2022年,5月20日,3點(diǎn)12分,星期三幾種典型的嵌入式GUICompact X-Window System:可擴(kuò)展性好、可移植性好,代碼尺寸大 Microwindows :開放源碼的嵌入式GUI軟件,可移植性好,圖形功能出色。OpenGUI :自由軟件。匯編實(shí)現(xiàn)的內(nèi)核,并利用MMX指令進(jìn)行了優(yōu)化,OpenGUI運(yùn)行速度非常快。支持 32 位處理器,可以在MS-DOS,QNX和Linux下運(yùn)行。主要用來在這些系統(tǒng)中開發(fā)圖形應(yīng)用程序和游戲 Qt/Embedded: QT 庫開發(fā)商Trolltech 推出的面向嵌入式系統(tǒng)的 QT 版本??梢浦残院?,價(jià)格較貴。 MiniGUI:自由軟件,面

23、向嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)的圖形用戶界面支持系統(tǒng)。它主要運(yùn)行于 Linux ,還可以運(yùn)行在任何一種具有 POSIX 線程支持的 POSIX 兼容系統(tǒng)上 第38頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Qt/Embedded可移植性好模塊化設(shè)計(jì)開放源代碼圖形界面漂亮第39頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三GTKFB不需 X Server 直接與 FrameBuffer 連接 API 與 Desktop 版相容。 采用 LGPL 授權(quán)方式 體積小 第40頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Microwindows跨平臺 不需 X Serv

24、er 采用 FLTK Toolkits 支持 TrueType 字型 第41頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Tiny X Server Tiny X Server 為 XFree86 Project 的一部分,體積比較大第42頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI支持 GB2312 與 BIG5 字集支持多種格式字體,例如:TrueType、Adobe Type1等。 GUI函數(shù) ( MoveTo、LineTo、FillBox、Rectangle、Circle、TextOut、DrawText .等 )第43頁,共112頁,2022年

25、,5月20日,3點(diǎn)12分,星期三MiniGUI面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級圖形用戶界面支持系統(tǒng)1999 年初以 GPL 條款發(fā)布了第一個(gè)版本,國際知名的自由軟件項(xiàng)目已廣泛應(yīng)用于數(shù)控系統(tǒng)、手持信息終端產(chǎn)品、彩票機(jī)、DVR 系統(tǒng)、金融終端、KTV 點(diǎn)播系統(tǒng)、POS 機(jī)等等已成為跨操作系統(tǒng)的圖形用戶界面支持系統(tǒng):可在Linux/uClinux、eCOS、uC/OS-II、VxWorks、pSOS 等操作系統(tǒng)上運(yùn)行已驗(yàn)證硬件平臺: Intel x86, ARM (ARM7 /AMR9 /StrongARM/xScale), PowerPC, MIPS, M68K, ColdFire第44頁,共112頁,

26、2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 和嵌入式操作系統(tǒng)的關(guān)系第45頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 的功能特色(1)完備的多窗口機(jī)制和消息傳遞機(jī)制 提供對話框、消息框和常用的控件類 菜單、滾動條、加速鍵、插入符、定時(shí)器等 GUI 元素完善的 GDI 圖形接口支持位圖、光標(biāo)和圖標(biāo)等Windows資源文件支持各種流行的圖像文件的支持,包括JPEG、GIF、PNG、BMP等 第46頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 的功能特色(2)支持 ISO8859-1ISO8859-15、GB2312、GBK、GB

27、18030、BIG5、EUCKR、EUCJP、Shift-JIS、UNICODE 等字符集非UNICODE 內(nèi)碼實(shí)現(xiàn),更加適合嵌入式系統(tǒng)支持點(diǎn)陣字體(包括 QPF),TrueType 以及Adobe Type1 等矢量字體漢字輸入法支持,包括內(nèi)碼、全拼、智能拼音、五筆、自然碼、手寫輸入法等支持高級多媒體界面設(shè)計(jì)的“皮膚”技術(shù)第47頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 的技術(shù)優(yōu)勢(1)輕型、占用資源少可在CPU運(yùn)算能力為 10 MIPS,僅有 4MB RAM 的系統(tǒng)上正常運(yùn)行整個(gè)系統(tǒng)的占用空間最少為 500KB高性能、高可靠性MiniGUI 體系結(jié)構(gòu)及優(yōu)化的圖

28、形接口,可確保最快的圖形繪制速度已在許多實(shí)際產(chǎn)品,尤其是工控系統(tǒng)中得到應(yīng)用,總裝機(jī)量達(dá) 5 萬臺以上第48頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 的技術(shù)優(yōu)勢(2)可配置可根據(jù)需求進(jìn)行配置,獲得滿足應(yīng)用需求的最小系統(tǒng)可伸縮性強(qiáng)可用于基于 DragonBall 的低端產(chǎn)品中亦可用于基于 StrongARM 或 xScale 的高端產(chǎn)品中第49頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI 的技術(shù)優(yōu)勢(3)跨操作系統(tǒng)支持理論上可支持任意多任務(wù)的嵌入式操作系統(tǒng)實(shí)際已支持 Linux/uClinux, eCos, uC/OS-II, VxWor

29、ks 等嵌入式操作系統(tǒng)在不同操作系統(tǒng)上的 MiniGUI,提供完全兼容的 API 接口第50頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI vs. Qt/Embedded典型系統(tǒng)配置:10 MIPS 以上8MB FLASH16MB RAM產(chǎn)品范圍:高、中、低端許可費(fèi):8RMB20RMB/副本本地技術(shù)支持及服務(wù)跨操作系統(tǒng)支持典型系統(tǒng)配置:200MIPS 以上16MB FLASH32MB RAM產(chǎn)品范圍:多用于高端產(chǎn)品中許可費(fèi):30RMB/副本非本地技術(shù)支持僅支持嵌入式 Linux第51頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI vs. Mi

30、croWindows典型系統(tǒng)配置:10 MIPS 以上8MB FLASH16MB RAM產(chǎn)品范圍:高、中、低端許可費(fèi):8RMB/副本本地技術(shù)支持及服務(wù)跨操作系統(tǒng)支持典型系統(tǒng)配置:30MIPS 以上16MB FLASH16MB RAM產(chǎn)品范圍:高、中端許可費(fèi):免費(fèi)無技術(shù)支持,無擔(dān)保僅支持 Linux/uClinux第52頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI在 uC/OS-II 上的移植(1)uC/OS-II 提供了基本的任務(wù)管理及同步機(jī)制缺少標(biāo)準(zhǔn) I/O 函數(shù)(printf 等)缺少內(nèi)存管理函數(shù)(malloc/free等)缺少 POSIX 標(biāo)準(zhǔn)兼容的線程接口第

31、53頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI在 uC/OS-II 上的移植(2)實(shí)現(xiàn)了 ANSI C 的標(biāo)準(zhǔn) I/O 函數(shù)實(shí)現(xiàn)了 ANSI C 的標(biāo)準(zhǔn)內(nèi)存管理函數(shù)實(shí)現(xiàn)了 POSIX 標(biāo)準(zhǔn)兼容的線程接口在 MiniGUI 的圖形抽象層及輸入抽象層之下實(shí)現(xiàn)對圖形和輸入的支持第54頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三MiniGUI的三種運(yùn)行模式MiniGUI-Threads。運(yùn)行在 MiniGUI-Threads 上的程序可以在不同的線程中建立多個(gè)窗口,但所有的窗口在一個(gè)進(jìn)程或者地址空間中運(yùn)行。這種運(yùn)行模式非常適合于大多數(shù)傳統(tǒng)意義上的嵌入式操作系

32、統(tǒng),比如 uC/OS-II、eCos、VxWorks、pSOS 等等。當(dāng)然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式運(yùn)行。MiniGUI-Lite。和 MiniGUI-Threads相反,MiniGUI-Lite 上的每個(gè)程序是單獨(dú)的進(jìn)程,每個(gè)進(jìn)程也可以建立多個(gè)窗口。MiniGUI-Lite 適合于具有完整 UNIX 特性的嵌入式操作系統(tǒng),比如嵌入式 Linux。MiniGUI-Standalone。這種運(yùn)行模式下,MiniGUI 可以以獨(dú)立進(jìn)程的方式運(yùn)行,既不需要多線程也不需要多進(jìn)程的支持,這種運(yùn)行模式適合功能單一的應(yīng)用場合。比如

33、在一些使用 uClinux 的嵌入式產(chǎn)品中,因?yàn)楦鞣N原因而缺少線程支持,這時(shí),就可以使用 MiniGUI-Standalone 來開發(fā)應(yīng)用軟件。第55頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三基于uC/OS的MiniGUI的應(yīng)用軟件流程第56頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式GUI的結(jié)構(gòu)模型嵌入式硬件平臺嵌入式操作系統(tǒng)窗口模型顯示模型用戶模型顯示模型:圖形在窗口上的基本顯示模式窗口模型:窗口如何顯示及改變用戶模型:構(gòu)造用戶界面的工具及如何在屏幕上 組織各種圖形對象,以及這些對象之間如何 交互的說明。 圖形用戶系統(tǒng)是由顯示模型接口程序、窗口模型接口程

34、序和用戶模型接口程序共同組成的。第57頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式GUI的體系結(jié)構(gòu)(1)API提供操作各種GUI對象(如窗口、菜單等)的應(yīng)用編程接口函數(shù);(2)Core提供核心的圖形操作功能,如消息機(jī)制、圖形設(shè)備接口、字體、窗口與桌面等的管理功能。(3)IAL和GAL指硬件設(shè)備輸入抽象層和圖形輸出抽象層,與底層輸入輸出設(shè)備接口,便于GUI掛接不同的輸入輸出設(shè)備,實(shí)現(xiàn)GUI系統(tǒng)良好的可移植性和通用性第58頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三核心圖形操作層的結(jié)構(gòu)第59頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三核心機(jī)制模塊 核

35、心機(jī)制模塊是嵌入式GUI中最重要的組成部分,包括消息機(jī)制和事件驅(qū)動機(jī)制、桌面操作、初始化操作、定時(shí)器操作等幾個(gè)子模塊,下面介紹幾個(gè)主要子模塊的功能:1) 消息機(jī)制和事件驅(qū)動機(jī)制子模塊:這個(gè)子模塊主要負(fù)責(zé)消息的接受、分發(fā)和路由等操作;2) 桌面子模塊:桌面是GUI系統(tǒng)中非常重要的一個(gè)部分,相當(dāng)于一個(gè)最底層窗口,其他主窗口都覆蓋其上,維護(hù)了GUI中很多總體全局的操作;3) 初始化子模塊:它是GUI系統(tǒng)中最基本的一個(gè)模塊,每次GUI運(yùn)行之初都要通過這個(gè)模塊的API函數(shù)對整個(gè)GUI環(huán)境參數(shù)進(jìn)行設(shè)定和初始化操作;4) 定時(shí)器子模塊:定時(shí)器是GUI中非常重要的組成部分,當(dāng)用戶需要定時(shí)的處理某項(xiàng)操作將會使用

36、該模塊,在系統(tǒng)中也有使用,如編輯框控件中光標(biāo)的閃爍,進(jìn)度條控件進(jìn)度塊的前進(jìn)等。第60頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三字符集與字體模塊矢量字體 基于矢量的的字體,稱之為可縮放的字體,輪廓字體,或矢量字體。由于這些字體在存儲時(shí)亦只存儲了其輪廓,因此,在不同的縮放大小下依然能保持美觀而不會出現(xiàn)“鋸齒”。這點(diǎn)是很適合其完整地在Web上傳輸。一般說來,Logo、線形藝術(shù)作品、圖表、動畫、抽象藝術(shù)作品等凡較容易定義顏色區(qū)域的圖形,用矢量圖都能產(chǎn)生很好的效果。計(jì)算機(jī)是以處理數(shù)字為基礎(chǔ),如果要處理文字就需要規(guī)定一個(gè)編碼系統(tǒng)用不同的數(shù)字來表示相應(yīng)的字符。我們較為熟悉的有GB、GBK、B

37、IG5、ASCII等等。由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常相互沖突。事實(shí)上,兩種編碼可能使用相同的數(shù)字代表兩個(gè)不同的字符;或者使用不同的數(shù)字代表相同的字符。在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針。其編碼容量可涵蓋世界上幾乎所有的語言,不僅包括拉丁語,希臘語,斯拉夫語,希伯來語,阿拉伯語,亞美尼亞語,還包括中文,日文和韓文這樣的象形文字,以及平假名,片假名,孟加拉語,泰米爾語,泰國語,老撾語等。目前還有大約8000個(gè)代碼指針未用,可供擴(kuò)展。第61頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三圖形設(shè)備接口圖形設(shè)備接口(

38、Graphics Device Interface,GDI)象GUI圖形操作的中間件,主要功能是支持與設(shè)備無關(guān)的圖形操作,GDI將上層應(yīng)用和不同輸出設(shè)備的特性隔離開來,使編制的上層應(yīng)用能夠毫無困難地在任意一種圖形輸出設(shè)備上運(yùn)行。它向上層應(yīng)用(最終用戶或者系統(tǒng)其他上層組件)提供了一些基本的服務(wù):位圖(bitmap)、文本(text)、一般繪圖(Gen Drawing)等第62頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三控件一般地,GUI系統(tǒng)都會預(yù)先定義一些控件類,當(dāng)利用某個(gè)控件類創(chuàng)建控件之后,所有屬于這個(gè)控件類的控件均會具有相同的行為和顯示。利用這些技術(shù),可以確保一致的人機(jī)操作界面

39、,而程序員可以像搭積木一樣地組建圖形用戶界面。嵌入式GUI系統(tǒng)使用了控件類和控件的概念,可以方便地對已有控件進(jìn)行重載,使其擁有一些特殊效果。如需要建立一個(gè)只允許輸入數(shù)字的編輯框時(shí),可以通過重載已有編輯框而實(shí)現(xiàn),而不需要重新編寫一個(gè)新的控件類。第63頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三常用GUI函數(shù)簡介在多任務(wù)操作系統(tǒng)中,繪圖設(shè)備上下文(DC)是繪圖的關(guān)鍵。繪圖設(shè)備上下文(DC)保存了每一個(gè)繪圖對象的相關(guān)參數(shù)(比如:繪圖畫筆的寬度、繪圖的原點(diǎn)坐標(biāo)等)。在多任務(wù)操作系統(tǒng)中,通過繪圖設(shè)備上下文(DC)來繪圖,可以保證在不同的任務(wù)繪圖的參數(shù)是相互獨(dú)立的,不會互相影響。 第64頁,

40、共112頁,2022年,5月20日,3點(diǎn)12分,星期三DC的定義typedef structint DrawPointx;int DrawPointy; /繪圖所使用的坐標(biāo)點(diǎn)int PenWidth; /畫筆寬度U32 PenMode; /畫筆模式U32 PenColor; /畫筆的顏色int DrawOrgx; /繪圖的坐標(biāo)原點(diǎn)位置int DrawOrgy;int DrawRangex; /繪圖的區(qū)域范圍int DrawRangey;U8 bUpdataBuffer; /是否更新后臺緩沖區(qū)U32 Fontcolor; /字符顏色DC,*PDC;第65頁,共112頁,2022年,5月20日,3

41、點(diǎn)12分,星期三 DC的使用第66頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三DC創(chuàng)建PDC pdc;pdc=CreateDC();第67頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三 典型的繪圖函數(shù)(a)void initOSDC(); PDC CreateDC(); void DestoryDC(PDC pdc); void MoveTo(PDC pdc, int x, int y); void LineTo(PDC pdc, int x, int y); void DrawRectFrame(PDC pdc, int left,int top ,int righ

42、t, int bottom); void Circle(PDC pdc, int x0, int y0, int r); 第68頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三典型的繪圖函數(shù)(b)void SetDrawOrg(PDC pdc, int x,int y, int* oldx, int *oldy) 設(shè)置繪圖設(shè)備上下文(DC)的原點(diǎn) 第69頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三典型的繪圖函數(shù)(c)void SetDrawRange(PDC pdc, int x,int y, int* oldx, int *oldy) 設(shè)置繪圖設(shè)備上下文(DC)的繪圖

43、范圍 x,y:設(shè)定的橫向、縱向繪圖的范圍,如果x(或者y)為1,則表示x(或者y)方向的比例隨著y(或者x)方向的范圍按比例縮放。如果參數(shù)為-1,表示方向相反 第70頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三DC設(shè)置舉例PDC pdc;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,垂直范圍按照液

44、晶屏實(shí)際的橫縱比例縮放。 第71頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三DC設(shè)置圖例第72頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三基于Unicode的字庫 什么是Unicode使用Unicode的優(yōu)點(diǎn) 字符的存儲方式編寫Unicode的程序 Unicode字模的提取Unicode字庫的顯示及相關(guān)函數(shù) 第73頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三什么是UnicodeUnicode 是 統(tǒng)一編碼的緊縮寫法世界上常用的編碼系統(tǒng)有數(shù)百種之多,但所有的這些編碼系統(tǒng),沒有哪一個(gè)能有足夠的字符,可以適用于多種語言文本由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常

45、相互沖突Unicode出現(xiàn)改變了這一切在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針 第74頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三使用Unicode的優(yōu)點(diǎn) 使用Unicode避免了亂碼的產(chǎn)生,使得國際間文本數(shù)據(jù)交換成為可能解決了多語言文本同平面共存的問題實(shí)現(xiàn)了軟件的全球化,避免了軟件產(chǎn)品在貫穿多個(gè)平臺、語言和國家時(shí)的重建 第75頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三字符的存儲方式 在圖形操作系統(tǒng)中,字符(包括:中文、英文)通常有2種存儲方式。 一種方式存儲的是字符的圖形點(diǎn)陣 另一種方式是存儲漢字的

46、矢量圖形 在嵌入式處理中,因?yàn)樘幚砥鞯男阅芎颓度胧较到y(tǒng)資源還不如PC機(jī),而且,嵌入式只是針對專一控制而應(yīng)用的系統(tǒng)?;旧?,沒有必要使用矢量字庫。為了進(jìn)一步加快處理速度,系統(tǒng)中保存有12x12、16x16和24x24三種分辨率的點(diǎn)陣字庫。第76頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三提取Unicode字庫Windows2000及其以后的系統(tǒng)版本,默認(rèn)的字符處理方式是UnicodeWindows平臺上,有大量豐富的字符資源Windows2000及其以后的系統(tǒng)版本中,提取Unicode字符點(diǎn)陣無疑成了最好的選擇。我們的Unicode字符的提取軟件是使用Microsoft Visua

47、l C+ 6.0編寫的。 第77頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Unicode字庫分配 本系統(tǒng)中編碼采用雙字節(jié)版本的Unicode格式收集了ASCII字符(0 x0000-0 x00ff)256個(gè)特殊圖形符號(0 x2600-0 x267f和0 x2700-0 x27bf)320個(gè)中文字符(0 x4e00-0 x9fff)20992個(gè)。 第78頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三Unicode字庫相關(guān)函數(shù) 轉(zhuǎn)換函數(shù)void Int2Unicode(int number, U16 str ); int Unicode2Int(U16 str );

48、void strChar2Unicode(U16 ch2 , const char ch1 ); 輸出函數(shù)void TextOut(PDC pdc, int x, int y, U16 *ch, U8 bunicode, U8 fnt); void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt) 第79頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三典型的控件 控件是可視化開發(fā)的基礎(chǔ)。對于開發(fā)應(yīng)用程序的用戶來說,控件是一個(gè)獨(dú)立的組件,它有著自己的顯示方式,自己的動態(tài)內(nèi)存管理模式,甚至有的控件還

49、可以向系統(tǒng)發(fā)送自己的消息。用戶不需要掌握控件的內(nèi)部到底是如何工作的,用戶只需要通過控件提供的API函數(shù),改變控件相應(yīng)的屬性,從而改變控件的顯示方式??丶囊肟梢苑奖阌脩舻拈_發(fā),加速用戶應(yīng)用程序界面的編寫速度。為運(yùn)行在操作系統(tǒng)上的應(yīng)用程序的界面提供了統(tǒng)一的標(biāo)準(zhǔn),方便了使用。 第80頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三系統(tǒng)中的控件文本框控件列表框控件圖片框控件按鈕控件窗體第81頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三控件的使用流程第82頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三通用的系統(tǒng)控件 對一個(gè)通用的系統(tǒng)控件,包含了如下的數(shù)據(jù)結(jié)構(gòu):ty

50、pedef structU32 CtrlType;/控件的類型U32 CtrlID;/控件的IDstructRECT ListCtrlRect;/控件的位置和大小U32 FontSize;/控件的字符大小U32 style;/控件的的邊框風(fēng)格U8 bVisible;/是否可見OS_Ctrl;第83頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式程序優(yōu)化技術(shù)第84頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式軟件的要求功能性要求:滿足系統(tǒng)所要求的功能;時(shí)限性要求:滿足系統(tǒng)的實(shí)時(shí)性要求;存貯器要求:適應(yīng)系統(tǒng)內(nèi)存總量要求;功耗要求:滿足系統(tǒng)能耗的要求;第85頁,共1

51、12頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式編程語言的選擇高級語言:C、C+、JAVA、Ada等;匯編語言:硬件體系結(jié)構(gòu)相關(guān);第86頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三程序的編譯執(zhí)行過程第87頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三嵌入式C編譯環(huán)境 嵌入式C交叉編譯環(huán)境一般都包括編譯器、匯編器和鏈接器。匯編器的任務(wù)是將符號級的匯編語言翻譯成稱為目標(biāo)代碼的指令位級表示;鏈接器是用來將不同的模塊(編譯或匯編過的文件)鏈接成目標(biāo)文件;定位器則允許將代碼和數(shù)據(jù)放置在目標(biāo)處理器的指定內(nèi)存空間 第88頁,共112頁,2022年,5月20日,3點(diǎn)12分,星

52、期三匯編程序匯編完成匯編語言到二進(jìn)制代碼的轉(zhuǎn)換;標(biāo)記處理方法:第一次掃描代碼以決定每個(gè)標(biāo)記的地址;第二次用第一次中的標(biāo)記值匯編指令,產(chǎn)生二進(jìn)制代碼;第89頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三符號表 ADD r0,r1,r2Label1 ADD r3,r4,r5 CMP r0,r3Label2 SUB r5,r6,r7assembly codeLabel1 0 x8Label2 0 x10symbol table第90頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯過程高級編程語言語法分析、生成符號表和語義分析獨(dú)立于機(jī)器的優(yōu)化指令級優(yōu)化和代碼生成匯編代碼第91

53、頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三ARM開發(fā)環(huán)境包含的C/C+編譯器第92頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯=翻譯+優(yōu)化編譯結(jié)合了翻譯和優(yōu)化兩個(gè)環(huán)節(jié)翻譯是將高級語言翻譯為低級指令形式(或匯編語言形式)優(yōu)化一方面產(chǎn)生更好的指令順序,另一方面從整體上考慮程序效率編譯過程中,高級語言被分析折分成語句和表達(dá)式;第93頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯技術(shù)語句翻譯a*b + 5*(c-d)expressionDFG*-*+abcd5第94頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三2341算術(shù)表達(dá)式的代碼翻譯A

54、DR r4,aMOV r1,r4ADR r4,bMOV r2,r4MUL r3,r1,r2DFG*-*+abcd5ADR r4,cMOV r1,r4ADR r4,dMOV r5,r4SUB r6,r4,r5MUL r7,r6,#5ADD r8,r7,r3code第95頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三控制代碼的產(chǎn)生if (a+b 0)x = 5;elsex = 7;a+b0 x=5x=7第96頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三321控制代碼的翻譯ADR r5,aLDR r1,r5ADR r5,bLDR r2,bADD r3,r1,r2BLE la

55、bel3a+b0 x=5x=7LDR r3,#5ADR r5,xSTR r3,r5B stmtent label3 LDR r3,#7ADR r5,xSTR r3,r5stmtent .第97頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三過程鏈接過程一般指不返回值的結(jié)構(gòu);要求代碼:調(diào)用并返回;傳遞參數(shù)和結(jié)果.參數(shù)和結(jié)果是在堆棧中傳遞的.帶有幾個(gè)參數(shù)的過程可以使用寄存器.第98頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三過程堆棧proc1growthproc1(int a) proc2(5);proc2SPstack pointerFPframe pointer5acc

56、essed relative to SP第99頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯技術(shù)ARM過程調(diào)用標(biāo)準(zhǔn)(APCS) APCS,ARM 過程調(diào)用標(biāo)準(zhǔn)(ARM Procedure Call Standard),提供了緊湊的編寫例程的一種機(jī)制,定義的例程可以與其他例程交織在一起。最顯著的一點(diǎn)是對這些例程來自哪里沒有明確的限制。它們可以編譯自 C、 Pascal、也可以是用匯編語言寫成的。 APCS 定義了: r0-r3 pass parameters into procedure. Extra parameters are put on stack frame.r0 holds return value.r4-r7 hold register values.r11 is frame pointer, r13 is stack pointer.第100頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯技術(shù)數(shù)據(jù)結(jié)構(gòu) 編譯程序必須對相關(guān)數(shù)據(jù)結(jié)構(gòu)的引用翻譯成對原始存儲器的引用,通常需要在運(yùn)行時(shí)進(jìn)行地址計(jì)算;一維數(shù)組二維數(shù)組結(jié)構(gòu)體 A0A1Field1Field2A0,0A0,1A1,0A1,0第101頁,共112頁,2022年,5月20日,3點(diǎn)12分,星期三編譯技術(shù)表達(dá)式簡化1、A*B+A*CA*(B+C)2、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論