第一篇:嵌入式論文
信息工程學(xué)院
課程設(shè)計(jì)報(bào)告書
專 業(yè): 電子信息科學(xué)與技術(shù) 班 級(jí): 0312412 學(xué) 號(hào): 031241217 學(xué)生姓名: 肖文洲 指導(dǎo)教師: 劉三軍
計(jì)算機(jī)專業(yè)嵌入式系統(tǒng)課程的研究與實(shí)踐
【摘 要】隨著電子技術(shù)的發(fā)展,嵌入式技術(shù)成為當(dāng)今信息技術(shù)發(fā)展的主流技術(shù)。嵌入式技術(shù)作為高校計(jì)算機(jī)專業(yè)的一個(gè)新方向已被許多學(xué)校采用。本文通過(guò)對(duì)嵌入式技術(shù)的分析,提出了嵌入式系統(tǒng)課程體系建設(shè)的基本方法,包括專業(yè)培養(yǎng)計(jì)劃、嵌入式系統(tǒng)教學(xué)實(shí)踐平臺(tái)建設(shè)以及嵌入式系統(tǒng)教學(xué)模式與教學(xué)方法創(chuàng)新等?!娟P(guān)鍵詞】嵌入式技術(shù);研究與實(shí)踐;計(jì)算機(jī)專業(yè)
隨著電子技術(shù)和信息技術(shù)的快速發(fā)展及嵌入式硬件技術(shù)與軟件技術(shù)的不斷成熟,嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,如智能家電、手機(jī)、汽車電子、網(wǎng)絡(luò)通信及電子娛樂產(chǎn)品等,隨之而來(lái)的是社會(huì)對(duì)嵌入式產(chǎn)品開發(fā)人才的需求也越來(lái)越多。因此,許多高校都開設(shè)了嵌入式系統(tǒng)開發(fā)方面的系列課程。由于嵌入式系統(tǒng)課程涉及的知識(shí)面寬、實(shí)踐性強(qiáng),對(duì)實(shí)驗(yàn)教學(xué)的要求較高,包括實(shí)驗(yàn)教師、硬件配置、實(shí)驗(yàn)項(xiàng)目的設(shè)置等。因此,作為對(duì)新技術(shù)研究和探索最活躍的群體,高等院校如何接受嵌入式技術(shù)帶來(lái)的挑戰(zhàn),盡快開設(shè)嵌入式系統(tǒng)的相關(guān)理論與實(shí)驗(yàn)課程,并逐漸形成較規(guī)范的教學(xué)體系已成為一個(gè)重要的研究課題。
一、嵌入式系統(tǒng)教學(xué)的特點(diǎn)
設(shè)置嵌入式系統(tǒng)課程的目的是讓未來(lái)的軟硬件開發(fā)人員了解和掌握必要的嵌入式系統(tǒng)設(shè)計(jì)方法的概念、方法和工具。同時(shí)由于嵌入式系統(tǒng)對(duì)其他學(xué)科領(lǐng)域的滲透,其他相關(guān)專業(yè)的學(xué)生也有學(xué)習(xí)該課程的需求與必要。如其他電子、自動(dòng)化專業(yè)都可開設(shè)相應(yīng)的選修課程,在某種程度上可以提升畢業(yè)學(xué)生的競(jìng)爭(zhēng)力、就業(yè)率。嵌入式系統(tǒng)課程的教學(xué)內(nèi)容應(yīng)包括嵌入式系統(tǒng)體系結(jié)構(gòu)、硬件構(gòu)架、軟件編程及外圍設(shè)備接口和驅(qū)動(dòng)等,注重培養(yǎng)學(xué)生的設(shè)計(jì)能力和軟件開發(fā)能力;盡量反映該領(lǐng)域近年來(lái)最新的理論與技術(shù),使學(xué)生了解學(xué)科的最新發(fā)展。嵌入式系統(tǒng)課程的特點(diǎn)是涉及知識(shí)面廣、綜合性強(qiáng)、實(shí)踐性強(qiáng),并且學(xué)科發(fā)展快,因而學(xué)習(xí)難度大,難以形成一個(gè)簡(jiǎn)單明確的知識(shí)體系。同時(shí)該課程講授難度很大,它要求教師不僅具備一般的計(jì)算機(jī)系統(tǒng)的軟硬件知識(shí),而且需要真正從事過(guò)嵌入式系統(tǒng)的開發(fā)實(shí)踐,才能對(duì)嵌入式系統(tǒng)中的實(shí)時(shí)性等抽象概念和系統(tǒng)調(diào)試過(guò)程有感性認(rèn)識(shí)。嵌入式系統(tǒng)教學(xué)主要有以下三個(gè)特點(diǎn):(1)基礎(chǔ)性。嵌入式系統(tǒng)技術(shù)涉及多個(gè)專業(yè),如計(jì)算機(jī)工程、軟件工程、工業(yè)自動(dòng)控制、機(jī)電工程、精密儀器和電子工程等,嵌入式技術(shù)與各個(gè)專業(yè)相互滲透融合,將逐漸形成新的學(xué)科研究方向,因此,嵌入式系統(tǒng)可作為上述各專業(yè)的基礎(chǔ)平臺(tái)課,以強(qiáng)化專業(yè)基礎(chǔ)知識(shí)。(2)綜合性。嵌入式系統(tǒng)是軟件和硬件設(shè)計(jì)的完美結(jié)合。它涉及電子信息、計(jì)算機(jī)、自動(dòng)控制等諸多專業(yè)相關(guān)課程的內(nèi)容,如語(yǔ)言、微機(jī)原理、單片機(jī)設(shè)計(jì)和操作系統(tǒng)等課程,有很強(qiáng)的綜合性,因此,可以有效地對(duì)學(xué)生進(jìn)行綜合能力的培養(yǎng)。(3)實(shí)踐性。嵌入式系統(tǒng)是理論與實(shí)踐結(jié)合密切的課程。實(shí)驗(yàn)是嵌入式系統(tǒng)課程的重要組成部分,缺乏實(shí)驗(yàn)的嵌入式系統(tǒng)課程學(xué)習(xí)是紙上談兵,因此,學(xué)生必須通過(guò)大量的實(shí)驗(yàn)和實(shí)踐環(huán)節(jié),來(lái)加深對(duì)嵌入式系統(tǒng)理論知識(shí)的理解。
二、適合計(jì)算機(jī)專業(yè)的嵌入式系統(tǒng)課程體系
嵌入式系統(tǒng)涉及電子、計(jì)算機(jī)、自動(dòng)控制等諸多專業(yè)知識(shí),專業(yè)性強(qiáng),包括了操作系統(tǒng)、微機(jī)原理、編程語(yǔ)言程序設(shè)計(jì)、計(jì)算機(jī)網(wǎng)絡(luò)和接口設(shè)計(jì)等內(nèi)容,是軟件、硬件的完美結(jié)合。因此,嵌入式系統(tǒng)的設(shè)計(jì)原理與技術(shù)不是一門課程所能講授的,需要建立一個(gè)課程體系。
嵌入式系統(tǒng)本身就是計(jì)算機(jī)系統(tǒng)。從廣義上講,目前計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的課程體系中所設(shè)置的許多專業(yè)基礎(chǔ)課,比如數(shù)字邏輯、C/C++程序設(shè)計(jì)、計(jì)算機(jī)網(wǎng)絡(luò)等,對(duì)嵌入式系統(tǒng)設(shè)計(jì)的學(xué)習(xí)者來(lái)說(shuō)同樣重要。在此,只從狹義的角度探討嵌入式系統(tǒng)的課程體系設(shè)置。
由于嵌入式系統(tǒng)涉及的知識(shí)面廣、應(yīng)用層面廣,所以應(yīng)針對(duì)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用的不同層面的需求,設(shè)置不同層面的課程體系。從狹義上劃分,嵌入式系統(tǒng)課程體系可以有以下三個(gè)不同的層面: 第一層面:針對(duì)將來(lái)只是應(yīng)用嵌入式系統(tǒng)硬件、軟件平臺(tái)來(lái)進(jìn)行二次開發(fā)的學(xué)生而言,應(yīng)側(cè)重培養(yǎng)其基于某個(gè)嵌入式系統(tǒng)平臺(tái)上(包括硬件平臺(tái)和軟件平臺(tái))進(jìn)行應(yīng)用系統(tǒng)設(shè)計(jì)和開發(fā)的能力。因此,針對(duì)這一層面的學(xué)生應(yīng)開設(shè)以下幾門主要課程: 《嵌入式實(shí)時(shí)操作系統(tǒng)》:選取一個(gè)具體的操作系統(tǒng)比如uCLinux為例,講授嵌入式操作系統(tǒng)的原理及應(yīng)用,重點(diǎn)介紹如何進(jìn)行任務(wù)劃分、如何編寫I/ O驅(qū)動(dòng)程序等?!肚度胧较到y(tǒng)設(shè)計(jì)》:重點(diǎn)介紹嵌入式系統(tǒng)設(shè)計(jì)步驟、方法,重點(diǎn)介紹嵌入式應(yīng)用軟件的開發(fā)技術(shù),以及嵌入式系統(tǒng)的測(cè)試技術(shù)及軟件優(yōu)化技術(shù)?!肚度胧骄W(wǎng)絡(luò)技術(shù)》:重點(diǎn)介紹基于嵌入式環(huán)境下的網(wǎng)絡(luò)通信技術(shù)及應(yīng)用,比如I2C總線技術(shù)、USB接口技術(shù)、嵌入式Web技術(shù)等,掌握相關(guān)的通信技術(shù)及接口編程。
第二層面:針對(duì)將來(lái)從事嵌入式系統(tǒng)平臺(tái)設(shè)計(jì)及合作開發(fā)的學(xué)生而言,除需要學(xué)習(xí)上述三門課程外,還必須開設(shè)《嵌入式系統(tǒng)結(jié)構(gòu)》課程。該課程重點(diǎn)介紹某個(gè)具有代表性的嵌入式CPU(如ARM系列)的系統(tǒng)結(jié)構(gòu)、匯編指令系統(tǒng)、中斷管理機(jī)制、常用外圍接口,使學(xué)生掌握嵌入式平臺(tái)設(shè)計(jì)的基礎(chǔ)知識(shí)。前提是學(xué)生具備數(shù)字邏輯方面的相關(guān)基礎(chǔ)知識(shí)。對(duì)于與第一個(gè)層面相同的課程,其授課中重點(diǎn)也不完全一樣。比如,《嵌入式操作系統(tǒng)》課程可以嵌入式Linux為主,重點(diǎn)介紹進(jìn)程調(diào)度、進(jìn)程間通信、內(nèi)存管理和I/O驅(qū)動(dòng)機(jī)制等,使學(xué)生具備進(jìn)行操作系統(tǒng)的裁剪、移植的基本能力。
第三層面:針對(duì)將來(lái)從事SOC(systemonChip)系統(tǒng)設(shè)計(jì)及開發(fā)的學(xué)生而言。主要課程有數(shù)字邏輯設(shè)計(jì)與應(yīng)用、電子電路原理與PCB技術(shù)、EDA技術(shù)(FPGA設(shè)計(jì)及應(yīng)用)、嵌入式系統(tǒng)結(jié)構(gòu)、嵌入式操作系統(tǒng)等,偏重于底層的設(shè)計(jì)。
通過(guò)以上分析可以看出,第一層至第三層分別是嵌入式系統(tǒng)中由軟到硬、由高層至底層的三個(gè)不同應(yīng)用層次,對(duì)應(yīng)不同的知識(shí)結(jié)構(gòu)需求。第一層偏軟,對(duì)底層的系統(tǒng)結(jié)構(gòu)及接口等要求較低,是在當(dāng)前比較容易實(shí)現(xiàn)的一個(gè)培養(yǎng)方向。在計(jì)算機(jī)本科專業(yè)中,軟件方向比較適合開展第一個(gè)層面的嵌入式系統(tǒng)教學(xué),應(yīng)用方向比較適合開展第二個(gè)層面的嵌入式系統(tǒng)的教學(xué)。根據(jù)以上分析,可以提出在計(jì)算機(jī)本科專業(yè)開設(shè)嵌入式系統(tǒng)方向需要參照的課程體 系:(1)專業(yè)基礎(chǔ)課:嵌入式系統(tǒng)概論、嵌入式系統(tǒng)原理與接口技術(shù)。(2)專業(yè)必修課:嵌入式操作系統(tǒng)、嵌入式系統(tǒng)應(yīng)用設(shè)計(jì)。
(3)專業(yè)選修課:嵌入式網(wǎng)絡(luò)技術(shù)、嵌入式系統(tǒng)測(cè)試技術(shù)、嵌入式工程應(yīng)用(即行業(yè)領(lǐng)域,如移動(dòng)通信技術(shù)與應(yīng)用、數(shù)字家庭網(wǎng)關(guān)技術(shù)等)、分布式嵌入式系統(tǒng)原理與設(shè)計(jì)等。
作為課程體系的一部分,實(shí)踐教學(xué)是嵌入式系統(tǒng)教學(xué)的關(guān)鍵。實(shí)踐教學(xué)設(shè)置的總體指導(dǎo)思想是:以培養(yǎng)創(chuàng)新動(dòng)手能力為核心,建立“系統(tǒng)的多級(jí)課程實(shí)踐”的實(shí)驗(yàn)體系,包含課程基礎(chǔ)實(shí)驗(yàn)、課程設(shè)計(jì)、綜合項(xiàng)目設(shè)計(jì);同時(shí),以“項(xiàng)目為中心”設(shè)計(jì)多層次的集中實(shí)踐題目,各層次的題目難度不等,以適合不同層次的學(xué)生[4]。
(1)每門課保證至少30%以上的上機(jī)或?qū)嶒?yàn)學(xué)時(shí),完成基礎(chǔ)實(shí)驗(yàn)項(xiàng)目。(2)至少有兩門課的課程設(shè)計(jì)(約兩周),如ARM匯編程序設(shè)計(jì)、操作系統(tǒng)移植實(shí)驗(yàn)、LCD/觸摸屏等接口實(shí)驗(yàn)等等。(3)至少完成一個(gè)綜合課程設(shè)計(jì)(課余時(shí)間+綜合實(shí)訓(xùn)時(shí)間共約40學(xué)時(shí)),類似于一個(gè)簡(jiǎn)單的工程項(xiàng)目,有設(shè)計(jì)、編程調(diào)試、性能測(cè)試等完整的步驟如手機(jī)游戲、校園導(dǎo)航、電子詞典、嵌入式WEB服務(wù)器等。
(4)校企合作,建立實(shí)習(xí)基地,聯(lián)合完成項(xiàng)目設(shè)計(jì)。
三、嵌入式系統(tǒng)課程體系在計(jì)算機(jī)專業(yè)的實(shí)踐
我們?cè)诜治隽似髽I(yè)對(duì)嵌入式人才需求的基礎(chǔ)上,提出了“在計(jì)算機(jī)本科專業(yè)培養(yǎng)嵌入式系統(tǒng)人才”的具體實(shí)施方案,并在2007級(jí)、2008級(jí)本科生中進(jìn)行了實(shí)踐。
該課程定位為實(shí)驗(yàn)研究型。目標(biāo)是通過(guò)嵌入式實(shí)驗(yàn)平臺(tái)學(xué)習(xí)構(gòu)建一個(gè)嵌入式系統(tǒng)的一般方法,熟悉一些常用的微處理器、存儲(chǔ)器、外設(shè)接口并學(xué)習(xí)軟硬件設(shè)計(jì)方法。掌握嵌入式操作系統(tǒng),定制內(nèi)核,編譯下載調(diào)試,編寫驅(qū)動(dòng)程序和應(yīng)用程序等,最后要求實(shí)現(xiàn)或部分實(shí)現(xiàn)一個(gè)具體嵌入式應(yīng)用的解決方案,并在硬件平臺(tái)上實(shí)現(xiàn)出來(lái)。
課程的主要內(nèi)容包括:(1)典型嵌入式系統(tǒng)的基本配置?硬/軟件綜合設(shè)計(jì)方法和流程?應(yīng)用范例?(2)硬件環(huán)境微處理器?存儲(chǔ)器?I/O 口?外設(shè)接口和驅(qū)動(dòng)?電源轉(zhuǎn)換和管理?總線?硬件調(diào)試?(3)嵌入式操作系統(tǒng)?操作系統(tǒng)內(nèi)核?Linux 和uCLinux?任務(wù)和任務(wù)調(diào)度?實(shí)時(shí) OS? GUI?API?文件系統(tǒng)等?(4)嵌入式網(wǎng)絡(luò)通過(guò)和計(jì)算機(jī)網(wǎng)絡(luò)結(jié)合, 開發(fā)基于網(wǎng)絡(luò)接的應(yīng)用?(5)軟件開發(fā)過(guò)程?交叉編譯?鏈接調(diào)試?下載?板級(jí)支持包?(6)驅(qū)動(dòng)程序?設(shè)備驅(qū)動(dòng)機(jī)制?按鍵和觸摸屏驅(qū)動(dòng)?網(wǎng)口驅(qū)動(dòng)?紅外?USB 驅(qū)動(dòng)?
實(shí)驗(yàn)是嵌入式系統(tǒng)教學(xué)的一個(gè)比較重要的環(huán)節(jié),實(shí)驗(yàn)大綱的制定是保證課程教學(xué)大綱目標(biāo)實(shí)現(xiàn)的一個(gè)重要環(huán)節(jié),制定出符合學(xué)生實(shí)際的實(shí)驗(yàn)大綱對(duì)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)培養(yǎng)目標(biāo)的實(shí)現(xiàn)至關(guān)重要。按難易程度的不同,實(shí)驗(yàn)內(nèi)容分為兩個(gè)層次:基本實(shí)驗(yàn)與綜合應(yīng)用實(shí)驗(yàn)?;緦?shí)驗(yàn)?zāi)康氖亲寣W(xué)生了解嵌入式軟件和硬件的一般開發(fā)環(huán)境與流程,進(jìn)行基本的嵌入式程序開發(fā)。綜合應(yīng)用實(shí)驗(yàn)?zāi)康氖亲寣W(xué)生綜合運(yùn)用前面所學(xué)到的知識(shí),按照指定的題目,自行設(shè)計(jì)開發(fā)嵌入式應(yīng)用程序?;緦?shí)驗(yàn)包括嵌入式軟件開發(fā)基礎(chǔ)實(shí)驗(yàn)、人機(jī)接口實(shí)驗(yàn)、通信與音頻接口實(shí)驗(yàn)、簡(jiǎn)單驅(qū)動(dòng)程序?qū)嶒?yàn)和嵌入式操作系統(tǒng)移植實(shí)驗(yàn)等。對(duì)于綜合應(yīng)用實(shí)驗(yàn),給出多個(gè)題目,選擇其一,學(xué)生也可以自選題目。設(shè)備選 擇 了 北 京 博 創(chuàng) 公 司 所 開 發(fā) 的PXA270教學(xué)實(shí)驗(yàn)平臺(tái),由于 PXA270 性能好,實(shí)驗(yàn)開發(fā)板的外圍設(shè)備又很豐富,使得實(shí)驗(yàn)選題更加靈活。
課程設(shè)計(jì)及畢業(yè)設(shè)計(jì)中對(duì)所學(xué)知識(shí)的運(yùn)用與提高在理論學(xué)習(xí)結(jié)束后,學(xué)生對(duì)嵌入式系統(tǒng)開發(fā)的各個(gè)環(huán)節(jié)有了較深入的理解與掌握。我們的方法是在課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)中深化學(xué)習(xí)。課程設(shè)計(jì)中,結(jié)合實(shí)驗(yàn)用開發(fā)平臺(tái),選擇了如MP3模擬控制系統(tǒng)等在實(shí)際中真正是嵌入式大行其道的應(yīng)用領(lǐng)域。在畢業(yè)設(shè)計(jì)中,我們布置了諸如“嵌入式智能控制器”,“嵌入式音頻控制器”,“內(nèi)核裁減”設(shè)計(jì)等工作,這些設(shè)計(jì)要求學(xué)生從軟硬件協(xié)同設(shè)計(jì)到軟硬件的測(cè)試方法等有深刻的掌握。還有組織學(xué)生參加大學(xué)生嵌入式設(shè)計(jì)競(jìng)賽等教學(xué)活動(dòng)。
四、結(jié)束語(yǔ)
隨著嵌入式應(yīng)用的迅猛發(fā)展,企業(yè)對(duì)嵌入式人才需求的缺口越來(lái)越大,越來(lái)越多的高校開始加強(qiáng)嵌入式系統(tǒng)的教學(xué)和科研,培養(yǎng)更多的適應(yīng)社會(huì)需求嵌入式系統(tǒng)人才。本文所設(shè)置的針對(duì)計(jì)算機(jī)本科專業(yè)的嵌入式系統(tǒng)課程體系,融合了企業(yè)的需求和計(jì)算機(jī)專業(yè)的特點(diǎn),符合實(shí)際應(yīng)用。針對(duì)兩年實(shí)踐中存在的問(wèn)題,在以后的教學(xué)中將不斷完善。
參考文獻(xiàn):
[1]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.[2]符意德.嵌入式系統(tǒng)教學(xué)及實(shí)驗(yàn)內(nèi)容的探討[J].軍工高
[3]賈志平.嵌入式系統(tǒng)原理與接口技術(shù)[M].北京:清華大學(xué)出版社,2004.[4]柳翔.嵌入式軟件工程人才培養(yǎng)的探索與實(shí)踐[J].計(jì)算機(jī)教育,2005,5.
第二篇:嵌入式課程論文
研究生課程論文
論文題目: 無(wú)線傳感網(wǎng)絡(luò)中的定位算法綜述
學(xué) 院: 信息科學(xué)技術(shù)學(xué)院 專 業(yè): 儀器儀表工程
班 級(jí): 81430 學(xué) 號(hào): 8143035 學(xué)生姓名:
沈天穎
二○一五 年 一 月 十 日
無(wú)線傳感器網(wǎng)絡(luò)(WSN)是一個(gè)多學(xué)科的研究領(lǐng)域,具有很廣泛的應(yīng)用前景,其中,WSN的定位是非常重要的研究方向。本課程論主要對(duì)WSN定位研究進(jìn)行了歸納和總結(jié)。將每種定位算法按照需不需要測(cè)距分為兩大類,而且在具體算法中討論了其以下幾個(gè)特征,包括:需要/不需要錨節(jié)點(diǎn)、集中式/分布式、固定/移動(dòng)等。
質(zhì)心定位算法
DV-Hop算法
MDS-MAP算法
分簇算法
改進(jìn)的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)定位算法
第三篇:嵌入式論文總結(jié)
嵌入式論文總結(jié)
所謂嵌入式系統(tǒng)(Embedded Systems).實(shí)際上是“嵌入式計(jì)算機(jī)系統(tǒng)”的簡(jiǎn)稱,它是相對(duì)于通用計(jì)算機(jī)系統(tǒng)而言的。在有些系統(tǒng)里也有計(jì)算機(jī),但是計(jì)算機(jī)是作為某個(gè)專用系統(tǒng)中的一個(gè)部件而存在的。像這樣“嵌入”到更大、專用的系統(tǒng)中的計(jì)算機(jī)系統(tǒng),稱之為“嵌入式計(jì)算機(jī)”、“嵌入式計(jì)算機(jī)系統(tǒng)”或“嵌入式系統(tǒng)”。
在日常生活中,早已存在許多嵌入式系統(tǒng)的應(yīng)用,如天天必用的移動(dòng)電話、帶在手腕上的電子表、烹調(diào)用的微波爐、辦公室里的打印機(jī)、汽車?yán)锏墓┯蛧娚淇刂葡到y(tǒng)和防抱死剎車系統(tǒng)(ABS).以及現(xiàn)在流行的個(gè)人數(shù)字助理(PDA)、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)等等,它們內(nèi)部都有一個(gè)中央處理器CPU。
嵌入式系統(tǒng)無(wú)處不在,從家庭中的洗衣機(jī)、電冰箱、小汽車,到辦公室中的遠(yuǎn)程會(huì)議系統(tǒng)等,都屬于可以使用嵌入式技術(shù)進(jìn)行開發(fā)和改造的產(chǎn)品。嵌入式系統(tǒng)本身是一個(gè)相對(duì)模糊的定義,一個(gè)手持的MP3和一個(gè)P(:104的微型工業(yè)控制計(jì)算機(jī)都可以認(rèn)為是嵌入式系統(tǒng)。根據(jù)英國(guó)電氣工程師協(xié)會(huì)(IEE)的定義:嵌入式系統(tǒng)是用來(lái)控制或監(jiān)視機(jī)器、裝置或工廠等大規(guī)模系統(tǒng)的設(shè)備。可以看出此定義是扶應(yīng)用上考慮的,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)電等附屬裝置。國(guó)內(nèi)對(duì)嵌入式系統(tǒng)的一般定義是:以應(yīng)用為中心.以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,從而能夠適應(yīng)實(shí)際應(yīng)用中對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
嵌入式系統(tǒng)在應(yīng)用數(shù)量上遠(yuǎn)遠(yuǎn)超過(guò)了各種通用計(jì)算機(jī)。一臺(tái)通用計(jì)算機(jī)的外部設(shè)備中就包含了5~10個(gè)嵌入式微處理器,鍵盤、硬盤、顯示器、Modem、網(wǎng)卡、聲卡、打印機(jī)、掃描儀、數(shù)碼相機(jī)、集線器等均是由嵌入式處理器進(jìn)行控制的。在制造工業(yè)、過(guò)程控制、通信、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費(fèi)類產(chǎn)品等方面,嵌入式系統(tǒng)都有用武之地。在大型嵌入式應(yīng)用系統(tǒng)中,為了使嵌入式開發(fā)更方便、快捷,需要具備一種穩(wěn)定、安全的軟件模塊集合,用來(lái)管理存儲(chǔ)器分配、中斷處理、任務(wù)間通信和定時(shí)器響應(yīng),以及提供多任務(wù)處理等,這樣的軟件模塊集合就是嵌入式操作系統(tǒng)。嵌入式操作系統(tǒng)的引入大大擴(kuò)展了嵌入式系的功能,方便了應(yīng)用軟件的設(shè)計(jì),但同時(shí)也占用了嵌入式系統(tǒng)的寶貴資源。一般在比較大型或多任務(wù)的應(yīng)用場(chǎng)合.才考慮使用嵌入式操作系統(tǒng)。
早期的嵌入式系統(tǒng)幾乎都用于控制,或多或少都有些實(shí)時(shí)要求,所以從前“嵌入式操作系統(tǒng)”實(shí)際上是“實(shí)時(shí)操作系統(tǒng)”的代名詞。近年來(lái),由于手持式計(jì)算機(jī)和掌上電腦等設(shè)備的出現(xiàn),也有了許多不帶實(shí)時(shí)要求的嵌入式系統(tǒng)。另一方面,由于C:PU速度的提高,一些原先被認(rèn)為是“實(shí)時(shí)”的反應(yīng)速度現(xiàn)在已經(jīng)很普遍了,以前需要在“實(shí)時(shí)操作系統(tǒng)”上才能實(shí)現(xiàn)的應(yīng)用,現(xiàn)在己不難在常規(guī)的操作系統(tǒng)上實(shí)現(xiàn)。在這樣的背景下,“嵌入式操作系統(tǒng)”和“實(shí)時(shí)操作系統(tǒng)”就成了不同的概念和名詞
嵌入式系統(tǒng)是應(yīng)用于特定環(huán)境下、面對(duì)專業(yè)領(lǐng)域的應(yīng)用系統(tǒng),不同于通用計(jì)算機(jī)系統(tǒng)的多樣化和適用性。它與通用計(jì)算機(jī)系統(tǒng)相比具有以下特點(diǎn):
(l)嵌入式系統(tǒng)通常是面向特定應(yīng)用的,一般都有實(shí)時(shí)要求。嵌入式處理器大多工作在為特定用戶群所設(shè)計(jì)的系統(tǒng)中,通常具有功耗低、體積小、集成度高、成本低等特點(diǎn),從而使嵌入式系統(tǒng)的設(shè)計(jì)趨于小型化、專業(yè)化,同時(shí)移動(dòng)能力大大增強(qiáng),與網(wǎng)絡(luò)的耦合也越來(lái)越緊密。
(2)嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體工藝、電子技術(shù)和通信網(wǎng)絡(luò)技術(shù)與各領(lǐng)域的具體應(yīng)用相結(jié)合的產(chǎn)物。這一特點(diǎn)決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。
(3)嵌入式系統(tǒng)與具體應(yīng)用有機(jī)地結(jié)合在一起,其升級(jí)換代也與具體產(chǎn)品同步進(jìn)行。因此,嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場(chǎng),一般具有較長(zhǎng)的生命周期。
(4)嵌入式系統(tǒng)的硬件和軟件都必須高效率地設(shè)計(jì),在保證穩(wěn)定、安全、可靠的基礎(chǔ)上,量體裁衣,去除冗余,力爭(zhēng)在同樣的硅片面積上實(shí)現(xiàn)更高的性能。這樣,才能最大限度地降低應(yīng)用成本。在縣體應(yīng)用中,對(duì)處理器的選擇決定了產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力。(5)嵌入式系統(tǒng)常常還有減小功耗的要求。這一方面是為了省電,因?yàn)榍度胧较到y(tǒng)往往以電池供電;另一方面是要減少發(fā)熱量,因?yàn)榍度胧较到y(tǒng)中常常沒有風(fēng)扇等排熱手段。
(6)可靠性與穩(wěn)定性對(duì)于嵌入式系統(tǒng)有著特別重要的意義,所以即使邏輯上的系統(tǒng)結(jié)構(gòu)相同,在物理組成上也會(huì)有所不同。由于對(duì)所用元器件(包括接插件、電源等等)的質(zhì)量和可靠性要求都比較高,所以元器件的平均無(wú)故障時(shí)間MTBF-(Mean Time Between F-ailure)成為關(guān)鍵性的參數(shù)。此外,環(huán)境溫度也是需要重點(diǎn)考慮的參數(shù)。
嵌入式系統(tǒng)以應(yīng)用為中心,強(qiáng)調(diào)體積和功能的可裁剪性,是以完成控制、監(jiān)視等功能為目標(biāo)的專用系統(tǒng)。在嵌入式應(yīng)用系統(tǒng)中.執(zhí)行任務(wù)的軟硬件都嵌入在實(shí)際的設(shè)備環(huán)境中,通過(guò)專門的I/()接口和外界交換信息。它們執(zhí)行的任務(wù)程序一般不由用戶編制。
嵌入式系統(tǒng)主要用于各種信號(hào)處理與控制,目前己在國(guó)防、國(guó)民經(jīng)濟(jì)及社會(huì)生活各領(lǐng)域普遍應(yīng)用操作系統(tǒng)OS(Operation Systems)是一組計(jì)算機(jī)程序的集合,用來(lái)有效地控制和管理計(jì)算機(jī)的硬件和軟件資源,即合理地對(duì)資源進(jìn)行調(diào)度,并為用戶提供方便的應(yīng)用接口。它為應(yīng)用ARM9嵌入式系統(tǒng)設(shè)支持軟件提供運(yùn)行環(huán)境,即為程序開發(fā)者提供功能強(qiáng)、使用方便的開發(fā)環(huán)境。
從資源管理的角度,操作系統(tǒng)主要包含如下功能。1.處理器管理
對(duì)處理器進(jìn)行分配,并對(duì)其運(yùn)行進(jìn)行有效的控制和管理。在多任務(wù)環(huán)境下,合理分配由任務(wù)共享的處理器,使CPU能滿足各程序運(yùn)行的需要,提高處理器的利用率,并能在恰當(dāng)?shù)臅r(shí)候收回分配給某任務(wù)的處理器。處理器的分配和運(yùn)行都是以進(jìn)程為基本單位進(jìn)行的,因此對(duì)處理器的管理可以歸結(jié)為對(duì)進(jìn)程的管理,包括進(jìn)程控制、進(jìn)程同步、進(jìn)程通信、作業(yè)調(diào)度和進(jìn)程調(diào)度等。2.存儲(chǔ)器管理
存儲(chǔ)器管理的主要任務(wù),是為多道程序的運(yùn)行提供良好的環(huán)境,包括內(nèi)存分配、內(nèi)存保護(hù)、地址映射、內(nèi)存擴(kuò)充等。例如,為每道程序分配必要的內(nèi)存空間,使它們各得其所,且不致因互相重疊而丟失信息;不因某道程序出現(xiàn)異常情況而破壞其他程序的運(yùn)行;方便用戶使用存儲(chǔ)器;提高存儲(chǔ)器的利用率;能從邏輯上來(lái)擴(kuò)充內(nèi)存等。3.設(shè)備管理
完成用戶提出的設(shè)備請(qǐng)求,為用戶分配l/()設(shè)備;提高C.PU和l/()的利用率;提高l/()速度.方便用戶使用l/()設(shè)備。設(shè)備管理包括緩沖管理、設(shè)備分配、設(shè)備處理、形成虛擬邏輯設(shè)備等。4.文件管理
在計(jì)算機(jī)中,大量的程序和毅據(jù)是以文件的形式存放的。文件管理的主要任務(wù)就是對(duì)系統(tǒng)文件和用戶文件進(jìn)行管理,方便用戶的使用,保證文件的安全性。文件管理包括對(duì)文件存儲(chǔ)空間的管理、目錄管理、文件的讀/寫管理以及文件的共享與保護(hù)等。
5.用戶接口
用戶與操作系統(tǒng)的接口是用戶能方便地使用操作系統(tǒng)的關(guān)鍵所在。用戶通常只需以命令形式和系統(tǒng)調(diào)用即程序接口形式與系統(tǒng)打交道。使用圖形用戶接口(GUI).可以將文字、圖形和圖像集成在一起,用非常容易識(shí)別的圖標(biāo)將系統(tǒng)的各種功能、應(yīng)用程序和文件直觀地表示出來(lái),用戶可以通過(guò)鼠標(biāo)來(lái)獲取操作系統(tǒng)的服務(wù)。
隨著l_inux的迅速發(fā)展,嵌入式Linux現(xiàn)在已經(jīng)有許多版本,包括強(qiáng)實(shí)時(shí)的嵌入式Linux(如新墨西哥工學(xué)院的RT-I_inux和堪薩斯大學(xué)的KURT-I_inux)和一般的嵌入式Linux(如riClinux和Pocket I。lnux等)。其中.RT-Iinux通過(guò)把通常的Iinux任務(wù)優(yōu)先級(jí)設(shè)為最低,而所有的實(shí)時(shí)任務(wù)的優(yōu)先級(jí)都高于它,以達(dá)到既兼容通常的I。Inux任務(wù)又保證強(qiáng)實(shí)時(shí)性能的目的。另一種常用的嵌入式Linux是riClinux.它是針對(duì)沒有MMU的處理器而設(shè)計(jì)的。它不能使用處理器的虛擬內(nèi)存管理技術(shù),對(duì)內(nèi)存的訪問(wèn)是直接的,所有程序中訪問(wèn)的地址都是實(shí)際的物理地址。它專為嵌入式系統(tǒng)做了許多小型化的工作。
嵌入式系統(tǒng)與通用計(jì)算機(jī)在以下幾個(gè)方面有比較明顯的差別: 1.人機(jī)交互界面
嵌入式系統(tǒng)和通用計(jì)算機(jī)之間的最大區(qū)別就在于人機(jī)交互界面。嵌入式系統(tǒng)可能根本就不存在鍵盤、顯示器等設(shè)備,它所完成的事情也可能只是監(jiān)視網(wǎng)絡(luò)情況或者傳感器的變化情況,并按照事先規(guī)定好的過(guò)程及時(shí)完成相應(yīng)的處理任務(wù)。2.有限的功能
嵌入式系統(tǒng)的功能在設(shè)計(jì)時(shí)已經(jīng)定制好,在開發(fā)完成投入使用之后就不再變化。系統(tǒng)將反復(fù)執(zhí)行這些預(yù)定好的任務(wù),而不像通用計(jì)算機(jī)那樣可以隨時(shí)運(yùn)行新任務(wù)。雖然嵌入式操作系統(tǒng)可以添加新的任務(wù),刪除舊的任務(wù),但這樣的變化對(duì)嵌入式系統(tǒng)而言是關(guān)鍵性變化,有可能會(huì)對(duì)整個(gè)系統(tǒng)行為產(chǎn)生影響。3.時(shí)間關(guān)鍵性和穩(wěn)定性
嵌入式系統(tǒng)可能要求實(shí)時(shí)響應(yīng),具有嚴(yán)格的時(shí)序性。同時(shí),嵌入式系統(tǒng)還要求有非??煽康姆€(wěn)定性。其工作環(huán)境可能非常惡劣,如高溫、高壓、低溫、潮濕等,這就要求在設(shè)計(jì)時(shí)考慮目標(biāo)系統(tǒng)的工作環(huán)境,合理選擇硬件和保護(hù)措施。軟件穩(wěn)定也是一個(gè)重要特征。軟件系統(tǒng)需要經(jīng)過(guò)反復(fù)測(cè)試,達(dá)到預(yù)先規(guī)定的要求才能真正投入使用。
嵌入式軟件的開發(fā)與傳統(tǒng)軟件的開發(fā)有許多共同點(diǎn),它繼承了許多傳統(tǒng)軟件的開發(fā)習(xí)慣。由于嵌入式軟件運(yùn)行于特定昀目標(biāo)應(yīng)用環(huán)境,而該目標(biāo)環(huán)境只針對(duì)特定的應(yīng)用領(lǐng)域,所以嵌入式軟件的功能比較專一,只完成預(yù)期要完成的功能。出于對(duì)系統(tǒng)成本方面的考慮,應(yīng)用系統(tǒng)的C:PU、存儲(chǔ)器、通信資源都恰到好處。嵌入式軟件的開發(fā)具有其自身的特點(diǎn):
在Iinux的發(fā)展歷程中.Unix和Minix扮演著十分重要的角色。1990年,芬蘭人Unus 'ror-valds在赫爾辛基大學(xué)接觸到Unix;但是當(dāng)時(shí)上機(jī)學(xué)習(xí)要排隊(duì)等候很長(zhǎng)時(shí)間,所以I。inus購(gòu)買了自己的PC機(jī),希望安裝一個(gè)類似的操作系統(tǒng)。由于Unix的內(nèi)核代碼不容易得到,所以他安裝了Minix。Minix是一個(gè)基于微內(nèi)核技術(shù)的類似于Unix的操作系統(tǒng),是Andrew Tanebaum教授利用業(yè)余時(shí)間開發(fā)的用于教學(xué)的操作系統(tǒng)。當(dāng)時(shí).Minix并不是完全免費(fèi)的,而且Andrew Tane-baum教授不允許別人為Minix再加入其他東西,目的是為了教學(xué)的簡(jiǎn)明扼要。
第四篇:嵌入式瀏覽器論文
嵌入式瀏覽器
摘要:近幾年,嵌入式市場(chǎng)迅速崛起,隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,瀏覽器成為了很多嵌入式系統(tǒng)必不可少的一部分。許多公司都投入到了嵌入式瀏覽器的研究和開發(fā)中。本文簡(jiǎn)要介紹嵌入式瀏覽器的的基本概念及其現(xiàn)狀和發(fā)展情況。
關(guān)鍵字:嵌入式系統(tǒng)、瀏覽器
1.嵌入式瀏覽器的概述 1.1嵌入式系統(tǒng)
所謂嵌入式系統(tǒng)就是指以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)非常的多樣化,不同的系統(tǒng)差別是非常大的。
它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)和用戶應(yīng)用程序等四個(gè)部分組成??梢詫?shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能,廣泛應(yīng)用于消費(fèi)電子和通信領(lǐng)域,是最具有時(shí)代特征的嵌入式產(chǎn)品是因特網(wǎng)上的信息家電。
1.2瀏覽器
瀏覽器是指可以顯示網(wǎng)頁(yè)服務(wù)器或者文件系統(tǒng)的HTML文件內(nèi)容,并讓用戶與這些文件交互的一種軟件。網(wǎng)頁(yè)瀏覽器主要通過(guò)HTTP協(xié)議與網(wǎng)頁(yè)服務(wù)器交互并獲取網(wǎng)頁(yè),這些網(wǎng)頁(yè)由URL指定,文件格式通常為HTML,并由MIME在HTTP協(xié)議中指明。一個(gè)網(wǎng)頁(yè)中可以包括多個(gè)文檔,每個(gè)文檔都是分別從服務(wù)器獲取的。大部分的瀏覽器本身支持除了HTML之外的廣泛的格式,例如JPEG、PNG、GIF等圖像格式,并且能夠擴(kuò)展支持眾多的插件。另外,許多瀏覽器還支持其他的URL類型及其相應(yīng)的協(xié)議,如FTP、Gopher、HTTPS(HTTP協(xié)議的加密版本)。HTTP內(nèi)容類型和URL協(xié)議規(guī)范允許網(wǎng)頁(yè)設(shè)計(jì)者在網(wǎng)頁(yè)中嵌入圖像、動(dòng)畫、視頻、聲音、流媒體等。常見的網(wǎng)頁(yè)瀏覽器包括微軟的Internet Explorer、Mozilla的Firefox、Apple的Safari、Google Chrome、GreenBrowser瀏覽器、Avant 瀏覽器、360安全瀏覽器等等。
1.3嵌入式瀏覽器
在當(dāng)今的信息社會(huì)里,網(wǎng)絡(luò)無(wú)處不在。嵌入式系統(tǒng)發(fā)展到一定階段后,網(wǎng)絡(luò)成為了系統(tǒng)中的重要組成部分,并且需求越來(lái)越大。針對(duì)嵌入式系統(tǒng)的瀏覽器應(yīng)運(yùn)而生。嵌入式瀏覽器從功能上、技術(shù)上來(lái)說(shuō),和桌面系統(tǒng)中使用的瀏覽器沒有什么大的區(qū)別。但由于它處于嵌入式的特殊環(huán)境中,擁有了一些自身的獨(dú)特之處。
嵌入式瀏覽器的發(fā)展依賴于嵌入式軟硬件技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展。在過(guò)去,嵌入式硬件的發(fā)展使得它與網(wǎng)絡(luò)技術(shù)的結(jié)合成為可能;在將來(lái),它的發(fā)展又會(huì)不斷減輕硬件限制帶給嵌入式瀏覽器的發(fā)展障礙。嵌入式瀏覽器和嵌入式操作系統(tǒng)的關(guān)系是非常密切的,甚至是不可分割的。嵌入式瀏覽器是嵌入式操作系統(tǒng)中最重要的應(yīng)用軟件,甚至可能成為唯一直接支持的應(yīng)用軟件。其它的應(yīng)用都可以通過(guò)Plug—In接口或直接用HTML、JavaScript及其擴(kuò)展語(yǔ)言來(lái)實(shí)現(xiàn)。網(wǎng)絡(luò)通信是嵌入式瀏覽器所依賴的最關(guān)鍵的技術(shù)之一。另外,網(wǎng)絡(luò)通信技術(shù)也帶動(dòng)了智能手機(jī)、機(jī)頂盒和其它嵌入式網(wǎng)絡(luò)終端的發(fā)展,從而極大的擴(kuò)展了嵌入式瀏覽器的應(yīng)用。
2.嵌入式瀏覽器的特點(diǎn)
嵌入式瀏覽器從功能上和核心技術(shù)上來(lái)說(shuō)和桌面瀏覽器很相似,但是其特殊的運(yùn)行環(huán)境決定了它在很多方面跟后者的不同。
(1)硬件要求低,占用空間小
嵌入式瀏覽器應(yīng)用于數(shù)字電視機(jī)項(xiàng)盒、掌上電腦、車載GPS等各種信息電器和便攜式網(wǎng)絡(luò)終端中。這些設(shè)備的處理器速度相對(duì)低很多,并且沒有浮點(diǎn)運(yùn)算器,因此,瀏覽器在運(yùn)行時(shí)不能太耗資源。另外,嵌入式設(shè)備的內(nèi)存很小并且無(wú)存儲(chǔ)量大的硬盤等設(shè)備,這就決定了嵌入式瀏覽器不可能有著桌面瀏覽器那樣龐大的體積。
(2)易于移植
嵌入式系統(tǒng)具有分散性、多樣性的特點(diǎn),進(jìn)行應(yīng)用開發(fā)時(shí)在芯片選擇、系統(tǒng)功能定義、顯示設(shè)備特性、內(nèi)存限制等方面會(huì)有許多不同的要求。所以,在現(xiàn)實(shí)中,沒有一種嵌入式瀏覽器可以直接滿足所有嵌入式平臺(tái)的要求。在商業(yè)應(yīng)用中,也不可能針對(duì)每一個(gè)平臺(tái)都去開發(fā)一款新的瀏覽器。因此,嵌入式瀏覽器接口定義清晰、平臺(tái)相關(guān)性小、容易移植顯得尤為重要。(3)模塊化、功能可定制
瀏覽器各個(gè)相對(duì)獨(dú)立的功能分開,各模塊之間通過(guò)接口相相互調(diào)用。這有利于軟件的可裁減性和定制性,并且為瀏覽器的調(diào)試、維護(hù)、局部?jī)?yōu)化和升級(jí)等提供了極大的便利。
(4)運(yùn)行穩(wěn)定,容錯(cuò)性好
嵌入式軟件一般發(fā)行量大,并且售出后維護(hù)困難,所以,必須確保良好的運(yùn)行穩(wěn)定性。3.嵌入式瀏覽器的現(xiàn)狀
綜觀目前國(guó)際上的嵌入式瀏覽器產(chǎn)品,己經(jīng)有一些成熟的商業(yè)化產(chǎn)品。而 大多基于開源代碼的嵌入式瀏覽器,則由于缺乏足夠的技術(shù)支持,一般都不夠成熟,實(shí)用化程度不高。不過(guò)目前隨著嵌入式瀏覽器越來(lái)越得到廣泛的應(yīng)用,己經(jīng)有許多的開源瀏覽器在不同平臺(tái)上得到了成功的移植和應(yīng)用。總的來(lái)說(shuō),主要有以下相關(guān)嵌入式瀏覽器:(1)Access Netfront NetFront是Internet設(shè)備最流行的嵌入式瀏覽器之一。自它1995年問(wèn)世以來(lái),已被用在了50多種不同的Internet設(shè)備中,包括:Internet電視、PDA、機(jī)頂盒、汽車導(dǎo)航系統(tǒng)、迷你電話、web/screen電話、視頻游戲控制臺(tái)等。NetFront在有限的空間里,有很高的運(yùn)行效率。它由許多的標(biāo)準(zhǔn)模塊組成,包括:web browser, Internet mail, PPP驅(qū)動(dòng)、TCP / IP模塊、及其他Internet訪問(wèn)模塊。通過(guò)添加可選模塊,可以擴(kuò)展NetFront的功能,包括:Java-V M、手寫識(shí)別模塊、SSL模塊、動(dòng)畫模塊、流視頻/音頻模塊等。NetFront的內(nèi)核小于220KB,它的模塊化和可升級(jí)的設(shè)計(jì),使得設(shè)備制造商可以只選擇特定需要的功能。這使得他們擁有了一個(gè)具有全部功能、且高性能的嵌入式瀏覽器系統(tǒng)。它只要2.OMB的RAM和LOMB的ROM。NetFront2.5完全支持HTML3.2、部分HTML4.0、Frames、JavaScript、Cookies、Web-printing、和多種語(yǔ)言。采用獨(dú)立的用戶界面層,設(shè)備制造商可以設(shè)計(jì)自己獨(dú)特的界面,使瀏覽器看起來(lái)像是專為他們的產(chǎn)品設(shè)計(jì)的。(2)ViewML ViewML(Viewable Markup Language)瀏覽器是第一個(gè)免費(fèi)的,Open source的Web瀏覽器,專門針對(duì)嵌入式Linux平臺(tái)進(jìn)行開發(fā)。ViewML的源代碼是公開的,任何人都可以為它開發(fā)新的功能或是對(duì)它進(jìn)行維護(hù)。嵌入式Linux的研究成果也會(huì)對(duì)它的發(fā)展產(chǎn)生促進(jìn)作用。它的產(chǎn)生加快了帶有瀏覽器的設(shè)備的開發(fā)和應(yīng)用。例如,掌上電腦,導(dǎo)航系統(tǒng)、迷你電話和機(jī)頂盒等?,F(xiàn)在,包括界面的ViewML瀏覽器需要2.1 MB的RAM。當(dāng)有磁盤鏡象時(shí),僅需要760K。它的第一個(gè)版本支持HTML3.2、用戶界面和基本的JavaScript解釋器。它基于KDE的kfm(kde file manager)和FLTK(fast light tool kit),可以在標(biāo)準(zhǔn)的X窗口系統(tǒng)和Microwindows嵌入式窗口系統(tǒng)下運(yùn)行。它提供給了OEM高質(zhì)量的,小尺寸的瀏覽器。
(3)iPanel iPanel嵌入式瀏覽器由深圳茁壯網(wǎng)絡(luò)公司開發(fā),得到包括國(guó)內(nèi)外眾多專業(yè)芯片供應(yīng)商、設(shè)備廠商的測(cè)試和移植使用,被認(rèn)為是世界上最優(yōu)秀的嵌入式瀏覽器之一。iPanel支持HTML4.0、HTTP1.1、JavaScriptl.3、SSL3.0和DHTML、TVHTML等格式。針對(duì)電視顯示設(shè)計(jì)了特有的字體識(shí)別優(yōu)化顯示和抗閃爍算法,完全支持包括中文、日文、韓文等雙字節(jié)語(yǔ)言。占用存儲(chǔ)空間小,全部主體400KB,只需1 MB的Flash、1.5-2MB的RAM。對(duì)硬件要求低,CPU的速率可低至200MIPS,一般可在33MHz主頻以上的CPU下運(yùn)行。另外由于iPanel瀏覽器是完全基于嵌入式系統(tǒng)環(huán)境設(shè)計(jì)的,因而有非常好的可移植性。
(4)ZEN 一個(gè)并不知名的嵌入式瀏覽器,但卻十分優(yōu)秀,開放源碼項(xiàng)目,不僅支持表格,支持多種圖像格式(GIF、PNG、JPEG三種),而且在設(shè)計(jì)上很有特色,ZEN瀏覽器基于非常理想的模塊化結(jié)構(gòu)而設(shè)計(jì),根據(jù)功能將ZEN清晰地分為網(wǎng)絡(luò)模塊、解析模塊、布局模塊、UI接口模塊等。其中,還將涉及到GUI平臺(tái)的部分獨(dú)立出來(lái),支持GTK、OFBIS兩種圖形GUI,用戶可以通過(guò)配置采用不同的GUI平臺(tái)運(yùn)行,而無(wú)須對(duì)整個(gè)軟件進(jìn)行修改。Zen的代碼量很小,其內(nèi)核編譯后的二進(jìn)制版本可以達(dá)到300K左右,運(yùn)行速度快。缺點(diǎn)是網(wǎng)絡(luò)功能比較弱,沒有緩沖功能。另外不支持邊下載邊顯示的技術(shù),所以用戶等待時(shí)間可能較長(zhǎng)。
此外,還有其它商用嵌入式瀏覽器:Spyglass Device Mosaic, PlanetWeb、ThriveiPanel、中科院的CASS、Teknema Browser、EBSNet Microbrowser、EnReacheBrowser、Light of Adamas、ICE Browser、Espial Escape等等,上述產(chǎn)品除CASS和ThriveiPanel外,大都還不支持漢字顯示。
4.嵌入式瀏覽器的發(fā)展前景
近幾年,嵌入式市場(chǎng)迅速崛起,許多大大小小的公司都相繼投入其中,出現(xiàn)了一些己經(jīng)商業(yè)化的產(chǎn)品。但沒有任何一個(gè)產(chǎn)品,能夠像Microsoft的Internet Explorer和Netscape的Navigator在PC市場(chǎng)中一樣,占?jí)艛嗟匚?。在嵌入式的世界里,完美的HTML顯示不是必須的。好的技術(shù)應(yīng)該是能夠像顯示老的文本格式一樣,簡(jiǎn)潔的顯示現(xiàn)在的網(wǎng)頁(yè)。如,在蜂窩電話或者Internet設(shè)備(IAs)中,用戶需要迅速訪問(wèn)股票報(bào)價(jià)、體育比賽結(jié)果、全球定位數(shù)據(jù)等等。嵌入式瀏覽器要能夠靈活的根據(jù)具體應(yīng)用進(jìn)行定制。商家根據(jù)各自不同的側(cè)重點(diǎn),發(fā)展著自己的產(chǎn)品。
多樣的需求為眾多商家的發(fā)展提供了機(jī)會(huì),他們投身到嵌入式市場(chǎng)中,促進(jìn)了技術(shù)的進(jìn)步、市場(chǎng)的發(fā)展。嵌入式瀏覽器的技術(shù)仍然在向前發(fā)展著,除了繼續(xù)跟隨HTML、HTTP、SSL、JavaScript等協(xié)議或語(yǔ)言的新版本,繼續(xù)升級(jí)以及支持更多的應(yīng)用外,還在繼續(xù)拓展著其他的應(yīng)用模式和領(lǐng)域。如,瀏覽器技術(shù)和數(shù)字電視機(jī)頂盒技術(shù)集成,實(shí)現(xiàn)完整的數(shù)字電視軟件平臺(tái)。瀏覽器技術(shù)和Java技術(shù)的結(jié)合,解決實(shí)時(shí)性強(qiáng)的動(dòng)態(tài)視頻處理。把瀏覽器技術(shù)應(yīng)用到更多傳統(tǒng)的電器領(lǐng)域,以提供交互式的應(yīng)用等等。這些都是很好的發(fā)展方向,有著很好的發(fā)展前景。
5.結(jié)束語(yǔ)
隨著信息技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)的廣泛運(yùn)用,體積更小,速度更快,功能用戶化的嵌入式瀏覽器,將使強(qiáng)調(diào)功能全面的Netscape和IE瀏覽器顯得越來(lái)越笨拙。盡管微軟仍然占據(jù)著個(gè)人電腦專用互聯(lián)網(wǎng)瀏覽器的主要份額,但越來(lái)越多的專業(yè)人士認(rèn)為,迅速崛起的嵌入市場(chǎng)將成為講來(lái)主流瀏覽器。在云時(shí)代迅速到來(lái)之際,嵌入式瀏覽器將得到越來(lái)越廣泛的運(yùn)用和發(fā)展。
參考文獻(xiàn): [1] 張大波.嵌入式系統(tǒng).北京:電子工業(yè)出版社.2008.[2] 劉亞平.嵌入式系統(tǒng)基礎(chǔ)與應(yīng)用.北京:中國(guó)人民大學(xué)出版社.2009.[3] 張申亞.基于Linux的嵌入式瀏覽器的設(shè)計(jì)及實(shí)現(xiàn).信陽(yáng)師范學(xué)院.2007.[4] 唐云.嵌入式瀏覽器設(shè)計(jì)的幾個(gè)技術(shù)難點(diǎn)研究.湖南科技學(xué)院.2010.[5] 楊立明.嵌入式瀏覽器設(shè)計(jì)與實(shí)現(xiàn).東北師范學(xué)院.2010.[6] 張晶,曾憲云.嵌入式系統(tǒng)概述.電測(cè)與儀表.2002.[7] 孫先虎,張曦煌.基于Linux的嵌入式瀏覽器的特點(diǎn)和實(shí)現(xiàn).計(jì)算機(jī)應(yīng)用與軟件.2004.
第五篇:嵌入式論文關(guān)于觸摸屏設(shè)計(jì)
嵌入式實(shí)驗(yàn)課程設(shè)計(jì)
題
目 基于嵌入式的觸摸屏控制實(shí)驗(yàn)
院
系
電子工程系
專
業(yè)
信息工程
學(xué)
號(hào)
20092309022
姓
名
楊 金 磊
指導(dǎo)教師
董立軍
二O一二 年 六 月 八 日
目 錄
1.要求.............................................................2 1.1設(shè)計(jì)目的......................................................1 1.2 設(shè)計(jì)意義......................................................2 1.3 設(shè)計(jì)內(nèi)容......................................................2 1.4 主要任務(wù)......................................................2 2.正文.............................................................3 2.1觸摸屏工作原理(觸摸屏接口工作模式)..........................3 2.2、設(shè)計(jì)總體方案.................................................4 2.3、設(shè)計(jì)所需工具.................................................5 2.4、平臺(tái)構(gòu)建過(guò)程.................................................5
2.4.1、硬件平臺(tái)搭建.............................................5 2.4.2根文件系統(tǒng)的制作...........................................7(1)根文件系統(tǒng).................................................7 3.程序............................................................11 3.1.程序流程圖:.................................................11 3.2.分析驅(qū)動(dòng).....................................................11 3.2.1、觸摸屏設(shè)備驅(qū)動(dòng)中數(shù)據(jù)結(jié)構(gòu)................................11 3.2.2、觸摸屏驅(qū)動(dòng)模塊加載和卸載函數(shù)............................13 3.2.3、觸摸屏設(shè)備驅(qū)動(dòng)的讀函數(shù)..................................15 3.2.4、觸摸屏設(shè)備驅(qū)動(dòng)的輪詢與異步通知..........................15 3.2.5源程序觸摸屏驅(qū)動(dòng)代碼:....................................16 3.2.6、實(shí)驗(yàn)結(jié)果顯示:..........................................27 4.心得............................................................28 4.1 課程設(shè)計(jì)心得體會(huì):...........................................28 5.參考文獻(xiàn)........................................................28
5.1【參考文獻(xiàn)】..................................錯(cuò)誤!未定義書簽。
第一章 要求
1.1 設(shè)計(jì)目的
(1)基于WINDOWS操作系統(tǒng),以及實(shí)驗(yàn)箱,利用觸摸屏返回觸點(diǎn)坐標(biāo)值及動(dòng)作信息。
(2)坐標(biāo)及動(dòng)作的具體顯示:觸摸筆動(dòng)作,觸點(diǎn)X坐標(biāo)值,觸點(diǎn)Y坐標(biāo)值。
1.2 設(shè)計(jì)意義
(1)熟悉嵌入式系統(tǒng)開發(fā)平臺(tái)
(2)掌握ARM嵌入式操作系統(tǒng)下的各個(gè)指令的使用方法(3)了解觸摸屏的原理
1.3 設(shè)計(jì)內(nèi)容
(1)系統(tǒng)的正確移植和使用(2)根文件系統(tǒng)的正確移植和使用(3)驅(qū)動(dòng)程序的編譯與裝載
(4)嵌入式系統(tǒng)下應(yīng)用程序的交叉編譯及下載與調(diào)試
1.4 主要任務(wù)
(1)熟悉實(shí)驗(yàn)的流程(2)理解驅(qū)動(dòng)程序源代碼
(3)調(diào)用驅(qū)動(dòng)程序的某些函數(shù),編譯與調(diào)試應(yīng)用程序
第二章 正文
2.1觸摸屏工作原理(觸摸屏接口工作模式)
(1)普通轉(zhuǎn)換模式
普通轉(zhuǎn)換模式(AUTO_PST = 0,XY_PST = 0)是用作一般目的下的ADC轉(zhuǎn)換。這個(gè)模式可以通過(guò)設(shè)置ADCCON和ADCTSC來(lái)進(jìn)行對(duì)AD轉(zhuǎn)換的初始化;而后讀取ADCDAT0(ADC數(shù)據(jù)寄存器0)的XPDATA域(普通ADC轉(zhuǎn)換)的值來(lái)完成轉(zhuǎn)換。(2)分離的X/Y軸坐標(biāo)轉(zhuǎn)換模式:X軸坐標(biāo)轉(zhuǎn)換和Y軸坐標(biāo)轉(zhuǎn)換。
X軸坐標(biāo)轉(zhuǎn)換(AUTO_PST=0且XY_PST=1)將X軸坐標(biāo)轉(zhuǎn)換數(shù)值寫入到ADCDAT0寄存器的XPDATA域。轉(zhuǎn)換后,觸摸屏接口將產(chǎn)生中斷源(INT_ADC)到中斷控制器。
Y軸坐標(biāo)轉(zhuǎn)換(AUTO_PST=0且XY_PST=2)將X軸坐標(biāo)轉(zhuǎn)換數(shù)值寫入到ADCDAT1寄存器的YPDATA域。轉(zhuǎn)換后,觸摸屏接口將產(chǎn)生中斷源(INT_ADC)到中斷控制器。
(3)自動(dòng)(連續(xù))X/Y軸坐標(biāo)轉(zhuǎn)換模式。
自動(dòng)(連續(xù))X/Y軸坐標(biāo)轉(zhuǎn)換模式(AUTO_PST=1且XY_PST= 0)以下面的步驟工作:
觸摸屏控制器將自動(dòng)地切換X軸坐標(biāo)和Y軸坐標(biāo)并讀取兩個(gè)坐標(biāo)軸方向上的坐標(biāo)。觸摸屏控制器自動(dòng)將測(cè)量得到的X軸數(shù)據(jù)寫入到ADCDAT0寄存器的XPDATA域,然后將測(cè)量到的Y軸數(shù)據(jù)到ADCDAT1的YPDATA域。自動(dòng)(連續(xù))轉(zhuǎn)換之后,觸摸屏控制器產(chǎn)生中斷源(INT_ADC)到中斷控制器。(4)等待中斷模式
當(dāng)觸摸屏控制器處于等待中斷模式下時(shí),它實(shí)際上是在等待觸摸筆的點(diǎn)擊。在觸摸筆點(diǎn)擊到觸摸屏上時(shí),控制器產(chǎn)生中斷信號(hào)(INC_TC)。中斷產(chǎn)生后,就可以通過(guò)設(shè)置適當(dāng)?shù)霓D(zhuǎn)換模式(分離的X/Y軸坐標(biāo)轉(zhuǎn)換模式或自動(dòng)X/Y軸
坐標(biāo)轉(zhuǎn)換模式)來(lái)讀取X和Y的位置。(5)靜態(tài)(Standby)模式
當(dāng)ADCCON寄存器的STDBM位被設(shè)為1時(shí),Standby模式被激活。在該模式下,A/D轉(zhuǎn)換操作停止,ADCDAT0寄存器的XPDATA域和ADCDAT1寄存器的YPDATA(正常ADC)域保持著先前轉(zhuǎn)換所得的值。
2.2、設(shè)計(jì)總體方案
2.2.1 軟件
(1)Embest Online Flash Programmer For ARM: Embest Flash在線編程器(2)HYPER TERMINAL(超級(jí)終端):傳送vivi.nand;
傳送vivi.nand
vivi> load flash kernel x <回車> 燒寫更新內(nèi)核,傳送zImage文件;等待傳送內(nèi)核:
vivi>load flash root j <回車> 燒寫更新文件系統(tǒng);燒寫新的文件系統(tǒng) load flash root j
(3)EmbestIDE Pro for ARM: 應(yīng)用于嵌入式軟件開發(fā)的新一代集成開發(fā)環(huán)境,是一個(gè)高度集成的圖形界面操作環(huán)境,包含編輯器、編譯匯編鏈接器、調(diào)試器、工程管理、Flash 編程等工具;支持的開發(fā)語(yǔ)言包括標(biāo)準(zhǔn)C和匯編語(yǔ)言。(4)cygwin: 4
一個(gè)在windows平臺(tái)上運(yùn)行的unix模擬環(huán)境,它對(duì)于學(xué)習(xí)unix/linux操作環(huán)境,或者從unix到windows的應(yīng)用程序移植,或者進(jìn)行某些特殊的開發(fā)工作,尤其是使用gnu工具集在windows上進(jìn)行嵌入式系統(tǒng)開發(fā),把gcc,gdb,gas等開發(fā)工具進(jìn)行了改進(jìn),能夠生成并解釋win32的目標(biāo)文件。2.2.2 硬件
S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。
2.3、設(shè)計(jì)所需工具
2.3.1 軟件: Embest Online Flash Programmer For ARM,HYPER TERMINAL(超級(jí)終端),EmbestIDE Pro for ARM,cygwin 2.3.2 硬件:s3c2410開發(fā)板,Embest實(shí)驗(yàn)箱
2.4、平臺(tái)構(gòu)建過(guò)程
2.4.1、硬件平臺(tái)搭建
硬件流程圖:
(1)Vivi燒寫過(guò)程
1)首先把SW104斷開,F(xiàn)lash Programmer的Program,在File選擇Open打開要燒寫的配置文件S3C2410&NandFLash_vivi.cfg,在Flash Programmer的Program頁(yè)中選擇要燒寫的文件vivi.bon&load.bin。點(diǎn)擊按鈕 Progarm 開始燒寫,直到燒寫成功
2)連接串口線到 PC 機(jī) COM1,運(yùn)行光盤中提供的 Windows 超級(jí)終端Hyper Terminal.ht 把開發(fā)板重新加電,程序運(yùn)行后,在超級(jí)終端上可以看到串口輸出Wating,表示正在等待用戶從超級(jí)終端下載文件。這時(shí),請(qǐng)點(diǎn)擊超級(jí)終端菜單“傳送”選擇 Xmodem 方式下載 vivi.nand 文件,點(diǎn)擊 OK 后等待下載燒寫結(jié)束即可。(2)內(nèi)核zImage燒寫
1)首先SW104設(shè)為短接(從Nand Flash啟動(dòng)),并確定已經(jīng)燒寫vivi.nand,加電。)在vivi啟動(dòng)等待中,敲入空格鍵進(jìn)入vivi界面環(huán)境,并輸入以下命令:vivi> load flash kernel x <回車> 燒寫更新內(nèi)核約1分鐘即可燒寫完畢)點(diǎn)擊超級(jí)終端菜單中的“傳送”,選“發(fā)送文件”zImage” 并選擇xModem方式傳送)燒寫結(jié)束,重起實(shí)驗(yàn)板,觀測(cè)超級(jí)終端窗口提示信息就可以啟動(dòng)linux內(nèi)核,(3)新文件系統(tǒng)的燒寫
1)首先SW104設(shè)為短接(從Nand Flash啟動(dòng)),確定已經(jīng)成功燒寫vivi.nand,加電運(yùn)行可以看到vivi啟動(dòng)信息,輸入空格進(jìn)入命令狀態(tài);
2)雙擊運(yùn)行Download.pjf(該文件在/tmp/edukit-2410/image/中)工程(將啟動(dòng)Embest IDE環(huán)境),點(diǎn)擊連接Remote connect,程序應(yīng)該正在運(yùn)行(命令按鈕STOP為紅色);在串口輸入help,看看有沒有反應(yīng),如果沒反應(yīng),點(diǎn)擊IDE 按鈕:Reset->Start(F5);再輸入help測(cè)試,直到有反應(yīng)為止;
3)如果可以輸出一些信息,再點(diǎn)擊IDE中的Stop,配置Debug的Download地 6
址為0x30000000,并點(diǎn)擊IDE菜單Project選擇Settings項(xiàng),在Download頁(yè)下拉Category到Download項(xiàng),在Download File選擇root.cramfs文件,點(diǎn)擊確定后:
點(diǎn)擊IDE菜單DEBUG選擇Download下載文件系統(tǒng)映象? 下載完畢后,點(diǎn)擊Start(F5)然后在超級(jí)終端里輸入: load flash root j(燒寫更新文件系統(tǒng))?
注意:只能在“vivi的燒寫”操作完成后,才可以按以上方法正確燒寫root映象到Nand Flash。
重起實(shí)驗(yàn)板,觀測(cè)超級(jí)終端窗口提示信息,引導(dǎo)整個(gè)系統(tǒng)啟動(dòng)到linux行命令輸入狀態(tài)。
2.4.2根文件系統(tǒng)的制作(1)根文件系統(tǒng)
根文件系統(tǒng)是Linux系統(tǒng)的核心部分,包含系統(tǒng)使用的軟件和庫(kù),以及所有用來(lái)為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為儲(chǔ)存數(shù)據(jù)讀寫結(jié)果的區(qū)域。在Linux系統(tǒng)啟動(dòng)時(shí),首先完成內(nèi)核安裝及環(huán)境初始化,最后會(huì)尋找一個(gè)文件系統(tǒng)作為根文件系統(tǒng)被加載。Linux系統(tǒng)中使用“/”來(lái)唯一表示根文件系統(tǒng)的安裝路徑。嵌入式系統(tǒng)中通??梢詰抑母募到y(tǒng)有:Romfs、CRAMFS、RAMFS、JFFS2、EXT2等,甚至還可以使用NFS作為根文件系統(tǒng)。
(2)cramfs文件系統(tǒng)
Cramfs是Linux創(chuàng)始人Linux torvalds開發(fā)的一個(gè)適用于嵌入式系統(tǒng)的小文件系統(tǒng)。Cramfs是一個(gè)只讀文件系統(tǒng),采用zlib壓縮,壓縮比一般可以達(dá)到1:2,但仍可以做到高效的隨機(jī)讀取。Linux系統(tǒng)中,通常把需要修改的目錄壓縮存放,并在系統(tǒng)引導(dǎo)的時(shí)候再將壓縮文件解開。因?yàn)閏ramfs不會(huì)影響系統(tǒng)讀取文件的速度,而且是一個(gè)高度壓縮的文件系統(tǒng),因此非常廣泛應(yīng)用于嵌入式系統(tǒng)中。
(3)cygwin簡(jiǎn)介
Cygwin是一個(gè)在windows平臺(tái)上運(yùn)行的unix/Linux模擬環(huán)境,是cygnus solutions公司開發(fā)的自由軟件。Cygwin中,“/”表示根目錄,即cygwin的安裝目錄。我們常用的set_env_linux.sh中定義的目錄有:
SOURCEDIR:/tmp/edukit-2410存儲(chǔ)了vivi、linux、fs等源代碼和例程 WORKDIR:/usr/local/src/edukit-2410工作區(qū)。
一般情況下都要把已經(jīng)規(guī)劃好的目錄結(jié)構(gòu)轉(zhuǎn)換成一個(gè)映象文件,即使用命令工具 mkcramfs(cygwin下為 mkcramfs.exe),把相應(yīng)的 cramfs 目錄樹壓縮為單一的映象文件。其命令格式為:
mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile 可以使用我們提供的 mkcramfs.exe 在 cygwin 下編譯生成文件系統(tǒng)映象文件 root.cramfs,再固化到開發(fā)系統(tǒng) FLASH 上運(yùn)行。
(4)常用的Linux行命令
1)、cd 改變當(dāng)前目錄(文件夾)。例如下,cd/ 返回到根目錄 cd..退回到上級(jí)目錄
cd/tmp/edukit-2410/進(jìn)入/tmp/edukit-2410/文件夾 2)、ls 列出當(dāng)前目錄中的內(nèi)容。Ls 簡(jiǎn)單格式列表 ls–l 使用詳細(xì)格式列表。3)、pwd 顯示當(dāng)前所在的目錄。
(5)tar工具命令
tar 程序用于儲(chǔ)存或展開 tar 存檔文件。命令格式:
tar [-參數(shù)] [文件名][路徑]-x :extract |--get 從存檔展開文件-v :--verbose 詳細(xì)顯示處理的文件-j :--有 bz2 屬性的必須包含
-f :--file [HOSTNAME:]F 指定存檔或設(shè)備(缺省為 /dev/rmt0)
(6)解壓原文件系統(tǒng)(命令+解壓目錄的存放)
1)先將 root.cramfs.tar.bz2文件放在C:cygwin目錄中 2)解壓文件系統(tǒng)
運(yùn)行cygwin,執(zhí)行以下命令解壓安裝:
$> source /tmp/edukit-2410/set_env_linux.sh? Linux編譯環(huán)境變量設(shè)置 $> cd /
$> tar-xvjf root.cramfs.tar.bz2 $> ls ? root ?
root文件夾中就是我們想要的cramfs文件系統(tǒng) 3)如果在根目錄中產(chǎn)生root文件夾,解壓成功 4)在root目錄中新建xx文件夾,用于存放應(yīng)用程序
進(jìn)入該目錄后執(zhí)行以下命令編譯鏈接測(cè)試程序: $> cd root $>mkdir xx
(7)編譯應(yīng)用程序 ts.c(命令+生成文件格式+存放位置): 將編寫好的ts.c程序放在C:cygwin目錄中 進(jìn)入該目錄后執(zhí)行以下命令編譯鏈接測(cè)試程序: $> cd / $> arm-linux-gcc-o ts ts.c(也可以編寫Makefile來(lái)編譯)
生成文件: ts 如下圖所示
將ts文件放入root 下的xx文件夾中
(8)新文件系統(tǒng)的制作: 把剛才編譯輸出的ts文件拷貝到文件系統(tǒng)所在的工作目錄root目錄下,執(zhí)行以下命令生成新的文件系統(tǒng)映象:
$> cd /
$> mkcramfs root root.new
剛剛編譯生成的文件系統(tǒng)映象 root.new 中已經(jīng)包含測(cè)試程序即生成文件。解壓文件系統(tǒng)在root目錄中新建xx文件夾,用于存放應(yīng)用 將編寫好的ts.c程序放在C:cygwin目錄中 生成文件: ts 如下圖所示
新文件系統(tǒng)的制作
生成文件:
第三章 程序
3.1.程序流程圖:
3.2.分析驅(qū)動(dòng)
觸摸屏驅(qū)動(dòng)在/kernel/drivers/char/s3c2410-ts.c 文件中。
3.2.1、觸摸屏設(shè)備驅(qū)動(dòng)中數(shù)據(jù)結(jié)構(gòu)
(1)觸摸屏的file_operations static struct file_operations s3c2410_fops={ owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read,release: s3c2410_ts_release, #ifdef USE_ASYNC fasync: s3c2410_ts_fasync,//異步通知
#endif poll: s3c2410_ts_poll,//輪詢 };(2)觸摸屏設(shè)備結(jié)構(gòu)體的成員與按鍵設(shè)備結(jié)構(gòu)體的成員類似,也包含一個(gè)緩沖區(qū),同時(shí)包括自旋鎖、等待隊(duì)列和fasync_struct指針 typedef struct { unsigned int penStatus;/* PEN_UP, PEN_DOWN, PEN_SAMPLE */ TS_RET buf[MAX_TS_BUF];/* protect against overrun(環(huán)形緩沖區(qū))*/ unsigned int head, tail;/* head and tail for queued events(環(huán)形緩沖區(qū)的頭尾)*/ wait_queue_head_t wq;//* 等待隊(duì)列數(shù)據(jù)結(jié)構(gòu) spinlock_t lock;//* 自旋鎖
#ifdef USE_ASYNC struct fasync_struct *aq;#endif #ifdef CONFIG_PM struct pm_dev *pm_dev;//友善之臂專有的,我后面的代碼刪除了這段 #endif } TS_DEV;
(3)觸摸屏結(jié)構(gòu)體中包含的TS_RET值的類型定義,包含X、Y坐標(biāo)和狀態(tài)(PEN_DOWN、PEN_UP)等信息,這個(gè)信息會(huì)在用戶讀取觸摸信息時(shí)復(fù)制到用戶空 間
typedef struct { 12
unsigned short pressure;//* 壓力,這里可定義為筆按下,筆抬起,筆拖曳
unsigned short x;//* 橫坐標(biāo)的采樣值 unsigned short y;//* 縱坐標(biāo)的采樣值 unsigned short pad;//* 填充位 } TS_RET;
(4)在觸摸屏設(shè)備驅(qū)動(dòng)中,將實(shí)現(xiàn)open()、release()、read()、fasync()和poll()函數(shù),因此,其文件操作結(jié)構(gòu)體定義
觸摸屏驅(qū)動(dòng)文件操作結(jié)構(gòu)體:static struct file_operations s3c2410fops={} _3.2.2、觸摸屏驅(qū)動(dòng)模塊加載和卸載函數(shù)
(1)在觸摸屏設(shè)備驅(qū)動(dòng)的模塊加載函數(shù)中,要完成申請(qǐng)?jiān)O(shè)備號(hào)、添加cdev、申請(qǐng)中斷、設(shè)置觸摸屏控制引腳(YPON、YMON、XPON、XMON)等多項(xiàng)工作 觸摸屏設(shè)備驅(qū)動(dòng)的模塊加載函數(shù)
static int __init s3c2410_ts_init(void)觸摸屏設(shè)備驅(qū)動(dòng)模塊卸載函數(shù)
static void __exit s3c2410_ts_exit(void)(2)可知觸摸屏驅(qū)動(dòng)中會(huì)產(chǎn)生兩類中斷,一類是觸點(diǎn)中斷(INT-TC),一類是X/Y位置轉(zhuǎn)換中斷(INT-ADC)。在前一類中斷發(fā)生后,若之前處于PEN_UP狀態(tài),則應(yīng)該啟動(dòng)X/Y位置轉(zhuǎn)換。另外,將抬起中斷也放在INT-TC處理程序中,它會(huì)調(diào)用tsEvent()完成等待隊(duì)列和信號(hào)的釋放 觸摸屏設(shè)備驅(qū)動(dòng)的觸點(diǎn)/抬起中斷處理程序
static void s3c2410_isr_tc(int irq, void *dev_id, struct pt_regs *reg)
當(dāng)X/Y位置轉(zhuǎn)換中斷發(fā)生后,應(yīng)讀取X、Y的坐標(biāo)值,填入緩沖區(qū) 觸摸屏設(shè)備驅(qū)動(dòng)X/Y位置轉(zhuǎn)換中斷處理程序
static void s3c2410_isr_adc(int irq, void *dev_id, struct pt_regs *reg)觸摸屏設(shè)備驅(qū)動(dòng)中獲得X、Y坐標(biāo)
static inline void s3c2410_get_XY(void)(3)tsEvent最終為tsEvent_raw(),這個(gè)函數(shù)很關(guān)鍵,當(dāng)處于PEN_DOWN狀態(tài)時(shí)調(diào)用該函數(shù),它會(huì)完成緩沖區(qū)的填充、等待隊(duì)列的喚醒以及異步通知信號(hào)的釋放;否則(處于PEN_UP狀態(tài)),將緩沖區(qū)頭清0,也喚醒等待隊(duì)列并釋放信號(hào)
觸摸屏設(shè)備驅(qū)動(dòng)的tsEvent_raw()函數(shù) static void tsEvent_raw(void)(4)在包含了對(duì)拖動(dòng)軌跡支持的情況下,定時(shí)器會(huì)被啟用,周期為10ms,在每次定時(shí)器處理函數(shù)被引發(fā)時(shí),調(diào)用start_ts_adc()開始X/Y位置轉(zhuǎn)換過(guò)程
觸摸屏設(shè)備驅(qū)動(dòng)的定時(shí)器處理函數(shù)
static void tstimerhandler(unsigned long data)(5)在觸摸屏設(shè)備驅(qū)動(dòng)的打開函數(shù)中,應(yīng)初始化緩沖區(qū)、penStatus和定期器、等待隊(duì)列及tsEvent時(shí)間處理函數(shù)指針 觸摸屏設(shè)備驅(qū)動(dòng)的打開函數(shù)
static int s3c2410tsopen(struct inode *inode, struct file *filp)
_
_
_
_ 14
(6)觸摸屏設(shè)備驅(qū)動(dòng)的釋放函數(shù)非常簡(jiǎn)單,刪除為用于拖動(dòng)軌跡所使用的定時(shí)器即可
觸摸屏設(shè)備驅(qū)動(dòng)的釋放函數(shù)
static int s3c2410tsrelease(struct inode *inode, struct file *filp)
_
_3.2.3、觸摸屏設(shè)備驅(qū)動(dòng)的讀函數(shù)
觸摸屏設(shè)備驅(qū)動(dòng)的讀函數(shù)實(shí)現(xiàn)緩沖區(qū)中信息向用戶空間的復(fù)制,當(dāng)緩沖區(qū)有內(nèi)容時(shí),直接復(fù)制;否則,如果用戶阻塞訪問(wèn)觸摸屏,則進(jìn)程在等待隊(duì)列上睡眠,否則,立即返回-EAGAIN 觸摸屏設(shè)備驅(qū)動(dòng)的讀函數(shù)
static ssize_t s3c2410_ts_read(struct file *filp, char *buffer, sizet count, lofft *ppos)_
_3.2.4、觸摸屏設(shè)備驅(qū)動(dòng)的輪詢與異步通知
在觸摸屏設(shè)備驅(qū)動(dòng)中,通過(guò)s3c2410_ts_poll()函數(shù)實(shí)現(xiàn)了輪詢接口,這個(gè)函數(shù)的實(shí)現(xiàn)非常簡(jiǎn)單。它將等待隊(duì)列添加到poll_table,當(dāng)緩沖區(qū)有數(shù)據(jù)時(shí),返回資源可讀取標(biāo)志,否則返回0 觸摸屏設(shè)備驅(qū)動(dòng)的poll()函數(shù)
static unsigned int s3c2410_ts_poll(struct file *filp, struct polltablestruct *wait)而為了實(shí)現(xiàn)觸摸屏設(shè)備驅(qū)動(dòng)對(duì)應(yīng)用程序的異步通知,設(shè)備驅(qū)動(dòng)中要實(shí)現(xiàn)s3c2410_ts_fasync()函數(shù) 觸摸屏設(shè)備驅(qū)動(dòng)的fasync()函數(shù) __
static int s3c2410_ts_fasync(int fd, struct file *filp, int mode)3.2.5源程序觸摸屏代碼:
/* * s3c2410-ts.c * * touchScreen driver for SAMSUNG S3C2410 * * Author: Janghoon Lyu
#include
#include
#include
#ifdef CONFIG_PM #include
/* debug macros */ #undef DEBUG #ifdef DEBUG #define DPRINTK(x...)printk(“s3c2410-ts: ” ##x)#else #define DPRINTK(x...)#endif
#define PEN_UP 0
#define PEN_DOWN 1 #define PEN_FLEETING 2 #define MAX_TS_BUF 16 /* how many do we want to buffer */
#undef USE_ASYNC 1 #define DEVICE_NAME “s3c2410-ts” #define TSRAW_MINOR 1
typedef struct { unsigned int penStatus;/* PEN_UP, PEN_DOWN, PEN_SAMPLE */ TS_RET buf[MAX_TS_BUF];/* protect against overrun */ unsigned int head, tail;/* head and tail for queued events */ wait_queue_head_t wq;spinlock_t lock;#ifdef USE_ASYNC struct fasync_struct *aq;#endif #ifdef CONFIG_PM struct pm_dev *pm_dev;#endif } TS_DEV;
static TS_DEV tsdev;
#define BUF_HEAD(tsdev.buf[tsdev.head])#define BUF_TAIL(tsdev.buf[tsdev.tail])#define INCBUF(x,mod)((++(x))&((mod)-1))
static int tsMajor = 0;
static void(*tsEvent)(void);
#define HOOK_FOR_DRAG #ifdef HOOK_FOR_DRAG #define TS_TIMER_DELAY(HZ/100)/* 10 ms */ static struct timer_list ts_timer;#endif
#define wait_down_int(){ ADCTSC = DOWN_INT | XP_PULL_UP_EN |
XP_AIN | XM_HIZ | YP_AIN | YM_GND |
XP_PST(WAIT_INT_MODE);} #define wait_up_int(){ ADCTSC = UP_INT | XP_PULL_UP_EN | XP_AIN | XM_HIZ |
YP_AIN | YM_GND | XP_PST(WAIT_INT_MODE);} #define mode_x_axis(){ ADCTSC = XP_EXTVLT | XM_GND | YP_AIN | YM_HIZ |
XP_PULL_UP_DIS | XP_PST(X_AXIS_MODE);} #define mode_x_axis_n(){ ADCTSC = XP_EXTVLT | XM_GND | YP_AIN | YM_HIZ |
XP_PULL_UP_DIS | XP_PST(NOP_MODE);} #define mode_y_axis(){ ADCTSC = XP_AIN | XM_HIZ | YP_EXTVLT | YM_GND |
XP_PULL_UP_DIS | XP_PST(Y_AXIS_MODE);} #define start_adc_x(){ ADCCON = PRESCALE_EN | PRSCVL(49)|
ADC_INPUT(ADC_IN5)| ADC_START_BY_RD_EN |
ADC_NORMAL_MODE;
ADCDAT0;} #define start_adc_y(){ ADCCON = PRESCALE_EN | PRSCVL(49)|
ADC_INPUT(ADC_IN7)| ADC_START_BY_RD_EN |
ADC_NORMAL_MODE;
ADCDAT1;} #define disable_ts_adc(){ ADCCON &= ~(ADCCON_READ_START);}
static int adc_state = 0;static int x, y;/* touch screen coorinates */
static void tsEvent_raw(void){ if(tsdev.penStatus == PEN_DOWN){
BUF_HEAD.x = x;
BUF_HEAD.y = y;
BUF_HEAD.pressure = PEN_DOWN;
#ifdef HOOK_FOR_DRAG
ts_timer.expires = jiffies + TS_TIMER_DELAY;
add_timer(&ts_timer);#endif } else { #ifdef HOOK_FOR_DRAG
del_timer(&ts_timer);#endif
BUF_HEAD.x = 0;
BUF_HEAD.y = 0;
BUF_HEAD.pressure = PEN_UP;}
tsdev.head = INCBUF(tsdev.head, MAX_TS_BUF);wake_up_interruptible(&(tsdev.wq));
#ifdef USE_ASYNC if(tsdev.aq)
kill_fasync(&(tsdev.aq), SIGIO, POLL_IN);#endif
#ifdef CONFIG_PM pm_access(tsdev.pm_dev);#endif }
static int tsRead(TS_RET * ts_ret){ spin_lock_irq(&(tsdev.lock));ts_ret->x = BUF_TAIL.x;ts_ret->y = BUF_TAIL.y;ts_ret->pressure = BUF_TAIL.pressure;tsdev.tail = INCBUF(tsdev.tail, MAX_TS_BUF);spin_unlock_irq(&(tsdev.lock));
return sizeof(TS_RET);}
static ssize_t s3c2410_ts_read(struct file *filp, char *buffer, size_t count, loff_t *ppos){ TS_RET ts_ret;
retry: if(tsdev.head!= tsdev.tail){
int count;
count = tsRead(&ts_ret);
if(count)copy_to_user(buffer,(char *)&ts_ret, count);
return count;} else {
if(filp->f_flags & O_NONBLOCK)
return-EAGAIN;
interruptible_sleep_on(&(tsdev.wq));
if(signal_pending(current))
return-ERESTARTSYS;
goto retry;}
return sizeof(TS_RET);}
#ifdef USE_ASYNC static int s3c2410_ts_fasync(int fd, struct file *filp, int mode){ return fasync_helper(fd, filp, mode, &(tsdev.aq));} #endif
static unsigned int s3c2410_ts_poll(struct file *filp, struct poll_table_struct *wait){ poll_wait(filp, &(tsdev.wq), wait);return(tsdev.head == tsdev.tail)? 0 :(POLLIN | POLLRDNORM);}
static inline void start_ts_adc(void){ adc_state = 0;mode_x_axis();start_adc_x();}
static inline void s3c2410_get_XY(void){ if(adc_state == 0){
adc_state = 1;
disable_ts_adc();
y =(ADCDAT0 & 0x3ff);
mode_y_axis();
start_adc_y();} else if(adc_state == 1){
adc_state = 0;
disable_ts_adc();
x =(ADCDAT1 & 0x3ff);
tsdev.penStatus = PEN_DOWN;
DPRINTK(“PEN DOWN: x: %08d, y: %08dn”, x, y);
wait_up_int();
tsEvent();} }
static void s3c2410_isr_adc(int irq, void *dev_id, struct pt_regs *reg){ #if 0 DPRINTK(“Occured Touch Screen Interruptn”);DPRINTK(“SUBSRCPND = 0x%08lxn”, SUBSRCPND);#endif spin_lock_irq(&(tsdev.lock));if(tsdev.penStatus == PEN_UP)s3c2410_get_XY();#ifdef HOOK_FOR_DRAG else s3c2410_get_XY();#endif spin_unlock_irq(&(tsdev.lock));}
static void s3c2410_isr_tc(int irq, void *dev_id, struct pt_regs *reg){ #if 0 DPRINTK(“Occured Touch Screen Interruptn”);DPRINTK(“SUBSRCPND = 0x%08lxn”, SUBSRCPND);#endif spin_lock_irq(&(tsdev.lock));if(tsdev.penStatus == PEN_UP){ start_ts_adc();} else { tsdev.penStatus = PEN_UP;DPRINTK(“PEN UP: x: %08d, y: %08dn”, x, y);wait_down_int();tsEvent();
} spin_unlock_irq(&(tsdev.lock));}
#ifdef HOOK_FOR_DRAG static void ts_timer_handler(unsigned long data){ spin_lock_irq(&(tsdev.lock));if(tsdev.penStatus == PEN_DOWN){
start_ts_adc();} spin_unlock_irq(&(tsdev.lock));} #endif
static int s3c2410_ts_open(struct inode *inode, struct file *filp){ tsdev.head = tsdev.tail = 0;tsdev.penStatus = PEN_UP;#ifdef HOOK_FOR_DRAG init_timer(&ts_timer);ts_timer.function = ts_timer_handler;#endif tsEvent = tsEvent_raw;init_waitqueue_head(&(tsdev.wq));
MOD_INC_USE_COUNT;return 0;}
static int s3c2410_ts_release(struct inode *inode, struct file *filp){ #ifdef HOOK_FOR_DRAG del_timer(&ts_timer);#endif MOD_DEC_USE_COUNT;return 0;}
static struct file_operations s3c2410_fops = { owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read,release: s3c2410_ts_release,#ifdef USE_ASYNC fasync: s3c2410_ts_fasync, #endif poll: s3c2410_ts_poll, };
void tsEvent_dummy(void){} #ifdef CONFIG_PM static int s3c2410_ts_pm_callback(struct pm_dev *pm_dev, pm_request_t req,void *data){ switch(req){
case PM_SUSPEND:
tsEvent = tsEvent_dummy;
break;
case PM_RESUME:
tsEvent = tsEvent_raw;
wait_down_int();
break;} return 0;} #endif
#ifdef CONFIG_DEVFS_FS static devfs_handle_t devfs_ts_dir, devfs_tsraw;#endif static int __init s3c2410_ts_init(void){ int ret;
tsEvent = tsEvent_dummy;
ret = register_chrdev(0, DEVICE_NAME, &s3c2410_fops);if(ret < 0){ printk(DEVICE_NAME “ can't get major numbern”);return ret;} tsMajor = ret;
/* set gpio to XP, YM, YP and YM */ #if 0 set_GPIO_mode(GPIO106_nYPON_MD);
set_GPIO_mode(GPIO105_YMON_MD);set_GPIO_mode(GPIO104_nXPON_MD);set_GPIO_mode(GPIO103_XMON_MD);
GPUP(GPIO106_nYPON)|= GPIO_bit(GPIO106_nYPON);GPUP(GPIO105_YMON)&= GPIO_bit(GPIO105_YMON);GPUP(GPIO104_nXPON)|= GPIO_bit(GPIO104_nXPON);GPUP(GPIO103_XMON)&= GPIO_bit(GPIO103_XMON);#else set_gpio_ctrl(GPIO_YPON);set_gpio_ctrl(GPIO_YMON);set_gpio_ctrl(GPIO_XPON);set_gpio_ctrl(GPIO_XMON);#endif
/* Enable touch interrupt */ ret = request_irq(IRQ_ADC_DONE, s3c2410_isr_adc, SA_INTERRUPT,DEVICE_NAME, s3c2410_isr_adc);if(ret)goto adc_failed;ret = request_irq(IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT,DEVICE_NAME, s3c2410_isr_tc);if(ret)goto tc_failed;
/* Wait for touch screen interrupts */ wait_down_int();
#ifdef CONFIG_DEVFS_FS devfs_ts_dir = devfs_mk_dir(NULL, “touchscreen”, NULL);devfs_tsraw = devfs_register(devfs_ts_dir, “0raw”, DEVFS_FL_DEFAULT,tsMajor, TSRAW_MINOR, S_IFCHR | S_IRUSR | S_IWUSR,&s3c2410_fops, NULL);#endif
#ifdef CONFIG_PM #if 0 tsdev.pm_dev = pm_register(PM_GP_DEV, PM_USER_INPUT,s3c2410_ts_pm_callback);#endif tsdev.pm_dev = pm_register(PM_DEBUG_DEV, PM_USER_INPUT,s3c2410_ts_pm_callback);#endif printk(DEVICE_NAME “ initializedn”);
return 0;tc_failed: free_irq(IRQ_ADC_DONE, s3c2410_isr_adc);adc_failed: return ret;}
static void __exit s3c2410_ts_exit(void){ #ifdef CONFIG_DEVFS_FS
devfs_unregister(devfs_tsraw);devfs_unregister(devfs_ts_dir);#endif unregister_chrdev(tsMajor, DEVICE_NAME);#ifdef CONFIG_PM pm_unregister(tsdev.pm_dev);#endif free_irq(IRQ_ADC_DONE, s3c2410_isr_adc);free_irq(IRQ_TC, s3c2410_isr_tc);}
module_init(s3c2410_ts_init);module_exit(s3c2410_ts_exit);觸摸屏應(yīng)用程序
#include
#define PEN_UP 0 /* 觸摸筆抬筆,即觸摸屏不被壓下 */ #define PEN_DOWN 1 /* 觸摸筆下筆,即觸摸屏被壓下 */ #define PEN_FLEETING 2 /* 觸摸筆拖動(dòng) */
typedef struct { unsigned short pressure;/* 觸摸筆動(dòng)作 */ unsigned short x;
/* 觸點(diǎn)x座標(biāo)值 */ unsigned short y;
/* 觸點(diǎn)y座標(biāo)值 */ unsigned short pad;}TS_RET;
int main(){ int fd,ret,i;
unsigned char suba;TS_RET tsret;
fd = open(“/dev/touchscreen/0raw”, O_RDWR);/* 打開設(shè)備 */ if(fd ==-1){ printf(“nCan't open I2C device!n”);exit(-1);}
while(1){
ret = read(fd,(char *)&tsret, sizeof(TS_RET));
if(ret!= sizeof(TS_RET))
{
printf(“read touch screen error!”);
close(fd);
exit(-1);
}
else
{
printf(“pressure is: %dn”, tsret.pressure);
printf(“x is: %dn”, tsret.x);
printf(“y is: %dn”, tsret.y);
} }
close(fd);return 0;} 3.3.應(yīng)用程序的調(diào)試
使用s3c2410_ts.c觸摸屏驅(qū)動(dòng)編寫應(yīng)用程序,讀取觸摸屏的觸點(diǎn)坐標(biāo)值及動(dòng)作信息(觸點(diǎn)x坐標(biāo)值,y坐標(biāo)及是否有壓力值press),并在串口中斷打印出來(lái)
對(duì)觸摸屏設(shè)別的操作有打開設(shè)備,關(guān)閉設(shè)備,讀操作等。編寫應(yīng)用程序讀取觸摸屏的觸點(diǎn)坐標(biāo)值及動(dòng)作信息時(shí),只需利用觸摸屏驅(qū)動(dòng)程序便可實(shí)現(xiàn),先打開觸摸屏設(shè)備,然后調(diào)用讀函數(shù)即可。
其中,觸摸筆動(dòng)作取值如下: #define PEN_UP 0 #define PEN_DOWN
/* 觸摸筆抬筆,即觸摸屏不被壓下 */ /* 觸摸筆下筆,即觸摸屏被壓下 */
#define PEN_FLEETING 2 結(jié)構(gòu)體定義如下: typedef struct { unsigned short pressure;unsigned short x;unsigned short y;unsigned short pad;}TS_RET 打開應(yīng)用程序:
/* 觸摸筆拖動(dòng) */
/* 觸摸筆動(dòng)作 */ /* 觸點(diǎn)x座標(biāo)值 */ /* 觸點(diǎn)y座標(biāo)值 */
3.2.6、實(shí)驗(yàn)結(jié)果顯示:
第四部分 感想
第四章 心得
4.1 課程設(shè)計(jì)心得體會(huì):
經(jīng)過(guò)個(gè)人的努力和老師以及同學(xué)們的幫助和指導(dǎo),我順利的完成了本次《嵌入式系統(tǒng)原理》課程設(shè)計(jì)。本次課程設(shè)計(jì)為我提供了一個(gè)理論與實(shí)踐相結(jié)合的機(jī)會(huì),既鍛煉了我的動(dòng)手能力,又加深理解了在課堂所學(xué)習(xí)的理論知識(shí)。通過(guò)本次課程設(shè)計(jì),將課本上的理論知識(shí)和實(shí)際應(yīng)用有機(jī)結(jié)合起來(lái),培養(yǎng)了我又動(dòng)腦,又動(dòng)手,獨(dú)立思考分析問(wèn)題的能力,提高了我運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的綜合素質(zhì)。通過(guò)本次課程設(shè)計(jì)我明白了只有不斷的努力,不斷的學(xué)習(xí),才能在將來(lái)遇到的問(wèn)題中能夠游刃有余,才能夠不會(huì)捉襟見肘。
參考文獻(xiàn) 程昌南,方強(qiáng)等.《ARM Linux入門與實(shí)踐 》【M】.北京:北京航空航天大學(xué)出版社,2008.10 2 張曉林等.《嵌入式系統(tǒng)設(shè)計(jì)與實(shí)踐》【M】.北京:北京航空航天大學(xué)出版社,2006.1 3 李俊等.《嵌入式Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》【M】.北京:北京人民郵電出版社,2008.3 4 黃智偉,鄧月明,王彥.《ARM9嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程》.北京:北京航空航天大學(xué)出版社,2008.8