![C+在嵌入式系統(tǒng)中的運(yùn)用_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d1.gif)
![C+在嵌入式系統(tǒng)中的運(yùn)用_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d2.gif)
![C+在嵌入式系統(tǒng)中的運(yùn)用_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d3.gif)
![C+在嵌入式系統(tǒng)中的運(yùn)用_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d4.gif)
![C+在嵌入式系統(tǒng)中的運(yùn)用_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d/3c3eb49d-f46e-4a97-b1e9-69c3ad5dd77d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、可編輯ppt,1,C+技術(shù)大會(huì)C+在嵌入式系統(tǒng)中的運(yùn)用,何宗鍵 同濟(jì)大學(xué)軟件學(xué)院 嵌入式系統(tǒng)研究中心 2005 . 11,可編輯ppt,2,日程,從嵌入式系統(tǒng)談起 讓C+為嵌入式系統(tǒng)服務(wù) C+的應(yīng)用案例研究,可編輯ppt,3,Question?,C+ keyword : volatile,volatile UINT1 * ptr = (UINT1 *) 0 x1234; / Wait for register to become non-zero. while (*ptr = 0) ;/ pooling / Do something else.,可編輯ppt,4,嵌入式系統(tǒng),IEEE(國際電氣
2、和電子工程師協(xié)會(huì))的定義 Devices used to control ,monitor or assist the operation of equipment ,machinery or plants. 對定義的理解: 以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件是可裁剪的,適用于對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。,可編輯ppt,5,嵌入式系統(tǒng)的特點(diǎn),嵌入性:由于是嵌入到對象系統(tǒng)中,必須滿足對象系統(tǒng)的環(huán)境要求,如物理環(huán)境(小型)、電氣/氣氛環(huán)境(可靠)、成本(價(jià)廉)等要求。 專用性:軟、硬件的裁剪性;滿足對象要求的最小軟、硬件配置等。(歐洲:Dedicated
3、 System) 計(jì)算機(jī)系統(tǒng):嵌入式系統(tǒng)必須是能滿足對象系統(tǒng)控制要求的計(jì)算機(jī)系統(tǒng)。與上兩個(gè)特點(diǎn)相呼應(yīng),這樣的計(jì)算機(jī)必須配置有與對象系統(tǒng)相適應(yīng)的接口電路。,可編輯ppt,6,嵌入式體系結(jié)構(gòu),嵌入式操作系統(tǒng),嵌入式應(yīng)用程序,可編輯ppt,7,近年來嵌入式設(shè)備市場機(jī)會(huì),1.6 Billion units,可編輯ppt,8,嵌入式機(jī)遇,2004年4月 中國工程院院士 倪光南: 我國嵌入式應(yīng)用的規(guī)模排在世界第三。2002年,我國嵌入式軟件市場銷售額為118.56億元,占到了同年我國軟件總產(chǎn)值1100億元的10%,而今天已經(jīng)占到了軟件產(chǎn)業(yè)的40%,按2003年我國軟件市場實(shí)現(xiàn)銷售額399.6億元計(jì)算,約為
4、13.6億元。盡管如此,仍不容樂觀。全球嵌入式軟件市場在2002年時(shí)就超過了317億美元。伴隨著國內(nèi)信息家電、手機(jī)、汽車電子等行業(yè)需求的加劇,嵌入式軟件將扮演著越來越重要的角色。 傳統(tǒng)的IT設(shè)備應(yīng)該逐漸轉(zhuǎn)變?yōu)榍度朐O(shè)備,這是一個(gè)大趨勢。在這個(gè)大趨勢中,軟件的地位越來越重要。因此,嵌入式軟件在提升IT制造業(yè)的競爭力、優(yōu)化產(chǎn)業(yè)結(jié)構(gòu)的過程中起到了非常重要的作用,發(fā)展嵌入式軟件勢在必行。 我們在嵌入式軟件技術(shù)方面與國外的差距不大。因?yàn)榍度胧杰浖且詰?yīng)用為前提的,沒有壟斷的可能。誰掌握了應(yīng)用,誰就能做得更好。,可編輯ppt,9,硬件的發(fā)展,嵌入式微處理器 X86工控領(lǐng)域。發(fā)展方向:小型、低功耗 ARM速度
5、、功能擴(kuò)展 解決方案 手機(jī)、PDA、數(shù)碼相機(jī)、MP3、MP4、游戲機(jī)、DVD,可編輯ppt,10,嵌入式軟件開發(fā)人員,嵌入式領(lǐng)域,熟悉硬件技術(shù)。對軟件技術(shù)與工程不太了解,熟悉軟件工程思想與應(yīng)用程序開發(fā)。對硬件設(shè)計(jì),硬件原理不熟悉,可編輯ppt,11,嵌入式編程的一些特點(diǎn),資源受限 處理器速度:算法的效率 內(nèi)存少:所以必須非常注意內(nèi)存的泄漏 I/O及外設(shè) 手機(jī):顯示屏幕,沒有鼠標(biāo) 外設(shè)的多樣性,可編輯ppt,12,編程語言,嵌入式 系統(tǒng),Assembly Language,Java / .NET,C / C+,8-bit, 16-bit單片機(jī),J2ME, .NET CF,應(yīng)用范圍最廣泛,可編輯p
6、pt,13,Assembly Language,優(yōu)點(diǎn) 靈活,操作硬件 運(yùn)行高效,體積小 缺點(diǎn) 代碼冗長、復(fù)雜、容易出錯(cuò) 開發(fā)效率低 與硬件綁定 應(yīng)用領(lǐng)域 低端嵌入式系統(tǒng) 系統(tǒng)的Startup代碼 對運(yùn)行效率要求比較高的地方,可編輯ppt,14,Java / .NET / 腳本語言,優(yōu)點(diǎn) RAD開發(fā) 簡單易用 缺點(diǎn) 運(yùn)行效率低 消耗系統(tǒng)資源大 應(yīng)用領(lǐng)域 應(yīng)用程序開發(fā) 圖形界面 / 游戲開發(fā),可編輯ppt,15,C語言,Linux / UNIX世界的系統(tǒng)編程語言 已經(jīng)被廣泛應(yīng)用于嵌入式系統(tǒng)編程 越來越多的取代匯編語言,可編輯ppt,16,如何選擇,開發(fā)效率,運(yùn)行效率,匯編語言,虛擬機(jī) / 腳本語言
7、,可編輯ppt,17,ThenWhy C+?,可編輯ppt,18,Bjarne Stroustrup如是說,C+s emphasis on general features (notably classes) has been its main strength C+ will not be a “Windows language” or a “web language” or even an “embedded systems language.” It will be a general-purpose language that supports those applications a
8、reas using a common set of facilities.,可編輯ppt,19,C+包含的一些思想,Better C 抽象數(shù)據(jù)類型ADT 面向?qū)ο蟮乃枷?OOD OOP 范型編程 GP template,可編輯ppt,20,案例分析:失敗的手機(jī)項(xiàng)目,可編輯ppt,21,AndWhy NOT C+?,可編輯ppt,22,一些質(zhì)疑,From comp.lang.c+ all the system objects from applications to interrupt handlers are defined as C+ classes.,可編輯ppt,34,class Ba
9、se public: Base() m_pArr = new int1024; if ( ! m_pArr) / what should we do? int * m_pArr; ;,構(gòu)造函數(shù)沒有返回值,可編輯ppt,35,class Base public: Base(bool ,可編輯ppt,36,class Base public: Base(bool ,可編輯ppt,37,共識(shí):對象的構(gòu)造失敗的唯一方法是在構(gòu)造函數(shù)中拋出異常,可編輯ppt,38,但是,異常處理會(huì)顯著的增加代碼的體積。 統(tǒng)計(jì)數(shù)字:5% - 20% Symbian中的方案: 關(guān)閉編譯器的異常處理開關(guān) Symbian中構(gòu)造函
10、數(shù)失敗怎么辦?,可編輯ppt,39,Symbian 異常處理,TInt GetL(TInt aIndex) if(aIndex = KArraySize) User:Leave(KErrArgument); else return iArrayaIndex; / 使用這個(gè)函數(shù): TInt x, err; TRAP(err, x = GetL(5);) if(err != KErrNone) / 輸出錯(cuò)誤信息等等 ,int Get(int aIndex) if(aIndex = KArraySize) throw new Exception(); else return iArrayaIndex
11、; / 使用這個(gè)函數(shù): try x = GetL(5); catch(Exception e) /輸出錯(cuò)誤信息等等 ,可編輯ppt,40,清理?xiàng)leanup Stack,void FunL() HBufC * wbuf = HBufC:NewL(10); CleanupStack:PushL(wbuf); HBufC * wbuf2 = HBufC:NewL(20); CleanupStack:PushL(wbuf2); RFs fs; User:LeaveIfEror( fs.Connect(); CleanupClosePushL(fs); do_sth_maybe_leaveLLL()
12、; CleanupStack:PopAndDestroy(3); ,可編輯ppt,41,Efficient exception handling rules,Rule 1: Functions that can leave should have a letter L at the end of their names. void MyFunctionL() iMember = new (ELeave) CMember; iValue = AnotherFunctionL(); User:LeaveIfError(iSession.Connect(); Rule 2: While alloca
13、ting memory on the heap, if the pointer is an automatic variable, it should be pushed on the cleanup stack. CObject* object = CObject:NewL(); CleanupStack:PushL(object); object-LeavingFunctionL(); CleanupStack:PopAndDestroy(object);,可編輯ppt,42,Efficient exception handling rules: Continued,Rule 3: All
14、 the codes that might fail, should be taken out of the constructor, and put into a constructL() function. This will be called after the constructor has completed. This is two-phase construction. / Phase #1 MyObject:MyObject() / Phase #2 void MyObject:ConstructL() MyMemberData* data = new (ELeave) My
15、MemberData(); / Put both phases together in one function. MyObject* MyObject:NewL() MyObject * self = new (ELeave) MyObject(); CleanupStack:PushL(self); self-ConstructL(); CleanupStack:Pop(self); return self; ,可編輯ppt,43,圖形系統(tǒng),人機(jī)交互的發(fā)展:CUI - GUI - NUI(?) 包含的內(nèi)容:圖形,窗口,事件 嵌入式圖形系統(tǒng)必須有以下幾個(gè)特點(diǎn): 占用資源少 高性能 高可靠性
16、可配置,可編輯ppt,44,Windows CE的圖形系統(tǒng),桌面Windows USER32.dll,GDI32.dll的一個(gè)子集 使用Win32 API編程,可編輯ppt,45,/ 得到窗口DC HDC dc = GetDC(hWnd); / 創(chuàng)建紅色,虛線畫筆 HPEN hpen = CreatePen(PS_DASH, 1, RGB(255, 0, 0); / 設(shè)置DC的畫筆為新創(chuàng)建的畫筆,同時(shí)保留舊的畫筆句柄 HPEN hOld = (HPEN)SelectObject(dc, hpen); / 在窗口的DC上畫線 LineTo(dc, 100, 100); / 把DC的畫筆屬性重新設(shè)
17、置為舊的畫筆 SelectObject(dc, hOld); / 刪除畫筆 DeleteObject(hpen); / 釋放窗口DC ReleaseDC(hWnd, dc);,可編輯ppt,46,/ 得到窗口DC HDC dc = GetDC(hWnd); / 創(chuàng)建紅色,虛線畫筆 HPEN hpen = CreatePen(PS_DASH, 1, RGB(255, 0, 0); / 在窗口的DC上畫線 LineTo(dc, 100, 100);,HDC GetDC( HWND hWnd) CWindow* This = (CWindow*)hWnd; This-GetDC(); CWindow
18、:GetDC() return this-m_hDC; ,可編輯ppt,47,/ 得到窗口DC HDC dc = GetDC(hWnd); / 創(chuàng)建紅色,虛線畫筆 HPEN hpen = CreatePen(PS_DASH, 1, RGB(255, 0, 0); / 在窗口的DC上畫線 LineTo(dc, 100, 100);,HPEN CreatePen() CPen * pRet = new CPen(); if (pRet) return (HPEN)pRet; ,可編輯ppt,48,/ 得到窗口DC HDC dc = GetDC(hWnd); / 創(chuàng)建紅色,虛線畫筆 HPEN hpe
19、n = CreatePen(PS_DASH, 1, RGB(255, 0, 0); / 在窗口的DC上畫線 LineTo(dc, 100, 100);,LineTo(HDC, int, int) DC * pDC = (DC *)HDC; pDC-LineTo(); DC:LineTo() / perform drawing task ,可編輯ppt,49,GDI Object Model,可編輯ppt,50,Open source project supported by convergence Germany Licensed under GNU GPL Provides graphic
20、API set and integrated window system Works on a frame buffer device and provides the mechanism to use the hardware acceleration effectively. /,可編輯ppt,51,Architecture,DirectFB consists of the followings: Core API Module Generic GFX Driver GFX Drivers for Specific Hardware To bri
21、ng out the best performance on a specific graphics hardware GFX Drivers for the hardware should be written. Generic GFX Driver checks whether the hardware acceleration by a GFX driver is available If yes, it handovers to the GFX driver If not it uses software rendering engine,可編輯ppt,52,IDirectFB *df
22、b = NULL; IDirectFBSurface *primary = NULL; int screen_width = 0, screen_height = 0; int main (int argc, char *argv) / A surface description is needed to create a surface. DFBSurfaceDescription dsc; / Initialize DirectFB passing argc and argv DirectFBInit (,可編輯ppt,53,/ go fullscreen dfb-SetCooperativeLevel (dfb, DFSCL_FULLSCREEN); / create primary surface dsc.flags = DSDESC_CAPS; dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING; dfb-CreateSurface( dfb, ,可編輯ppt,54,DirectFB Interface,#define DECLARE_INTERFACE( IFACE ) typedef struct _#IFACE IFACE; #define DEFINE_INTERFACE( IFA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《家居裝飾物流配送合同》
- 親子樂園主題裝修設(shè)計(jì)合同
- IT項(xiàng)目規(guī)劃與實(shí)施指南
- 企業(yè)法律合規(guī)風(fēng)險(xiǎn)防范指南
- 淘寶代理合同協(xié)議書
- 三農(nóng)村特色產(chǎn)業(yè)培育手冊
- 股份制企業(yè)的合作與管理文書
- 房地產(chǎn)開發(fā)合同標(biāo)準(zhǔn)協(xié)議
- 醫(yī)療設(shè)備智能制造與管理平臺(tái)開發(fā)
- 企業(yè)人力資源數(shù)字化管理與服務(wù)支持平臺(tái)方案設(shè)計(jì)
- 裝修工程延期協(xié)議
- 2025-2030全球21700圓柱形鋰離子電池行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2025年教科版小學(xué)科學(xué)三年級下冊科學(xué)教學(xué)計(jì)劃
- 2025年云南中煙工業(yè)限責(zé)任公司招聘24人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025云南昆明空港投資開發(fā)集團(tuán)招聘7人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《大健康解讀》課件
- 2024-2025學(xué)年成都市樹德東馬棚七年級上英語期末考試題(含答案)
- 2025年度交通運(yùn)輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年04月北京中信銀行北京分行社會(huì)招考(429)筆試歷年參考題庫附帶答案詳解
- 專項(xiàng)債券培訓(xùn)課件
- 中央企業(yè)人工智能應(yīng)用場景案例白皮書(2024年版)-中央企業(yè)人工智能協(xié)同創(chuàng)新平臺(tái)
評論
0/150
提交評論