第一篇:嵌入式報(bào)告
嵌入式實(shí)訓(xùn)報(bào)告
姓名:張龍班級(jí):電氣803學(xué)號(hào):08010270
嵌入式系統(tǒng)學(xué)習(xí)體會(huì)
一、嵌入式發(fā)展前景
嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲(chǔ)器等)非常有限,并且對(duì)成本很敏感,有時(shí)對(duì)實(shí)時(shí)響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。像我們平常常見到的手機(jī)、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數(shù)字相機(jī)(DC)、數(shù)字?jǐn)z像機(jī)(DV)、U-Disk、機(jī)頂盒(Set Top Box)、高清電視(HDTV)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的嵌入式系統(tǒng)。
嵌入式系統(tǒng)是軟硬結(jié)合的東西,搞嵌入式開發(fā)的人有兩類。
一類是學(xué)電子工程、通信工程等偏硬件專業(yè)出身的人,他們主要是搞硬件設(shè)計(jì),有時(shí)要開發(fā)一些與硬件關(guān)系最密切的最底層軟件,如BootLoader、Board SupportPackage(像PC的BIOS一樣,往下驅(qū)動(dòng)硬件,往上支持操作系統(tǒng)),最初級(jí)的硬件驅(qū)動(dòng)程序等。他們的優(yōu)勢(shì)是對(duì)硬件原理非常清楚,不足是他們更擅長(zhǎng)定義各種硬件接口,但對(duì)復(fù)雜軟件系統(tǒng)往往力不從心(例如嵌入式操作系統(tǒng)原理和復(fù)雜應(yīng)用軟件等)。
另一類是學(xué)軟件、計(jì)算機(jī)專業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開發(fā)。如果我們學(xué)軟件的人對(duì)硬件原理和接口有較好的掌握,我們完全也可寫B(tài)SP和硬件驅(qū)動(dòng)程序。嵌入式硬件設(shè)計(jì)完后,各種功能就全靠軟件來實(shí)現(xiàn)了,嵌入式設(shè)備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統(tǒng)的最主要工作(目前有很多公司將硬件設(shè)計(jì)包給了專門的硬件公司,稍復(fù)雜的硬件都交給***或國外公司設(shè)計(jì),國內(nèi)的硬件設(shè)計(jì)力量很弱,很多嵌入式公司自己只負(fù)責(zé)開發(fā)軟件,因?yàn)楣径贾溃度胧疆a(chǎn)品的差異很大程度在軟件上,在軟件方面是最有“花頭“可做的),所以我們搞軟件的人完全不用擔(dān)心我們?cè)谇度胧绞袌?chǎng)上的用武之地,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì)。
二、嵌入式系統(tǒng)應(yīng)用前景
隨著計(jì)算機(jī)軟件和集成電路技術(shù)的發(fā)展,嵌入式系統(tǒng)產(chǎn)品日益完善,在航天、航空、交通、網(wǎng)絡(luò)、電子、通訊、金融、智能電器、智能建筑、儀器儀表、工業(yè)自動(dòng)控制、數(shù)控機(jī)床、掌上型電腦、各種智能IC卡、第二代身份證驗(yàn)證、公共交通收費(fèi)系統(tǒng)、醫(yī)藥系統(tǒng)以及軍事等領(lǐng)域得到廣泛應(yīng)用,已成為我國信息化帶動(dòng)工業(yè)化,工業(yè)化促進(jìn)信息化 發(fā)展的國民經(jīng)濟(jì)新的增長(zhǎng)點(diǎn)在我國2006 年嵌入式軟件產(chǎn)品占全年全部軟件產(chǎn)值的23%還多.據(jù)調(diào)查顯示,目前嵌入式系統(tǒng)涉及的領(lǐng)域中,PDA占30%,手機(jī)占18%,數(shù)字信息家電占21%,工業(yè)控制5%,服務(wù)行業(yè)占2%,交通系統(tǒng)占2%,其他占22%.目前最值得關(guān)注的嵌入式產(chǎn)品市場(chǎng)主要有如下幾類:
1.信息家電
后PC時(shí)代,家用電器將向數(shù)字化和網(wǎng)絡(luò)化發(fā)展,電視機(jī)、微波爐、數(shù)字電話等都將嵌入微處理器并通過家庭網(wǎng)關(guān)與Internet連接,構(gòu)成家庭信息網(wǎng)絡(luò).屆時(shí), 人們可以遠(yuǎn)程控制家里的電器設(shè)備,可以實(shí)現(xiàn)遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育, 可以視頻點(diǎn)播,實(shí)現(xiàn)交互式電視,還可以提供各種網(wǎng)上服務(wù)等.一般可認(rèn)為,那些低單價(jià)、操作簡(jiǎn)單、可通過因特網(wǎng)發(fā)送或獲取信息, 將逐步分割或替代PC 的某些功能,并能
與其它信息產(chǎn)品交換資料或信息的產(chǎn)品可統(tǒng)稱為信息家電.信息家電可以提供安全防范、消費(fèi)電子產(chǎn)品的智能控制、交互式智能控制、家庭信息服務(wù)、自動(dòng)維護(hù)、家庭醫(yī)療保健等服務(wù).而這些服務(wù)中的各類數(shù)字融合產(chǎn)品,都離不開嵌入式系統(tǒng)的支持,可以說,嵌入式系統(tǒng)是家庭信息網(wǎng)絡(luò)、IT 融合的重要技術(shù)基礎(chǔ).具有豐富功能、高度集成的智能數(shù)字終端將是未來的發(fā)展方向.智能數(shù)字終端和各類數(shù)字融合產(chǎn)品具有十分廣闊的市場(chǎng)前景.2.移動(dòng)計(jì)算設(shè)備
移動(dòng)計(jì)算設(shè)備包括手機(jī)、PDA、掌上電腦等各種移動(dòng)設(shè)備.中國擁有最大的手機(jī)用戶,市場(chǎng)巨大,而掌上電腦或PDA 由于易于使用、攜帶方便、價(jià)格便宜,近幾年在我國得到了快速地發(fā)展.PDA 與手機(jī)也已呈現(xiàn)融合趨勢(shì), 智能手機(jī)正在成為今后的發(fā)展趨勢(shì)方向, 智能手機(jī)就是一臺(tái)嵌入式系統(tǒng).智能手機(jī)要存放更多的軟件和各種大容量的多媒體文件,必定要有操作系統(tǒng), 目前智能手機(jī)操作系統(tǒng)主要有開源的Linux、微軟公司的Windows CE系統(tǒng)和 Symbain 公司的 SymbainOs 系統(tǒng).智能手機(jī)的功能越來越異常強(qiáng)大,為智能手機(jī)開發(fā)的各種功能程序已經(jīng)在互聯(lián)網(wǎng)上盛行.通過安裝這些軟件,可大大擴(kuò)展手機(jī)的功能.3.網(wǎng)絡(luò)設(shè)備
各種網(wǎng)絡(luò)設(shè)備包括路由器交換機(jī)、Web Server、網(wǎng)絡(luò)接入網(wǎng)關(guān)等, 都是一類嵌入式系統(tǒng).隨著下一代Internet 的研發(fā)成功和投入使用,必然會(huì)有更多更強(qiáng)的嵌入式網(wǎng)絡(luò)設(shè)備和產(chǎn)品面世,這意味著巨大的嵌入式網(wǎng)絡(luò)設(shè)備和產(chǎn)品市場(chǎng)需求.嵌入式系統(tǒng)也在向無線網(wǎng)絡(luò)發(fā)展,無線網(wǎng)絡(luò)已開發(fā)集成了802.11 芯片組.無線嵌入式網(wǎng)絡(luò)有望部署到住宅及商用建筑自動(dòng)化、工業(yè)設(shè)備監(jiān)測(cè)以及其他無線傳感和控制應(yīng)用中.ZigBee 聯(lián)盟已經(jīng)為低成本、低功率的無線嵌入式網(wǎng)絡(luò)制定了標(biāo)準(zhǔn).這項(xiàng)標(biāo)準(zhǔn)定義了在IEEE 802.15.4 標(biāo)準(zhǔn)媒體接入控制層和物理層上的網(wǎng)絡(luò)及支持的應(yīng)用服務(wù).這項(xiàng)標(biāo)準(zhǔn)很適合照明、供暖、冷卻控制、工業(yè)建筑、自動(dòng)化以及醫(yī)療設(shè)備監(jiān)測(cè)等方方面面的應(yīng)用.ZigBee聯(lián)盟的長(zhǎng)期目標(biāo)是能夠建立基于互操作平臺(tái)和配置文件的可伸縮、低成本的嵌入式基礎(chǔ)架構(gòu).4.自動(dòng)化與測(cè)控儀器儀表
測(cè)控儀器儀表種類繁多,我國每年光進(jìn)口的醫(yī)療設(shè)備就上億, 每個(gè)醫(yī)療設(shè)備就是一套嵌入式系統(tǒng).測(cè)控儀器儀表更是遍及大中小企業(yè),新型的測(cè)控儀器儀表無一不是嵌入式系統(tǒng).在工控和仿真領(lǐng)域,嵌入式設(shè)備也早已得到廣泛應(yīng)用.嵌入式系統(tǒng)在自動(dòng)化行業(yè)已有很多成功應(yīng)用案例,如數(shù)控機(jī)床控制系統(tǒng)、面向啤酒行業(yè)控制系統(tǒng)、水廠控制系統(tǒng)、縫紉機(jī)控制系統(tǒng)、可燃性氣體報(bào)警系統(tǒng)、智能建筑安防系統(tǒng)、自動(dòng)生產(chǎn)線分布式控制系統(tǒng)、變電站自動(dòng)化系統(tǒng)、自動(dòng)生產(chǎn)線檢測(cè)系統(tǒng)等.我國的工業(yè)生產(chǎn)需要完成智能化、數(shù)字化改造,智能控制設(shè)備、智能儀表、自動(dòng)控制等為嵌入式系統(tǒng)提供了巨大的市場(chǎng).工控、仿真、數(shù)據(jù)采集、軍用等領(lǐng)域一般都要求實(shí)時(shí)操作系統(tǒng)支持.在金融業(yè)、電力系統(tǒng)和服務(wù)業(yè),嵌入式也在發(fā)揮著越來越重要的作用.5.嵌入式技術(shù)在交通管理、環(huán)境監(jiān)測(cè)中的應(yīng)用
在交通系統(tǒng),嵌入式的作用也日益重要.汽車智能駕駛設(shè)備、汽車模擬駕駛器、汽車噴油泵調(diào)試臺(tái)、輪船智能駕駛設(shè)備等都面臨更新?lián)Q代.這類新型設(shè)備也都離不開嵌入式系統(tǒng).我國汽車業(yè)的發(fā)展必然為汽車電子的嵌入式系統(tǒng)應(yīng)用帶來良好商機(jī).嵌入式系統(tǒng)在交通指揮系統(tǒng)、高速公路收費(fèi)監(jiān)控、汽車自導(dǎo)航、GPS車載終端、電子警察、加油站和汽車檢測(cè)中的應(yīng)用都是非常廣泛的,有良好的市場(chǎng)前景.在環(huán)境監(jiān)測(cè)(包括水文資料實(shí)時(shí)監(jiān)測(cè), 防洪體系及水土質(zhì)量監(jiān)測(cè),堤壩安全,地震監(jiān)測(cè)網(wǎng),實(shí)時(shí)氣象信息網(wǎng),水源和空氣污染監(jiān)測(cè))中,嵌入式產(chǎn)品同樣有著廣泛的市場(chǎng)前景.三、嵌入式系統(tǒng)的組成 1.底層(硬件層)
需要你自己對(duì)于硬件相當(dāng)?shù)牧私猓軌颡?dú)立繪制PCB并進(jìn)行焊接,之后調(diào)試板子,做好電路板。比如sc2410,你需要繪制至少四層PCB電路板,其中ARM核心板是最難掌握的部分,外圍電路要注意各種走線技巧等等。繪制完P(guān)CB之后就需要你的焊接功夫。將元器件焊接在PCB上。最后調(diào)試電路板,這是這一層設(shè)計(jì)中的收尾工作,也是最具有挑戰(zhàn)性的工作。調(diào)試電路需要大量的經(jīng)驗(yàn),對(duì)于初學(xué)者來說,需要很強(qiáng)的電路知識(shí),對(duì)于硬件的性能以及應(yīng)用要非常了解才行。
2.中間層(驅(qū)動(dòng)層)
電路板已經(jīng)有現(xiàn)成的。你需要編程使一個(gè)死的板子,活起來,就是把程序下載進(jìn)去,能叫板子跑起來。這里需要你對(duì)于ARM芯片的結(jié)構(gòu)有很好的掌握,要會(huì)讀芯片資料(datasheet)通常都是英文的。了解其內(nèi)部資源我們就可以進(jìn)行驅(qū)動(dòng)編程了。我們平時(shí)所使用單片機(jī),一般都是寫好的程序,各個(gè)管腳在什么時(shí)序下輸出什么信號(hào)(1或0),來操作實(shí)現(xiàn)相應(yīng)借口的外圍設(shè)備,比如液晶屏、LED燈等。單片機(jī)也可以叫做簡(jiǎn)單的嵌入式。原理相同。ARM也可以向單片機(jī)一樣使用,但我們更多的是要對(duì)ARM加入操作系統(tǒng)的,這才是我們最常說的嵌入式。加入操作系統(tǒng)了以后,芯片對(duì)于個(gè)個(gè)資源的調(diào)度有了更系統(tǒng)的統(tǒng)籌規(guī)劃,可以更充分的利用ARM芯片的系統(tǒng)資源,提高性能,使資源合理分配。而通常的驅(qū)動(dòng)是在操作系統(tǒng)下工作的。比如基于LINUX或WINCE等等下的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序是鏈接硬件平臺(tái)和操作系統(tǒng)的紐帶,當(dāng)然編寫驅(qū)動(dòng)要同時(shí)兼顧操作系統(tǒng)特點(diǎn)和硬件接口的特點(diǎn)。做驅(qū)動(dòng)的開發(fā),需要對(duì)于軟硬件都要有所了解,其中更偏重操作系統(tǒng)的理解。這部分工作也是最難做的。
3. 上層(應(yīng)用層):
應(yīng)用層,即我們所說的軟件編程了。就相我們手機(jī)里QQ和飛信一樣,我們需要根據(jù)我們手機(jī)的操作系統(tǒng)來編寫應(yīng)用程序。對(duì)于各個(gè)開發(fā)板,我們同樣需要根據(jù)它里邊的系統(tǒng)進(jìn)行應(yīng)用開發(fā)。這部分,應(yīng)該是幾乎脫離硬件了,我們只需簡(jiǎn)單的了解硬件即可。我們只需深刻理解操作系統(tǒng)的中各個(gè)系統(tǒng)函數(shù)和接口函數(shù),即可進(jìn)行開發(fā)。需要很強(qiáng)的C++水平。
四、嵌入式系統(tǒng)的設(shè)計(jì)特點(diǎn)
嵌入式系統(tǒng)的開發(fā)通常采用“宿主機(jī)/目標(biāo)機(jī)”方式。
宿主機(jī)(Host)是一臺(tái)通用的計(jì)算機(jī),一般是PC機(jī)。它通過串口或網(wǎng)絡(luò)連接與目標(biāo)機(jī)進(jìn)行通信。
目標(biāo)機(jī)(Target)常用在嵌入式系統(tǒng)的開發(fā)過程期間。目標(biāo)機(jī)可以是嵌入式系統(tǒng)的實(shí)際運(yùn)行環(huán)境,也可以是能替代實(shí)際環(huán)境的仿真系統(tǒng)。
首先,利用宿主機(jī)上豐富的設(shè)備資源以及良好的開發(fā)環(huán)境來開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件。
然后,通過UART接口或Ethernet接口將交叉編譯生成的目標(biāo)代碼傳輸并下載到目標(biāo)機(jī)上,并用交叉調(diào)試器在實(shí)時(shí)內(nèi)核/操作系統(tǒng)或監(jiān)控程序的支持下進(jìn)行實(shí)時(shí)分析和調(diào)試。
最后,目標(biāo)機(jī)在特定的環(huán)境下運(yùn)行
五、體會(huì)
通過學(xué)習(xí)嵌入式的課程使我了解了什么是嵌入式,所謂嵌入式系統(tǒng)是一種專用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通過實(shí)訓(xùn)課的訓(xùn)練不僅使我知道了嵌入式系統(tǒng)的組成及應(yīng)用,而且拓展了自己的知識(shí)和動(dòng)手能力也對(duì)自己今后的發(fā)展有很大的的幫助。
第二篇:嵌入式報(bào)告
目錄
引言...............................................................................................................................2 1.ARM概述.................................................................................................................2 2.芯片介紹..................................................................................................................2
2.1............................................................................................................................2 3.顯示方式選擇方案與論證......................................................................................3 4.硬件設(shè)計(jì)..................................................................................................................4
4.1............................................................................................................................4 4.2 電路原理圖.....................................................................................................4 5.軟件設(shè)計(jì)..................................................................................................................5 6.心得體會(huì)..................................................................................................................6 參考文獻(xiàn).......................................................................................................................7 引言
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,嵌入式產(chǎn)品日益廣泛地滲透到各個(gè)行業(yè)和領(lǐ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)兩部分,硬件是構(gòu)成軟件的基本運(yùn)行環(huán)境。
到目前為止,ARM微處理器及技術(shù)的應(yīng)用幾乎已經(jīng)深入到各個(gè)領(lǐng)域,如工業(yè)控制領(lǐng)域,無線通訊領(lǐng)域,網(wǎng)絡(luò)應(yīng)用,消費(fèi)類電子產(chǎn)品。此外,ARM微處理器及技術(shù)還應(yīng)用到許多不同的領(lǐng)域,并會(huì)在將來取得更加廣泛的應(yīng)用。
1.ARM概述
ARM(Advanced RISC Machines),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。
ARM 微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場(chǎng),基于ARM 技術(shù)的微處理器應(yīng)已經(jīng)滲入到我們生活的各個(gè)方面。
2.芯片介紹
2.1LPC2132簡(jiǎn)介
芯片概述:
LPC2131/2132/2138是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的32/16 位ARM7TDMI-STM CPU 的微控制器,并帶有32kB、64kB、512 kB 的嵌入的高速Flash 存儲(chǔ)器。128 位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。
LPC2132G功能方框圖如圖2-1所示
圖2-1 LPC2132G功能方框圖
本設(shè)計(jì)使用2塊4位共陰LED數(shù)碼管作為顯示模塊。
3.顯示方式選擇方案與論證
采用LED數(shù)碼管動(dòng)態(tài)掃描顯示方法,是指一位一位地輪流點(diǎn)亮每位顯示器(稱為掃描),即每個(gè)數(shù)碼管的位選被輪流選中,多個(gè)數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對(duì)位選選中的數(shù)碼管有效。對(duì)于每一位顯示器來說,每隔一段時(shí)間點(diǎn)亮一次。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān)。通過調(diào)整電流和時(shí)間參數(shù),當(dāng)動(dòng)態(tài)掃描頻率加大到一定范圍時(shí)可以既保證亮度,又保證顯示。動(dòng)態(tài)顯示對(duì)IO的利用率相對(duì)教高。
4.硬件設(shè)計(jì)
4.1 電路設(shè)計(jì)原理
RSPI是一種高速的、全雙工、同步的通信總線,且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便。SPI還是一個(gè)數(shù)據(jù)交換協(xié)議:因?yàn)镾PI的數(shù)據(jù)輸入和輸出線獨(dú)立,所以允許同時(shí)完成數(shù)據(jù)的輸入和輸出。不同的SPI設(shè)備的實(shí)現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時(shí)間不同,在時(shí)鐘信號(hào)上沿或下沿采集有不同定義。
SPI總線工作的四種方式如圖4-1所示,其中使用的最為廣泛的是SPI0和SPI3方式(實(shí)線表示):
圖4-1 SPI總線四種工作方式
SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性對(duì)傳輸協(xié)議沒有重大的影響:CPOL=0時(shí)串行同步時(shí)鐘的空閑狀態(tài)為低電平; CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平;
時(shí)鐘相位能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸:CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣; CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。
SPI主模塊和與之通信的外設(shè)備時(shí)鐘相位和極性應(yīng)該一致。4.2 電路原理圖
P1.24-P1.31口作為數(shù)碼管數(shù)據(jù)輸出口,外接上拉電阻后分別連接到兩個(gè)數(shù)碼管的段選端上。P0.0-P1.7口作為數(shù)碼管位選控制口,分別接到2個(gè)4位共陰數(shù)碼管的共8個(gè)位選端上。另外,LPC2138的1-4、6、8、10、12腳接+3.3V電源。14、16、18、20腳接+5V電源。5、7、9、11、13、15、17、19、37-40腳接GND。電路原理圖如圖4-2所示。
圖4-2 總電路原理圖
5.軟件設(shè)計(jì)
程序流程圖如圖5-1所示
圖5-1 程序流程圖
6.心得體會(huì)
本次嵌入式系統(tǒng)設(shè)計(jì)有學(xué)生自主命題,開放性大,范圍廣但是這同時(shí)對(duì)于每一個(gè)同學(xué)來說都是一個(gè)不小的挑戰(zhàn)。
此次設(shè)計(jì)為基于嵌入式ARM的電子秒表的設(shè)計(jì),在設(shè)計(jì)中以LPC2132為核心的核心板來設(shè)計(jì)電子秒表。在設(shè)計(jì)中為解決問題需自己查閱資料,是自己更多更深入的去了解和使用嵌入式系統(tǒng)來完成設(shè)計(jì),加深了對(duì)嵌入式系統(tǒng)的認(rèn)識(shí),也激起了自己對(duì)嵌入式系統(tǒng)的興趣。
本次設(shè)計(jì)的難點(diǎn)關(guān)鍵在于對(duì)于ARM系統(tǒng)人士的不足,對(duì)于嵌入式系統(tǒng)的不了解,以及對(duì)于各種芯片的使用方法不能靈活運(yùn)用使得設(shè)計(jì)中問題不斷。
參考文獻(xiàn)
[1] 崔更申,孫安青.ARM嵌入式系統(tǒng)開發(fā)與實(shí)踐[M].北京:中國電力出版社,2008 [2] 張綺文.ARM 嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,[3] 劉同法,肖志剛.ARM Cortex-M3內(nèi)核微控制器快帶入門與應(yīng)用.北京:北京航空航天大學(xué)出版社,2009 [4] 三恒星科技.ARM 7易學(xué)通[M].北京:人民郵電出版社,2006 [5] Steve Furber著;田澤等譯.ARM SoC體系結(jié)構(gòu)[M].北京:北京航空航天大學(xué)出版社,2002 [6] 滕英巖.嵌入式系統(tǒng)開發(fā)基礎(chǔ)——基于ARM位處理器和Linux操作系統(tǒng)[M].北京:電子工業(yè)出版社,2008 [7] http://baike.baidu.com/view/11200.htm
[9] http://wenku.baidu.com/view/ef0be52b7375a417866f8f46.html
第三篇:報(bào)告嵌入式心得
專題課學(xué)習(xí)至今,學(xué)到了很多東西。而找工作時(shí),各種筆試面試中,深刻地體會(huì)到“嵌入式系統(tǒng)”的重要性。這讓我更堅(jiān)定了學(xué)好嵌入式系統(tǒng)的想法。
嵌入式系統(tǒng)這門課和C語言頗有關(guān)聯(lián),這也重新夯實(shí)了我的C語言基礎(chǔ)。而良好的C語言能力,也是學(xué)習(xí)嵌入式的必備基礎(chǔ)。我決定在學(xué)好基礎(chǔ)后,在對(duì)嵌入式進(jìn)行擴(kuò)展學(xué)習(xí)。
據(jù)了解嵌入式學(xué)習(xí)主要有兩方面:軟件和硬件。嵌入式軟件的比較多,而做硬件不多,但多是高手。嵌入式的軟件又有好多種,主要是針對(duì)不同CPU的,但是基本都是用C語言的,還有極少的匯編,主要在BOOT啟動(dòng)、初始代碼中。目前來說,嵌入式Linux比較流行,安卓就是基于linux內(nèi)核的。wince、Vxworks什么的貌似不多,特別是vxworks。
我也對(duì)嵌入式系統(tǒng)的應(yīng)用方面進(jìn)行了了解。現(xiàn)在在市場(chǎng)還是蠻吃香的,可從事的就業(yè)方向還是蠻多的比如:消費(fèi)類電子(手機(jī)、PDA、游戲機(jī))、數(shù)字 多媒體(網(wǎng)絡(luò)點(diǎn)播、機(jī)頂盒)、汽車電子(導(dǎo)航儀)、醫(yī)療電子、工業(yè)控制等行業(yè)。
嵌入式系統(tǒng)是二十一世紀(jì)科技領(lǐng)域的重大創(chuàng)新,必將推進(jìn)全球經(jīng)濟(jì)社會(huì)高速發(fā)展,實(shí)現(xiàn)人類發(fā)展史上的重大突破。科學(xué)在發(fā)展,人類在進(jìn)步,隨著一代又一代IT精英們的不斷努力,未來的嵌入式系統(tǒng)一定會(huì)是更加方便人們的工作、學(xué)習(xí)、生活的好伴侶。
據(jù)了解,嵌入式市場(chǎng)有非常大的機(jī)會(huì),預(yù)計(jì)到2012年將有30億臺(tái)嵌入式設(shè)備交貨。這樣一個(gè)“爆炸性”的增長(zhǎng)主要是由于終端用戶越來越基于連接性的用戶體驗(yàn)及應(yīng)用程序來購買具有智能、連接性、服務(wù)導(dǎo)向的設(shè)備。
附
嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置(”devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專業(yè)計(jì)算機(jī)系統(tǒng)。
本文從嵌入式系統(tǒng)的 等方面來概要性地介紹嵌入式系統(tǒng)。
1.嵌入式系統(tǒng)的概念
1.1嵌入式系統(tǒng)的定義
根據(jù)IEEE(電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專業(yè)計(jì)算機(jī)系統(tǒng)。
1.2 嵌入式系統(tǒng)的特點(diǎn)
1.系統(tǒng)內(nèi)核小。由于嵌入式系統(tǒng)一般是應(yīng)用于小型電子裝置的,系統(tǒng)的資源相對(duì)有限,所以內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小得多。
2.專用性強(qiáng)。嵌入式系統(tǒng)的個(gè)性化很強(qiáng),其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,一般要針對(duì)硬件進(jìn)行系統(tǒng)的移植,即使在同一品牌、同一系列的產(chǎn)品中也需要根據(jù)系統(tǒng)硬件的變化和增減不斷進(jìn)行修改。同時(shí)針對(duì)不同的任務(wù),往往需要對(duì)系統(tǒng)進(jìn)行較大更改,程序的編譯下載要和系統(tǒng)相結(jié)合,這種修改和通用軟件的“升級(jí)”是完全兩個(gè)概念。
3.系統(tǒng)精簡(jiǎn)。嵌入式系統(tǒng)一般沒有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能設(shè)計(jì)及實(shí)現(xiàn)上過于復(fù)雜,這樣一方面利于控制系統(tǒng)成本,同時(shí)也利于實(shí)現(xiàn)系統(tǒng)安全。
4.高實(shí)時(shí)性的系統(tǒng)軟件(OS)是嵌入式軟件的基本要求。而且軟件要求固態(tài)存儲(chǔ),以提高速度;軟件代碼要求高質(zhì)量和高可靠性。
5.嵌入式軟件開發(fā)要想走向標(biāo)準(zhǔn)化,就必須使用多任務(wù)的操作系統(tǒng)。嵌入式系統(tǒng)的應(yīng)用程序可以沒有操作系統(tǒng)直接在芯片上運(yùn)行;但是為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS(Real-Time Operating System)開發(fā)平臺(tái),這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開發(fā)時(shí)間,保障軟件質(zhì)量。
6.嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境。由于其本身不具備自舉開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對(duì)其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā),這些工具和環(huán)境一般是基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種邏輯分析儀、混合信號(hào)示波器等。開發(fā)時(shí)往往有主機(jī)和目標(biāo)機(jī)的概念,主機(jī)用于程序的開發(fā),目標(biāo)機(jī)作為最后的執(zhí)行機(jī),開發(fā)時(shí)需要交替結(jié)合進(jìn)行。
1.3幾個(gè)關(guān)鍵概念的解釋
1、嵌入式處理器
嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。范圍極其廣闊,從最初的4位處理器,目前仍在大規(guī)模應(yīng)用的8位單片機(jī),到最新的受到廣泛青睞的32位,64位嵌入式CPU。
2、實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)操作系統(tǒng)(RTOS-Real Time Operating System):
嵌入式系統(tǒng)目前最主要的組成部分。根據(jù)操作系統(tǒng)的工作特性,實(shí)時(shí)是指物理進(jìn)程的真實(shí)時(shí)間。實(shí)時(shí)操作系統(tǒng)具有實(shí)時(shí)性,能從硬件方面支持實(shí)時(shí)控制系統(tǒng)工作的操作系統(tǒng)。其中實(shí)時(shí)性是第一要求,需要調(diào)度一切可利用的資源完成實(shí)時(shí)控制任務(wù),其次才著眼于提高計(jì)算機(jī)系統(tǒng)的使用效率,重要特點(diǎn)是要滿足對(duì)時(shí)間的限制和要求。
3、分時(shí)操作系統(tǒng)
對(duì)于分時(shí)操作系統(tǒng),軟件的執(zhí)行在時(shí)間上的要求,并不嚴(yán)格,時(shí)間上的錯(cuò)誤,一般不會(huì)造成災(zāi)難性的后果。目前分時(shí)系統(tǒng)的強(qiáng)項(xiàng)在于多任務(wù)的管理,而實(shí)時(shí)操作系統(tǒng)的重要特點(diǎn)是具有系統(tǒng)的可確定性,即系統(tǒng)能對(duì)運(yùn)行情況的最好和最壞等的情況能做出精確的估計(jì)。
4、多任務(wù)操作系統(tǒng)
系統(tǒng)支持多任務(wù)管理和任務(wù)間的同步和通信,傳統(tǒng)的單片機(jī)系統(tǒng)和DOS系統(tǒng)等對(duì)多任務(wù)支持的功能很弱,而目前的Windows是典型的多任務(wù)操作系統(tǒng)。在嵌入式應(yīng)用領(lǐng)域中,多任務(wù)是一個(gè)普遍的要求。
5、實(shí)時(shí)操作系統(tǒng)中的重要概念
系統(tǒng)響應(yīng)時(shí)間(System response time):系統(tǒng)發(fā)出處理要求到系統(tǒng)給出應(yīng)答信號(hào)的時(shí)間。
任務(wù)換道時(shí)間(Context-switching time):任務(wù)之間切換而使用的時(shí)間。
中斷延遲(Interrupt latency):機(jī)器接收到中斷信號(hào)到操作系統(tǒng)作出響應(yīng),并完成換道轉(zhuǎn)入中斷程序的時(shí)間。
6、實(shí)時(shí)操作系統(tǒng)的工作狀態(tài)
實(shí)時(shí)系統(tǒng)中的任務(wù)有四種狀態(tài):運(yùn)行(Executing),就緒(Ready),掛起(Suspended),冬眠(Dormant)。
運(yùn)行:獲得CPU控制權(quán)。
就緒:進(jìn)入任務(wù)等待隊(duì)列,通過調(diào)度轉(zhuǎn)為運(yùn)行狀態(tài)。
掛起:任務(wù)發(fā)生阻塞,移出任務(wù)等待隊(duì)列,等待系統(tǒng)實(shí)時(shí)事件的發(fā)生而喚醒,從而轉(zhuǎn)為就緒或運(yùn)行。
冬眠:任務(wù)完成或錯(cuò)誤等原因被清除的任務(wù),也可以認(rèn)為是系統(tǒng)中不存在的任務(wù)。
任何時(shí)刻系統(tǒng)中只能有一個(gè)任務(wù)在運(yùn)行狀態(tài),各任務(wù)按級(jí)別通過時(shí)間片分別獲得對(duì)CPU的訪問權(quán)。
2.嵌入式系統(tǒng)的組成
有關(guān)嵌入式系統(tǒng)的組成非常多,限于篇幅,本文只介紹其中機(jī)電最關(guān)鍵概念。嵌入式系統(tǒng)的組成
1)嵌入式系統(tǒng)硬件層。一般包括有:嵌入式處理器、存儲(chǔ)器、I/O系統(tǒng)和外設(shè) 2)嵌入式系統(tǒng)的軟件系統(tǒng)。包括:操作系統(tǒng)、應(yīng)用軟件
嵌入式系統(tǒng)的開發(fā)工具(1)硬件開發(fā)工具包括:仿真器等;其它(示波器等)(2)軟件開發(fā)工具包括:編譯、連接、定位軟件,通常使用C語言;調(diào)試軟件。
3)中間層。它將系統(tǒng)軟件與底層硬件部分隔離,使得系統(tǒng)的底層設(shè)備驅(qū)動(dòng)程序與硬件無關(guān)。4)應(yīng)用層
一個(gè)嵌入式系統(tǒng)裝置一般都由嵌入式計(jì)算機(jī)系統(tǒng)和執(zhí)行裝置組成,如圖1-1所示,嵌入式計(jì)算機(jī)系統(tǒng)是整個(gè)嵌入式系統(tǒng)的核心,由硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層組成。執(zhí)行裝置也稱為被控對(duì)象,它可以接受嵌入式計(jì)算機(jī)系統(tǒng)發(fā)出的控制命令,執(zhí)行所規(guī)定的操作或任務(wù)。
2.1硬件層
硬件層中包含嵌入式微處理器、存儲(chǔ)器(SDRAM、ROM、Flash等)、通用設(shè)備接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式處理器基礎(chǔ)上添加電源電路、時(shí)鐘電路和存儲(chǔ)器電路,就構(gòu)成了一個(gè)嵌入式核心控制模塊。其中操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中。
2.1.1、嵌入式微處理器
嵌入式系統(tǒng)硬件層的核心是嵌入式微處理器,嵌入式微處理器與通用CPU最大的不同在于嵌入式微處理器大多工作在為特定用戶群所專用設(shè)計(jì)的系統(tǒng)中,它將通用CPU許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)在設(shè)計(jì)時(shí)趨于小型化,同時(shí)還具有很高的效率和可靠性。
嵌入式微處理器的體系結(jié)構(gòu)可以采用馮諾依曼體系或哈佛體系結(jié)構(gòu);指令系統(tǒng)可以選用精簡(jiǎn)指令系統(tǒng)(Reduced Instruction Set Computer,RISC)和復(fù)雜指令系統(tǒng)CISC(Complex Instruction Set Computer,CISC)。RISC計(jì)算機(jī)在通道中只包含最有用的指令,確保數(shù)據(jù)通道快速執(zhí)行每一條指令,從而提高了執(zhí)行效率并使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單。
嵌入式微處理器有各種不同的體系,即使在同一體系中也可能具有不同的時(shí)鐘頻率和數(shù)據(jù)總線狂度,或集成了不同的外設(shè)和接口。據(jù)不完全統(tǒng)計(jì),目前全世界嵌入式微處理器已經(jīng)超過1000多種,體系結(jié)構(gòu)有30多個(gè)系列,其中主流的體系有ARM、MIPS、PowerPC、X86和SH等。但與全球PC市場(chǎng)不同的是,沒有一種嵌入式微處理器可以主導(dǎo)市場(chǎng),僅以32位的產(chǎn)品而言,就有100種以上的嵌入式微處理器。嵌入式微處理器的選擇是根據(jù)具體的應(yīng)用而決定的。
2.1.2、存儲(chǔ)器
嵌入式系統(tǒng)需要存儲(chǔ)器來存放和執(zhí)行代碼。嵌入式系統(tǒng)的存儲(chǔ)器包含Cache、主存和輔助存儲(chǔ)器。
1.Cache
Cache是一種容量小、速度快的存儲(chǔ)器陣列它位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時(shí)間微處理器使用最多的程序代碼和數(shù)據(jù)。
在嵌入式系統(tǒng)中Cache全部集成在嵌入式微處理器內(nèi),可分為數(shù)據(jù)Cache、指令Cache或混合Cache,Cache的大小依不同處理器而定。一般中高檔的嵌入式微處理器才會(huì)把Cache集成進(jìn)去。
2.主存
主存是嵌入式微處理器能直接訪問的寄存器,用來存放系統(tǒng)和用戶的程序及數(shù)據(jù)。它可以位于微處理器的內(nèi)部或外部,其容量為256KB~1GB,根據(jù)具體的應(yīng)用而定,一般片內(nèi)存儲(chǔ)器容量小,速度快,片外存儲(chǔ)器容量大。
常用作主存的存儲(chǔ)器有:
ROM類 NOR Flash、EPROM和PROM等。
RAM類 SRAM、DRAM和SDRAM等。
其中NOR Flash 憑借其可擦寫次數(shù)多、存儲(chǔ)速度快、存儲(chǔ)容量大、價(jià)格便宜等優(yōu)點(diǎn),在嵌入式領(lǐng)域內(nèi)得到了廣泛應(yīng)用。
3.輔助存儲(chǔ)器
輔助存儲(chǔ)器用來存放大數(shù)據(jù)量的程序代碼或信息,它的容量大、但讀取速度與主存相比就慢的很多,用來長(zhǎng)期保存用戶的信息。
2.1.3、通用設(shè)備接口和I/O接口
嵌入式系統(tǒng)和外界交互需要一定形式的通用設(shè)備接口,如A/D、D/A、I/O等,外設(shè)通過和片外其他設(shè)備的或傳感器的連接來實(shí)現(xiàn)微處理器的輸入/輸出功能。
2.2軟件系統(tǒng)
系統(tǒng)軟件層由實(shí)施多任務(wù)操作系統(tǒng)(Real-time Operation System,RTOS)、文件系統(tǒng)、圖形用戶接口(Graphic User Interface,GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái)。
嵌入式實(shí)時(shí)操作系統(tǒng):
實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái)。RTOS是一段嵌入在目標(biāo)代碼中的程序,系統(tǒng)復(fù)位后首先執(zhí)行,相當(dāng)于用戶的主程序,其他程序都建立在RTOS之上。
2.3中間層
硬件層與軟件層之間為中間層,也稱為硬件抽象層(Hardware Abstract Layer,HAL)或板級(jí)支持包(Board Support Package,BSP),它將系統(tǒng)上層軟件與底層硬件分離開來,使系統(tǒng)的底層驅(qū)動(dòng)程序與硬件無關(guān),上層軟件開發(fā)人員無需關(guān)心底層硬件的具體情況,根據(jù)BSP 層提供的接口即可進(jìn)行開發(fā)。該層一般包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能。
BSP具有以下兩個(gè)特點(diǎn):
硬件相關(guān)性:因?yàn)榍度胧綄?shí)時(shí)系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,而作為上層軟 件與硬件平臺(tái)之間的接口,BSP需要為操作系統(tǒng)提供操作和控制具體硬件的方法。
操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。
3.嵌入式系統(tǒng)的開發(fā)
3.1嵌入式兩種開發(fā)
硬件,主要使用語言是C語言和匯編,例如做dsp開發(fā),做驅(qū)動(dòng)開發(fā),這類的開發(fā)對(duì)硬件要求比較高,短期內(nèi)比較難掌握,除非是專業(yè)人士,另外,這類開發(fā)的就業(yè)機(jī)會(huì)比較少,因?yàn)閲鴥?nèi)的硬件設(shè)計(jì)力量很弱,稍復(fù)雜的硬件都交給國外公司設(shè)計(jì),所以大學(xué)生找這樣的工作很難,這也是為什么很多這類的畢業(yè)生都轉(zhuǎn)行去做應(yīng)用層的軟件開發(fā)或者做網(wǎng)絡(luò)維護(hù)之類的工作了。
軟件,主要基于嵌入式操作系統(tǒng),例如Symbian、Linux、Windows mobile、Android等等,開發(fā)人員主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開發(fā)。特點(diǎn)是:比較容易上手學(xué)習(xí),就業(yè)機(jī)會(huì)多,因?yàn)榍度胧皆O(shè)備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統(tǒng)的最主要工作。越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì),所以需要大量的研發(fā)人員,而且就業(yè)前景也非常的看好。
3.2嵌入式系統(tǒng)開發(fā)生命周期
硬件與軟件將同時(shí)進(jìn)行開發(fā)。理解硬件與軟件功能相互之間的關(guān)系及界限有助于確保設(shè)計(jì)要求得到完整正確的理解和實(shí)現(xiàn)。
早在設(shè)計(jì)要求的定義與分析階段,就必須分配系統(tǒng)仿真、原型設(shè)計(jì)和行為建模結(jié)果、一旦分配結(jié)束,就可以立即著手具體的設(shè)計(jì)和實(shí)現(xiàn)。實(shí)時(shí)系統(tǒng)開發(fā)中軟硬件的并行設(shè)計(jì)會(huì)使用到各種分析技術(shù),包括:
1.硬件與軟件仿真;
2.硬件/軟件協(xié)同仿真;
3.可調(diào)度的建模技術(shù),如速率恒定分析;
4.原型設(shè)計(jì)和漸進(jìn)式開發(fā)。
低層仿真可以用來為總線寬度和數(shù)據(jù)流程建模,這對(duì)性能評(píng)估是非常有用的。高層仿真可以滿足功能的交互,并促成硬件/軟件權(quán)衡研究及有效性設(shè)計(jì)。
4.嵌入式系統(tǒng)的現(xiàn)狀與發(fā)展
發(fā)展現(xiàn)狀:
隨著信息化,智能化,網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)技術(shù)也將獲得廣闊的發(fā)展空間。
硬件方面,不僅有各大公司的微處理器芯片,還有用于學(xué)習(xí)和研發(fā)的各種配套開發(fā)包。目前低層系統(tǒng)和硬件平臺(tái)經(jīng)過若干年的研究,已經(jīng)相對(duì)比較成熟,實(shí)現(xiàn)各種功能的芯片應(yīng)有盡有。而且巨大的市場(chǎng)需求給我們提供了學(xué)習(xí)研發(fā)的資金和技術(shù)力量。
從軟件方面講,也有相當(dāng)部分的成熟軟件系統(tǒng)。國外商品化的嵌入式實(shí)時(shí)操作系統(tǒng),已進(jìn)入我國市場(chǎng)的有WindRiver、Microsoft、QNX和Nuclear等產(chǎn)品。
發(fā)展趨勢(shì):
信息時(shí)代,數(shù)字時(shí)代使得嵌入式產(chǎn)品獲得了巨大的發(fā)展契機(jī),為嵌入式市場(chǎng)展現(xiàn)了美好的前景,同時(shí)也對(duì)嵌入式生產(chǎn)廠商提出了新的挑戰(zhàn),從中我們可以看出未來嵌入式系統(tǒng)的幾大發(fā)展趨勢(shì):。
1.嵌入式開發(fā)是一項(xiàng)系統(tǒng)工程,因此要求嵌入式系統(tǒng)廠商不僅要提供嵌入式軟硬件系統(tǒng)本身,同時(shí)還需要提供強(qiáng)大的硬件開發(fā)工具和數(shù)據(jù)庫支持。
目前很多廠商已經(jīng)充分考慮到這一點(diǎn),在主推系統(tǒng)的同時(shí),將開發(fā)環(huán)境也作為重點(diǎn)推廣。2.網(wǎng)絡(luò)互聯(lián)成為必然趨勢(shì)。
未來的嵌入式設(shè)備為了適應(yīng)網(wǎng)絡(luò)發(fā)展的要求,必然要求硬件上提供各種通信接口。傳統(tǒng)的單片機(jī)對(duì)于網(wǎng)絡(luò)支持不足,而新一代的嵌入式處理器已經(jīng)開始內(nèi)嵌網(wǎng)絡(luò)接口,支持更多協(xié)議。
3.精簡(jiǎn)系統(tǒng)內(nèi)核、算法,降低功耗和軟硬件成本。
未來的嵌入式產(chǎn)品是軟硬件緊密結(jié)合的設(shè)備,為了減低功耗和成本,需要設(shè)計(jì)者盡量精簡(jiǎn)系統(tǒng)內(nèi)核,只保留和系統(tǒng)功能緊密相關(guān)的軟硬件。
第四篇:嵌入式報(bào)告
題目:嵌入式系統(tǒng)學(xué)習(xí)心得
班級(jí):學(xué)號(hào):姓名:
1.嵌入式的發(fā)展 A.簡(jiǎn)單操作系統(tǒng)階段
20世紀(jì)80年代,隨著微電子工藝水平的提高,IC制造商開始把嵌入式應(yīng)用中所需要的微處理器、I/O接口、串行接口以及RAM、ROM等部件統(tǒng)統(tǒng)集成到一片VLSI中,制造出面向I/O設(shè)計(jì)的微控制器,并一舉成為嵌入式系統(tǒng)領(lǐng)域中異軍突起的新秀。與此同時(shí),嵌入式系統(tǒng)的程序員也開始基于一些簡(jiǎn)單的“操作系統(tǒng)”開發(fā)嵌入式應(yīng)用軟件,大大縮短了開發(fā)周期、提高了開發(fā)效率。
這一階段嵌入式系統(tǒng)的主要特點(diǎn)是:出現(xiàn)了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各種簡(jiǎn)單的嵌入式操作系統(tǒng)開始出現(xiàn)并得到迅速發(fā)展。此時(shí)的嵌入式操作系統(tǒng)雖然還比較簡(jiǎn)單,但已經(jīng)初步具有了一定的兼容性和擴(kuò)展性,內(nèi)核精巧且效率高,主要用來控制系統(tǒng)負(fù)載以及監(jiān)控應(yīng)用程序的運(yùn)行。
B.實(shí)時(shí)操作系統(tǒng)階段
20世紀(jì)90年代,在分布控制、柔性制造、數(shù)字化通信和信息家電等巨大需求的牽引下,嵌入式系統(tǒng)進(jìn)一步飛速發(fā)展,而面向?qū)崟r(shí)信號(hào)處理算法的DSP產(chǎn)品則向著高速度、高精度、低功耗的方向發(fā)展。隨著硬件實(shí)時(shí)性要求的提高,嵌入式系統(tǒng)的軟件規(guī)模也不斷擴(kuò)大,逐漸形成了實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS),并開始成為嵌入式系統(tǒng)的主流。
這一階段嵌入式系統(tǒng)的主要特點(diǎn)是:操作系統(tǒng)的實(shí)時(shí)性得到了很大改善,已經(jīng)能夠運(yùn)行在各種不同類型的微處理器上,具有高度的模塊化和擴(kuò)展性。此時(shí)的嵌入式操作系統(tǒng)已經(jīng)具備了文件和目錄管理、設(shè)備管理、多任務(wù)、網(wǎng)絡(luò)、圖形用戶界面(GUI)等功能,并提供了大量的應(yīng)用程序接口(API),從而使得應(yīng)用軟件的開發(fā)變得更加簡(jiǎn)單。
C.面向Internet階段
21世紀(jì)無疑將是一個(gè)網(wǎng)絡(luò)的時(shí)代,將嵌入式系統(tǒng)應(yīng)用到各種網(wǎng)絡(luò)環(huán)境中去的呼聲自然也越來越高。目前大多數(shù)嵌入式系統(tǒng)還孤立于Internet之外,隨著Internet的進(jìn)一步發(fā)展,以及Internet技術(shù)與信息家電、工業(yè)控制技術(shù)等的結(jié)合日益緊密,嵌入式設(shè)備與Internet的結(jié)合才是嵌入式技術(shù)的真正未來。
信息時(shí)代和數(shù)字時(shí)代的到來,為嵌入式系統(tǒng)的發(fā)展帶來了巨大的機(jī)遇,同時(shí)也對(duì)嵌入式系統(tǒng)廠商提出了新的挑戰(zhàn)。目前,嵌入式技術(shù)與Internet技術(shù)的結(jié)合正在推動(dòng)著嵌入式技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)的研究和應(yīng)用產(chǎn)生了如下新的顯著變化:
新的微處理器層出不窮,嵌入式操作系統(tǒng)自身結(jié)構(gòu)的設(shè)計(jì)更加便于移植,能夠在短時(shí)間內(nèi)支持更多的微處理器。
嵌入式系統(tǒng)的開發(fā)成了一項(xiàng)系統(tǒng)工程,開發(fā)廠商不僅要提供嵌入式軟硬件系統(tǒng)本身,同時(shí)還要提供強(qiáng)大的硬件開發(fā)工具和軟件支持包。
通用計(jì)算機(jī)上使用的新技術(shù)、新觀念開始逐步移植到嵌入式系統(tǒng)中,如嵌入式數(shù)據(jù)庫、移動(dòng)代理、實(shí)時(shí)CORBA等,嵌入式軟件平臺(tái)得到進(jìn)一步完善。
各類嵌入式Linux操作系統(tǒng)迅速發(fā)展,由于具有源代碼開放、系統(tǒng)內(nèi)核小、執(zhí)行效率高、網(wǎng)絡(luò)結(jié)構(gòu)完整等特點(diǎn),很適合信息家電等嵌入式系統(tǒng)的需要,目前已經(jīng)形成了能與Windows CE、Palm OS等嵌入式操作系統(tǒng)進(jìn)行有力競(jìng)爭(zhēng)的局面。網(wǎng)絡(luò)化、信息化的要求隨著Internet技術(shù)的成熟和帶寬的提高而日益突出,以往功能單一的設(shè)備如電話、手機(jī)、冰箱、微波爐等功能不再單一,結(jié)構(gòu)變得更加復(fù)雜,網(wǎng)絡(luò)互聯(lián)成為必然趨勢(shì)。
2.嵌入式的應(yīng)用
嵌入式系統(tǒng)主要用于各種信號(hào)處理與控制,目前已在國防、國民經(jīng)濟(jì)及社會(huì)生活各領(lǐng)域普遍采用,可用于企業(yè)、軍隊(duì)、辦公室、實(shí)驗(yàn)室以及個(gè)人家庭等各種場(chǎng)所。同時(shí),嵌入式系統(tǒng)作為數(shù)字化電子信息產(chǎn)品的核心,嵌入式計(jì)算機(jī)斷層成像系統(tǒng)已出口日本。
軍用
各種武器控制(火炮控制、導(dǎo)彈控制、智能炸彈制導(dǎo)引爆裝置)、坦克、艦艇、轟炸機(jī)等陸海空各種軍用電子裝備,雷達(dá)、電子對(duì)抗軍事通信裝備,野戰(zhàn)指揮作戰(zhàn)用各種專用設(shè)備等。
家用
各種信息家電產(chǎn)品,如數(shù)字電視機(jī),機(jī)頂盒,數(shù)碼相機(jī),VCD、DVD 音響設(shè)備,可視電話,家庭網(wǎng)絡(luò)設(shè)備,洗衣機(jī),電冰箱,智能玩具等。
工業(yè)用
各種智能測(cè)量?jī)x表、數(shù)控裝置、可編程控制器、控制機(jī)、分布式控制系統(tǒng)、現(xiàn)場(chǎng)總線儀表及控制系統(tǒng)、工業(yè)機(jī)器人、機(jī)電一體化機(jī)械設(shè)備、汽車電子設(shè)備等。商用
各類收款機(jī)、POS 系統(tǒng)、電子秤、條形碼閱讀機(jī)、商用終端、銀行點(diǎn)鈔機(jī)、IC 卡輸入設(shè)備、取款機(jī)、自動(dòng)柜員機(jī)、自動(dòng)服務(wù)終端、防盜系統(tǒng)、各種銀行專業(yè)外圍設(shè)備。
辦公用
復(fù)印機(jī)、打印機(jī)、傳真機(jī)、掃描儀、激光照排系統(tǒng)、安全監(jiān)控設(shè)備、手機(jī)、尋呼機(jī)、個(gè)人數(shù)字助理(PDA)、變頻空調(diào)設(shè)備、通信終端、程控交換機(jī)、網(wǎng)絡(luò)設(shè)備、錄音錄像及電視會(huì)議設(shè)備、數(shù)字音頻廣播系統(tǒng)等。
醫(yī)用電子設(shè)備
各種醫(yī)療電子儀器,X 光機(jī)、超聲診斷儀、計(jì)算機(jī)斷層成像系統(tǒng)、心臟起搏器、監(jiān)護(hù)儀、輔助診斷系統(tǒng)、專家系統(tǒng)等。
3.嵌入式的特點(diǎn)
嵌入式處理器的應(yīng)用軟件是實(shí)現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵,對(duì)嵌入式處理器系統(tǒng)軟件和應(yīng)用軟件的要求也和通用計(jì)算機(jī)有所不同,主要有以下幾點(diǎn):
(1)軟件要求固態(tài)化存儲(chǔ)為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或嵌入式微控制器本身中,而不是存貯于磁盤等載體中。
(2)軟件代碼要求高質(zhì)量、高可靠性盡管半導(dǎo)體技術(shù)的發(fā)展使處理器速度不斷提高、片上存儲(chǔ)器容量不斷增加,但在大多數(shù)應(yīng)用中,存儲(chǔ)空間仍然是寶貴的,還 存在實(shí)時(shí)性的要求。為此要求程序編寫和編譯工具的質(zhì)量要高,以減小程序二進(jìn)制代碼長(zhǎng)度、提高執(zhí)行速度。
(3)系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求在多任務(wù)嵌入式系統(tǒng)中,對(duì)重要性各不
相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵,單純通 過提高處理器速度是無法完成和沒有效率的,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來完成,因此系統(tǒng)軟件的高實(shí)時(shí)性是基本要求。
(4)多任務(wù)操作系統(tǒng)是知識(shí)集成的平臺(tái)和走向工業(yè)化標(biāo)準(zhǔn)化道路的基礎(chǔ),嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境嵌入式系統(tǒng)本身不具備開發(fā)能力,即使設(shè)計(jì)完成 以后用戶通常也是不能對(duì)其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā),這些工具和環(huán)境一般是基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種邏輯分析儀、混合信號(hào)示波器等。
(5)嵌入式系統(tǒng)軟件需要實(shí)時(shí)多任務(wù)操作系統(tǒng)開發(fā)平臺(tái)(RTOS)通用計(jì)算機(jī)具有完善的操作系統(tǒng)和應(yīng)用程序接口,是計(jì)算機(jī)基本組成不可分離的一部分,應(yīng)用程序的開發(fā)以及完成后的軟件都在Os平臺(tái)上面運(yùn)行,但一般不是實(shí)時(shí)的。嵌入式系統(tǒng)則不同,應(yīng)用程序可以沒有操作系統(tǒng)直接在芯片上運(yùn)行:但是為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源,用戶必須自行選配RTOS開發(fā)平臺(tái),這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開發(fā)時(shí)間,保障軟件質(zhì)量。
(6)在嵌入式系統(tǒng)的軟件開發(fā)過程中,采用C語言將是最佳和最終的選擇由于匯編語言是一種非結(jié)構(gòu)化的語言,對(duì)于大型的結(jié)構(gòu)化程序設(shè)計(jì)已經(jīng)不能完全勝任了。這就要求我們采用更高級(jí)的C語言去完成這一工作。
4.實(shí)訓(xùn)內(nèi)容簡(jiǎn)介
A.實(shí)訓(xùn)內(nèi)容
1)嵌入式系統(tǒng)及AM軟件介紹
2)Metrowerks CodeWarrior集成開發(fā)環(huán)境介紹
3)TESTI寄存器相加
4)GPIO 模 塊
5)向量中斷控制器(VIC)模塊
6)定 時(shí) 器 s
7)L C D顯示
8)實(shí)時(shí)操作系統(tǒng)簡(jiǎn)介
B.具體實(shí)例簡(jiǎn)介
a、b、實(shí)驗(yàn)內(nèi)容:LCD 實(shí)驗(yàn)步驟:
1).啟動(dòng)ADS1.2,使用ARM7 Executable Image for lpc2210工程模板建立一個(gè)工程LCD_Disphoto;
2).建立源文件lcddrive.c、lcddrive.h,編寫液晶模塊的驅(qū)動(dòng)程序,然后將lcddrive.c添加的工程的user組中;
3).建立源文件test.c,編寫實(shí)驗(yàn)程序,然后添加到工程的user組中;
4).修改config.h,增加包含LCDDRIVE.H頭文件;#include“LCDDRIVE.H”
5.心得體會(huì)
通過本次實(shí)驗(yàn),我也學(xué)會(huì)了如何去分析問題,如何找出自己設(shè)計(jì)中的不足,繼而去排除解決問題,這就是一個(gè)自我學(xué)習(xí)的過程當(dāng)我們通過實(shí)驗(yàn)去學(xué)習(xí)理論知識(shí)時(shí),自己動(dòng)手得出的結(jié)論,不僅能加深我們對(duì)嵌入式的理解,更能加深我們 對(duì)此的記憶
第五篇:嵌入式課程設(shè)計(jì)報(bào)告
福建工程學(xué)院
《嵌入式系統(tǒng)》課程設(shè)計(jì)
報(bào)告書
題目:
基于S3C2440設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)
班級(jí):
姓名:
學(xué)號(hào):
指導(dǎo)老師:
陳靖,張平均,李光煬
目錄
一、設(shè)計(jì)課題...............................................................................................................................4
二、設(shè)計(jì)目的...............................................................................................................................4
三、設(shè)計(jì)任務(wù)及要求...................................................................................................................4
四、設(shè)計(jì)內(nèi)容...............................................................................................................................5
五、操作界面的生成...................................................................................................................7
六、操作界面調(diào)試.......................................................................................................................9
七、設(shè)計(jì)總結(jié).............................................................................................................................10
八、設(shè)計(jì)參考書.........................................................................................................................12
九、附件(程序).....................................................................................................................13
一、設(shè)計(jì)課題
基于S3C2440的設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)
二、設(shè)計(jì)目的:
1.進(jìn)一步鞏固嵌入式系統(tǒng)的基本知識(shí); 2.掌握嵌入式應(yīng)用系統(tǒng)的基本結(jié)構(gòu); 3.掌握嵌入式系統(tǒng)開發(fā)環(huán)境建立和使用;
4.掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法; 5.學(xué)會(huì)查閱有關(guān)專業(yè)資料及設(shè)計(jì)手冊(cè); 6.MiniGUI界面編程。
三、設(shè)計(jì)任務(wù)及要求:
1.掌握嵌入式系統(tǒng)開發(fā)環(huán)境建立和使用;
2.掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法;
3、MiniGUI在PC上的安裝、移植
4、Linux基本輸入輸出驅(qū)動(dòng)程序設(shè)計(jì)編譯與移植
5、基于MiniGUI的基本輸入輸出應(yīng)用編程編譯與移植
6、編寫設(shè)計(jì)說明書(方案的確定、設(shè)計(jì)環(huán)節(jié)的考慮及必要說明等)及設(shè)備的使用說明;
7、繪制有關(guān)圖紙.四、設(shè)計(jì)內(nèi)容:
1、基礎(chǔ)知識(shí)準(zhǔn)備
1)講解設(shè)計(jì)任務(wù);2)熟悉ubuntu的使用;3)熟悉TQ2440試驗(yàn)系統(tǒng)的使用;4)掌握嵌入式系統(tǒng)開發(fā)環(huán)境建立和使用;
5)掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法.2、界面設(shè)計(jì)環(huán)境構(gòu)建:MiniGUI在PC上的安裝、移植
2.1、MiniGUI在pc機(jī)上安裝和運(yùn)行
建立工作目錄:mkdir /minigui-free
cd /minigui-free mkdir /src 復(fù)制源文件包到工作目錄:cp /mnt/hgfs/D/src/* /minigui-free 解壓文件到/minigui-free:
tar zxvf libminigui-1.6.10.tar.gz tar zxvf minigui-res-1.6.10.tar.gz tar zxvf mg-samples-1.6.10.tar.gz
2.2、MiniGUI庫安裝
(2)將libcross.sh考到minigui的lib庫的解壓文件夾中(3)將rescross.sh 考到minigui的res資源解壓文件夾中(4)將samplecorss.sh 考到sample例子解壓文件夾中(5)依次運(yùn)行l(wèi)ibcross.sh,rescross.sh,samplecorss.sh(6)到nfsroot的,目錄下,將libreduce.sh考到這個(gè)目錄下,運(yùn)行l(wèi)ibreduce.sh 2.3、安裝qvfb(1)解壓qvfb1.1.tar.gz(2)./configure(3)make(4)make install 2.4、配置MiniGUI.cfg vi /etc/MiniGUI.cfg 修改如下部分為 [system] # GAL engine and default options gal_engine=fbcon
defaultmode=800x480-16bpp # IAL engine ial_engine=fbcon mdev=/dev/mouse mtype=IMPS2 [fbcon] 6
defaultmode=800x480-16bpp [qvfb] defaultmode=800x480-16bpp display=0 1.5運(yùn)行MiniGUI例子程序(1)打開qvfb:qvfb &(2)運(yùn)行helloword:
五、操作界面的生成
1、操作界面面執(zhí)行文件的生成
1).在/minigui-free/mg-samples-1.6.10/src/修改源文件treeview.c 2).再次運(yùn)行samplecorss.sh,生成執(zhí)行文件treeview
2、利用nfs進(jìn)行掛載
1).將本地PC機(jī)的網(wǎng)絡(luò)方式設(shè)置成為橋接
2).查看/etc/exports下可以掛載的目錄
3).啟動(dòng)服務(wù)/etc/init.d/nfs-kernel-server restart 4).查看本機(jī)和ARM上的IP地址,設(shè)置在同一網(wǎng)段,然后ping,使其能夠互通。5).在超級(jí)終端上,進(jìn)行操作
Mount-o nolock,rsize=1024,wsize=1024 本機(jī)IP:/ /mnt
將虛擬機(jī)和ARM進(jìn)行掛載,可以查看到虛擬機(jī)根目錄下的文件。
3、在超級(jí)終端上將需要的文件從虛擬機(jī)上復(fù)制到ARM機(jī)上
1).重新燒寫文件系統(tǒng)鏡像文件
2).掛載成功后,將/mnt/minigui-free/nfsroot/lib/*復(fù)制到/usr/lib/ 3).將/mnt/minigui-free/nfsroot/usr/local/lib/*復(fù)制到/usr/local/lib/ 4).將/mnt/etc/MiniGUI.cfg復(fù)制到/etc/ 8
5).將/mnt/minigui-free/mg-samples-1.6.10/src/*復(fù)制到/usr/minigui/
4、在超級(jí)終端上運(yùn)行執(zhí)行文件
1).進(jìn)入/usr/minigui/運(yùn)行treeview文件 2).可以再操作界面上現(xiàn)實(shí)我們所設(shè)計(jì)的界面
六、操作界面調(diào)試
1、點(diǎn)擊LED1LED2LED3LED4,分別控制四盞led燈的亮暗,調(diào)試界面如下:
2、輸入頻率值,點(diǎn)擊START鍵控制四盞led燈閃爍,調(diào)試界面如下:
七、設(shè)計(jì)總結(jié)
1、設(shè)計(jì)過程中遇到的問題
錯(cuò)誤1:
InitGUI: Can not initialize colors of window element!InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.解決方法:正確配置MiniGUI.cfg文件 錯(cuò)誤2:
Permission denied 解決方法:權(quán)限不夠,使用root用戶登錄。錯(cuò)誤3:
編譯出錯(cuò)未找到j(luò)peg,png等
解決方法:安裝zlib,png,jpeg庫。
錯(cuò)誤4:
出現(xiàn)符號(hào)未找到等編譯錯(cuò)誤 解決方法:make clean 后在make 錯(cuò)誤5:
在minigui創(chuàng)建和移植的過程中,出現(xiàn)lib庫編譯不成功的現(xiàn)象,這是由于minigui是基于qt3的,因此需要添加qt3所在路徑至配置文件。錯(cuò)誤:6 在開發(fā)板上添加鼠標(biāo)設(shè)備后,提示視頻采集失敗,這是因?yàn)?etc下的配置文件MiniGUI.cfg中對(duì)外設(shè)控制范圍的控制過大,銀將其修改為與界面統(tǒng)一大小800*480.錯(cuò)誤:7 在執(zhí)行l(wèi)ed燈控制程序之前應(yīng)該首先停止開發(fā)板上原有的流水燈進(jìn)程led-player。錯(cuò)誤:8 運(yùn)行執(zhí)行程序treeview后界面上出現(xiàn)兩個(gè)光標(biāo),此時(shí)應(yīng)該在/etc/init.d下的rcS文件中停用qt3的光標(biāo)。
2、心得體會(huì)
本學(xué)期為期兩周的嵌入式課程設(shè)計(jì)在不知不覺中結(jié)束了,雖說這次課程設(shè)計(jì)時(shí)間不是很長(zhǎng),但是感覺自己收獲頗豐,不僅學(xué)習(xí)到了一些新知識(shí),回顧了以前的一些快要遺忘的知識(shí)點(diǎn),而且使自己的學(xué)習(xí)目標(biāo)更加明確,學(xué)習(xí)方法更加完善,也體會(huì)到軟件開發(fā)的趣味,更加清楚地認(rèn)識(shí)到了自己在軟件開發(fā)及學(xué)習(xí)上的一些不足之處。
兩周的課程設(shè)計(jì),在計(jì)算機(jī)這個(gè)博大深?yuàn)W的領(lǐng)域我感覺自己還有好多東西要學(xué),還有好多的東西不懂!嵌入式軟件開發(fā)應(yīng)用廣泛而且前景很好,目前正處于人才緊缺的關(guān)口,嵌入式技術(shù)在未來能夠得到更加廣泛的應(yīng)用。學(xué)好嵌入式,C語言很重要,所以感覺自己有必要在學(xué)習(xí)、積累一下這方面的知識(shí)。很多東西的學(xué)習(xí)不是一帆風(fēng)順也是比較耗時(shí)的,嵌入式也不例外,要想學(xué)好還必須下大力氣,還必須堅(jiān)持。這次的課程設(shè)計(jì)讓我明確了一點(diǎn):嵌入式開發(fā)對(duì)于提升我們的系統(tǒng)知識(shí)有很大的幫助,尤其是操作系統(tǒng)的知識(shí)。嵌入式
系統(tǒng)開發(fā)對(duì)于我們的知識(shí)面要求非常的廣,且要有一定的深度。這次的課程設(shè)計(jì)因?yàn)槭且粋€(gè)有針對(duì)性的訓(xùn)練,所以記的會(huì)非常牢固。跟平時(shí)上課不太一樣,平時(shí)上完理論課很少有時(shí)間上機(jī)進(jìn)行時(shí)間或者隔幾天才上機(jī)練習(xí),等到上機(jī)時(shí)一些東西可能遺忘了,比較耗費(fèi)時(shí)間。在課上,有老師在前面演示我們感覺看得懂或感覺沒問題,可輪到我們獨(dú)立完成的時(shí)候,因?yàn)閷?shí)際操作的少,其中的問題就來了!我很感謝學(xué)校特別是學(xué)院老師有實(shí)訓(xùn)這樣的安排,把我們這一學(xué)期學(xué)的東西系統(tǒng)的集中的進(jìn)行訓(xùn)練,讓我們深刻明確的體驗(yàn)了一下軟件開發(fā)的流程!還要感謝給我們實(shí)訓(xùn)的楚老師,感覺楚老師能力很強(qiáng),也很有耐心,即使老師講了很多遍的問題,我們不會(huì),老師還是會(huì)走進(jìn)我們給我們耐心的指導(dǎo),還給我們講一些學(xué)習(xí)計(jì)算機(jī)的方法,一些軟件開發(fā)需要注意的細(xì)節(jié),讓我們知道自己在哪方面不足,需要加強(qiáng),也讓我們了解到哪些需要認(rèn)真的學(xué)習(xí),那些是重點(diǎn),不是沒有方向的亂學(xué)一通,什么也學(xué)不好!經(jīng)過這次的實(shí)訓(xùn),我真真確確的感受到了計(jì)算機(jī)在我們生活中工作中的運(yùn)用,這些軟件、程序能讓我們提高工作的效率,更直觀更便捷的切入主題。當(dāng)然,在學(xué)習(xí)的過程中并不是一帆風(fēng)順的,在這之中,因?yàn)橐僮鞯臇|西很多,有時(shí)錯(cuò)一步,后面的結(jié)果就無法顯示,而自己的計(jì)算機(jī)水平還有待提高,根本檢查不出來是哪里出了錯(cuò)!這時(shí)候,老師都會(huì)耐心的過來幫助我!在平時(shí)我們就需要好好的查閱書籍或者上網(wǎng)搜集相關(guān)資料去解決問題。
短短兩周的課程設(shè)計(jì)很快結(jié)束了,我發(fā)現(xiàn)我對(duì)計(jì)算機(jī)這個(gè)專業(yè)、對(duì)嵌入式技術(shù)、對(duì)Linux都有了新的認(rèn)識(shí)。通過這次的實(shí)訓(xùn),我了解到,要真真正正的掌握計(jì)算機(jī)程序還不是一件簡(jiǎn)單容易的事兒,但真正掌握后,它帶給我們的將是無窮的便捷與科技,我喜歡高端便捷的生活。我希望我能做計(jì)算機(jī)這個(gè)萬能機(jī)器人的主人而不是奴隸,我會(huì)努力加油的!感謝學(xué)校,感謝老師給我的幫助,讓我的思想、技能又上了一個(gè)臺(tái)階!感謝!加油!
八、設(shè)計(jì)參考書
1、《嵌入式系統(tǒng)接口設(shè)計(jì)與Linux驅(qū)動(dòng)程序開發(fā)》
2、《ARM9嵌入式LINUX系統(tǒng)構(gòu)建與應(yīng)用》
4、MiniGUI編程手冊(cè)
5、Linux應(yīng)用程序編程
九、附件(程序)
#include
#include
/*包括 MiniGUI 常用的宏以及數(shù)據(jù)類型的定義*/ #include
/*包含了
MiniGUI
繪圖函數(shù)的接口定義*/ #include
/*包含了
libminigui 中所有內(nèi)建控件的接口定義*/ #include
/*包含了許多UNIX系統(tǒng)服務(wù)的函數(shù)原型*/ #include
/*提供對(duì)I/O控制的函數(shù)*/
#define ID_LED1 101
/*定義各個(gè)控件與定時(shí)器的ID號(hào)*/ #define ID_LED2 102 #define ID_LED3 103 #define ID_LED4 104 #define ID_TEXT1 105 #define ID_TEXT2 106 #define ID_START 107 #define ID_STOP 108 #define ID_COMBOBOX 109 #define ID_TIMER 110
static int a,b,c,d=0;
/*定義LED燈的初始值*/ static int fd_led;
/*定義文件描述符*/
HWND hMainWnd;
/*定義主窗口句柄*/
static void draw_circular(HWND hdig,int x,int y,int r,int which)
/*自定義一個(gè)畫圓函數(shù),x、y、r、which分別表示圓心坐標(biāo)、半徑、顏色*/ {
HDC hdc;
/*定義設(shè)備上下文句柄*/ int color;color=((which==0)?PIXEL_green:PIXEL_red);
hdc=BeginPaint(hdig);
/*獲得設(shè)備上下文句柄*/ SetBrushColor(hdc,color);
/*設(shè)置畫刷顏色*/ FillCircle(hdc,x,y,r);
/*調(diào)用園填充函數(shù)*/ EndPaint(hdig,hdc);
/*釋放設(shè)備上下文句柄*/ }
static DLGTEMPLATE DlgInitProgress=
/*定義對(duì)話框模板.用static類型數(shù)據(jù),使該數(shù)據(jù)的定義只在所在文件中有效,以免因?yàn)槊挚臻g污染造成潛在的編譯或連接錯(cuò)誤*/ {
WS_BORDER|WS_CAPTION,/*對(duì)話框風(fēng)格,WS_BORDER創(chuàng)建有邊框的窗口 ,WS_CAPTION創(chuàng)建含標(biāo)題欄的主窗口*/
WS_EX_NONE,/*對(duì)話框擴(kuò)展風(fēng)格,WS_EX_NONE表示無擴(kuò)展風(fēng)格*/
0,0,800,480,/*對(duì)話框位置,左上角坐標(biāo)(0,0),800、480分別為寬和高*/
“MY_LED_CONTROL”,/*對(duì)話框標(biāo)題*/
0,/*對(duì)話框圖標(biāo)*/
0,/*對(duì)話框菜單*/
9,/*對(duì)話框中控件個(gè)數(shù)。這個(gè)必須要匹配*/
NULL,/*pointer to control array*/
0
/*附加值*/ };
static CTRLDATA CtrlInitData[]=
/*控件數(shù)組*/ {
{
“static”,/*控件類型*/
WS_VISIBLE|SS_SIMPLE,/*控件風(fēng)格,WS_VISIBLE創(chuàng)建初始可見的窗口,SS_SIMPLE顯示單行文本*/
100,270,150,40,/*控件位置*/
ID_TEXT1,/*控件ID*/
“Please input frequency”,/*控件內(nèi)容*/
0,/*附加值*/
WS_EX_NONE
/*控件擴(kuò)展風(fēng)格*/
}, { “static”, WS_VISIBLE|SS_SIMPLE, 605,270,150,40, ID_TEXT2, “HZ”, 0, WS_EX_NONE
}, {
“button”, WS_VISIBLE|WS_TABSTOP, 135,160,80,60, ID_LED1, “LED1”, 0, WS_EX_NONE
}, {
“button”, WS_VISIBLE|WS_TABSTOP, 285,160,80,60, ID_LED2, “LED2”, 0, WS_EX_NONE
}, {
“button”, WS_VISIBLE|WS_TABSTOP, 435,160,80,60, ID_LED3, “LED3”, 0,/*WS_TABSTOP支持Tab鍵*/
WS_EX_NONE
}, {
“button”,WS_VISIBLE|WS_TABSTOP,585,160,80,60,ID_LED4,“LED4”,0,WS_EX_NONE
}, {
“button”,WS_VISIBLE|WS_TABSTOP,285,360,80,60,ID_START,“START”,0,WS_EX_NONE
}, {
“button”,WS_VISIBLE|WS_TABSTOP,435,360,80,60,ID_STOP,“STOP”,0,WS_EX_NONE
}, {
CTRL_COMBOBOX,WS_VISIBLE|WS_TABSTOP|CBS_AUTOSPIN|CBS_AUTOLOOP,/*CBS_AUTOSPIN創(chuàng)建旋鈕數(shù)字框,CBS_AUTOLOOP框中的數(shù)字將自動(dòng)循 環(huán)顯示*/
435,270,80,40,ID_COMBOBOX,“0”,/*旋鈕數(shù)字框初始值*/
0,WS_EX_NONE
} };
static int DialogBoxProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)/*對(duì)話框過程函數(shù),用來接收和處理所有發(fā)送到該窗口的消息*/ {
int number;
/*用來存從旋鈕數(shù)字框獲得的數(shù)值*/
static int t=0;
int num;
/*存放定時(shí)時(shí)間*/
switch(message)
{
case MSG_INITDIALOG:
/*用戶在定義自己的對(duì)話框回調(diào)函數(shù)時(shí),需要處理
MSG_INITDIALOG消息,該消息是在MiniGUI根據(jù)對(duì)話框模板建立對(duì)話框以及 控件之后,發(fā)送到對(duì)話框回調(diào)函數(shù)的。*/
SendDlgItemMessage(hWnd, ID_COMBOBOX, CB_SETSPINRANGE, 0, 10000);
/*設(shè)置旋鈕數(shù)字框的最大小值*/
return 1;
case MSG_PAINT:/*重繪消息*/
draw_circular(hWnd,175,90,30,1);
draw_circular(hWnd,325,90,30,1);
draw_circular(hWnd,475,90,30,1);
draw_circular(hWnd,625,90,30,1);
printf(“*************************init draw_circular******************************n”);
case MSG_TIMER:t++;
/*定時(shí)器消息,這里完成LED燈的閃爍*/
if(t%2!=0)
{
ioctl(fd_led, 0,0);
ioctl(fd_led, 0, 1);
ioctl(fd_led, 0, 2);
ioctl(fd_led, 0, 3);printf(“*************************time red******************************n”);
draw_circular(hWnd,175,90,30,1);
draw_circular(hWnd,325,90,30,1);
draw_circular(hWnd,475,90,30,1);
draw_circular(hWnd,625,90,30,1);
break;
}
else
{
ioctl(fd_led, 1,0);
ioctl(fd_led, 1, 1);
ioctl(fd_led, 1, 2);
ioctl(fd_led, 1, 3);printf(“*************************time green******************************n”);
draw_circular(hWnd,175,90,30,0);
draw_circular(hWnd,325,90,30,0);
draw_circular(hWnd,475,90,30,0);
draw_circular(hWnd,625,90,30,0);
break;
}
case MSG_COMMAND: /*擊鍵消息*/
switch(wParam)
{
case ID_LED1:a++;
/*控制LED燈亮暗*/
if(a%2!=0)
{
ioctl(fd_led,0,0);
draw_circular(hWnd,175,90,30,1);
}
else
{ /
ioctl(fd_led,1,0);
draw_circular(hWnd,175,90,30,0);
}
printf(“******************led1********************************n”);
break;
case ID_LED2:b++;
if(b%2!=0)
{
ioctl(fd_led,0,1);
draw_circular(hWnd,325,90,30,1);
}
else
{
ioctl(fd_led,1,1);
draw_circular(hWnd,325,90,30,0);
}
printf(“*******************led2********************************n”);
break;
case ID_LED3:c++;
if(c%2!=0)
{
ioctl(fd_led,0,2);
draw_circular(hWnd,475,90,30,1);
}
else
{
ioctl(fd_led,1,2);
draw_circular(hWnd,475,90,30,0);
}
printf(“*******************led3********************************n”);
break;
case ID_LED4:d++;
if(d%2!=0)
{
ioctl(fd_led,0,3);
draw_circular(hWnd,625,90,30,1);
printf(“*******************led33********************************n”);
}
else
{
ioctl(fd_led,1,3);
draw_circular(hWnd,625,90,30,0);
}
printf(“*******************led4********************************n”);
break;
case ID_START:printf(“*******************start1*********************n”);
number=SendMessage(GetDlgItem(hWnd,ID_COMBOBOX), CB_GETSPINVALUE, 0, 0);/*獲取旋鈕數(shù)字框的數(shù)值*/
printf(“**********%d*******************n”,number);
printf(“*******************start2*********************n”);
if(number!=0)
{
printf(“*******************start3*********************n”);
num=(int)(1000*(1.0/number));
/*將頻率轉(zhuǎn)換為時(shí)間*/
printf(“*******************start4*********************n”);
}
else
{
printf(“*******************start5*********************n”);
num=1000;
}
printf(“*******************start6*********************n”);
printf(“*******************start7*********************n”);
printf(“*******************start8*********************n”);
SetTimer(hWnd,ID_TIMER,num);/*創(chuàng)建定時(shí)器,時(shí)間為num*10ms*/ printf(“*************************SetTimer OK******************************n”);
SendMessage(hWnd,BM_CLICK,0,0);
/*發(fā)送點(diǎn)擊信息*/ printf(“*************************SendMessage OK******************************n”);
//for(i=0;i++;i<10000)
/*當(dāng)初用for循環(huán)時(shí)無法進(jìn)入循環(huán),也許是因?yàn)橄⒈旧碛醒h(huán)機(jī)制,用for循環(huán)太多也許沖突,所以后來用了定時(shí)器*/
//{
//
printf(“********%d**********n,i”);
//
ioctl(fd_led, 1,0);//
ioctl(fd_led, 1, 1);//
ioctl(fd_led, 1, 2);//
ioctl(fd_led, 1, 3);
//
draw_circular(hWnd,175,90,30,0);
//
draw_circular(hWnd,325,90,30,0);
//
draw_circular(hWnd,475,90,30,0);
//
draw_circular(hWnd,625,90,30,0);
printf(“*******************start9*********************n”);
// usleep(number);
//usleep(num);
//
ioctl(fd_led, 0,0);//
ioctl(fd_led, 0, 1);//
ioctl(fd_led,0, 2);//
ioctl(fd_led, 0, 3);
// draw_circular(hWnd,175,90,30,1);
// draw_circular(hWnd,325,90,30,1);
// draw_circular(hWnd,475,90,30,1);
// draw_circular(hWnd,625,90,30,1);
// printf(“*******************start10*********************n”);
//usleep(number);
//usleep(num);
// }
printf(“*******************start********************************n”);
break;
case ID_STOP:
KillTimer(hWnd,ID_TIMER);/*關(guān)閉定時(shí)器。下面的表示燈滅*/
ioctl(fd_led, 0,0);
ioctl(fd_led, 0, 1);
ioctl(fd_led, 0, 2);
ioctl(fd_led, 0, 3);
draw_circular(hWnd,175,90,30,1);
draw_circular(hWnd,325,90,30,1);
draw_circular(hWnd,475,90,30,1);
draw_circular(hWnd,625,90,30,1);
printf(“**************stop******************n”);
break;
}
}
return(DefaultDialogProc(hWnd,message,wParam,lParam));
/*對(duì)話框的缺省消息處理由 DefaultDialogProc 函數(shù)完成*/ }
static void InitDialogBox(HWND hWnd){ DlgInitProgress.controls=CtrlInitData;
/*將對(duì)話框模板結(jié)構(gòu)和控件結(jié)構(gòu)數(shù)組關(guān)聯(lián)起來*/ DialogBoxIndirectParam(&DlgInitProgress,hWnd,DialogBoxProc,0L);/*創(chuàng)建對(duì)話框*/
printf(“*************create dialog**********************n”);}
/*****************************************************************
主窗口的過程函數(shù)
static int LedWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){
HDC hdc;
switch(message)
{
case MSG_PAINT:
hdc = BeginPaint(hWnd);
TextOut(hdc, 60, 60, “My leds control!”);
EndPaint(hWnd, hdc);
return 0;
case MSG_CLOSE:
DestroyMainWindow(hWnd);
PostQuitMessage(hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
*********************************************************************/ int MiniGUIMain(int argc, const char* argv[])
{
// MSG Msg;
// MAINWINCREATE CreateInfo;/*描述主窗口的屬性*/
#ifdef _MGRM_PROCESSES
JoinLayer(NAME_DEF_LAYER , “l(fā)ed” , 0 , 0);
/*選擇PROCESSES模式*/
#endif
printf(“****************into main*********************n”);
fd_led=open(“/dev/GPIO-Control”,0);
/*打開驅(qū)動(dòng)設(shè)備*/
if(fd_led < 0)
{
perror(“open device led”);
exit(1);
}
ioctl(fd_led, 0, 0);
/*初始燈滅*/
ioctl(fd_led, 0, 1);
ioctl(fd_led, 0, 2);
ioctl(fd_led, 0, 3);
InitDialogBox(HWND_DESKTOP);
close(fd_led);/*********************************************************** CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;/窗口風(fēng)格/
CreateInfo.dwExStyle=WS_EX_NONE;
/窗口擴(kuò)展風(fēng)格/
CreateInfo.spCaption=“MY_LED_CONTROL_WIN”;
/窗口標(biāo)題/
CreateInfo.hMenu=0;
/菜單/
CreateInfo.hCursor= GetSystemCursor(0);
/光標(biāo)/
CreateInfo.hIcon=0;
/圖標(biāo)/
CreateInfo.MainWindowProc=LedWinProc;
/設(shè)置主窗口的窗口函數(shù),所用發(fā)往該窗口的消息由該函數(shù)處理/
CreateInfo.lx=0;
/窗口位置/
CreateInfo.ty = 0;
CreateInfo.rx = 240;
CreateInfo.by = 180;
CreateInfo.iBkColor=COLOR_lightwhite;
/設(shè)置背景顏色/
CreateInfo.dwAddData=0;
/附加數(shù)值/
CreateInfo.hHosting=HWND_DESKTOP;
/設(shè)置窗口的托管窗口為桌面窗口/
hMainWnd = CreateMainWindow(&CreateInfo);
/創(chuàng)建主窗口,返回創(chuàng)建窗口的句柄/
if(hMainWnd == HWND_INVALID)
return-1;
ShowWindow(hMainWnd,SW_SHOWNORMAL);
/顯示窗口的顯示方式/
while(GetMessage(&Msg, hMainWnd))/獲取主窗口的句柄,指向MSG結(jié)構(gòu)指針/
{
TranslateMessage(&Msg);
/將擊鍵消息轉(zhuǎn)換為MSG_CHAR消息,然后直接發(fā)送到窗口的過程函數(shù)/
DispatchMessage(&Msg);
/獲取消息的目標(biāo)窗口的窗口過程,然后直接調(diào)用 該窗口過程函數(shù)對(duì)消息進(jìn)行處理/
}
MainWindowThreadCleanup(hMainWnd);/清除主窗口所使用消息隊(duì)列的系統(tǒng)資源/ *****************************************************************************/
return 0;
}
#ifndef _MGRM_PROCESSES #include