久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式報告

時間:2019-05-12 13:50:17下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《嵌入式報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式報告》。

第一篇:嵌入式報告

目錄

引言...............................................................................................................................2 1.ARM概述.................................................................................................................2 2.芯片介紹..................................................................................................................2

2.1............................................................................................................................2 3.顯示方式選擇方案與論證......................................................................................3 4.硬件設計..................................................................................................................4

4.1............................................................................................................................4 4.2 電路原理圖.....................................................................................................4 5.軟件設計..................................................................................................................5 6.心得體會..................................................................................................................6 參考文獻.......................................................................................................................7 引言

隨著信息技術和網絡技術的高速發展,嵌入式產品日益廣泛地滲透到各個行業和領域。嵌入式系統被定義為:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統對功能、可靠性、成本,體積、功耗嚴格要求的專用計算機系統。嵌入式系統通常包括硬件和操作系統兩部分,硬件是構成軟件的基本運行環境。

到目前為止,ARM微處理器及技術的應用幾乎已經深入到各個領域,如工業控制領域,無線通訊領域,網絡應用,消費類電子產品。此外,ARM微處理器及技術還應用到許多不同的領域,并會在將來取得更加廣泛的應用。

1.ARM概述

ARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。

ARM 微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基于ARM 技術的微處理器應已經滲入到我們生活的各個方面。

2.芯片介紹

2.1LPC2132簡介

芯片概述:

LPC2131/2132/2138是基于一個支持實時仿真和嵌入式跟蹤的32/16 位ARM7TDMI-STM CPU 的微控制器,并帶有32kB、64kB、512 kB 的嵌入的高速Flash 存儲器。128 位寬度的存儲器接口和獨特的加速結構使32位代碼能夠在最大時鐘速率下運行。

LPC2132G功能方框圖如圖2-1所示

圖2-1 LPC2132G功能方框圖

本設計使用2塊4位共陰LED數碼管作為顯示模塊。

3.顯示方式選擇方案與論證

采用LED數碼管動態掃描顯示方法,是指一位一位地輪流點亮每位顯示器(稱為掃描),即每個數碼管的位選被輪流選中,多個數碼管公用一組段選,段選數據僅對位選選中的數碼管有效。對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導通電流有關,也與點亮時間和間隔時間的比例有關。通過調整電流和時間參數,當動態掃描頻率加大到一定范圍時可以既保證亮度,又保證顯示。動態顯示對IO的利用率相對教高。

4.硬件設計

4.1 電路設計原理

RSPI是一種高速的、全雙工、同步的通信總線,且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便。SPI還是一個數據交換協議:因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的SPI設備的實現方式不盡相同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義。

SPI總線工作的四種方式如圖4-1所示,其中使用的最為廣泛的是SPI0和SPI3方式(實線表示):

圖4-1 SPI總線四種工作方式

SPI模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性對傳輸協議沒有重大的影響:CPOL=0時串行同步時鐘的空閑狀態為低電平; CPOL=1,串行同步時鐘的空閑狀態為高電平;

時鐘相位能夠配置用于選擇兩種不同的傳輸協議之一進行數據傳輸:CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣; CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。

SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。4.2 電路原理圖

P1.24-P1.31口作為數碼管數據輸出口,外接上拉電阻后分別連接到兩個數碼管的段選端上。P0.0-P1.7口作為數碼管位選控制口,分別接到2個4位共陰數碼管的共8個位選端上。另外,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.軟件設計

程序流程圖如圖5-1所示

圖5-1 程序流程圖

6.心得體會

本次嵌入式系統設計有學生自主命題,開放性大,范圍廣但是這同時對于每一個同學來說都是一個不小的挑戰。

此次設計為基于嵌入式ARM的電子秒表的設計,在設計中以LPC2132為核心的核心板來設計電子秒表。在設計中為解決問題需自己查閱資料,是自己更多更深入的去了解和使用嵌入式系統來完成設計,加深了對嵌入式系統的認識,也激起了自己對嵌入式系統的興趣。

本次設計的難點關鍵在于對于ARM系統人士的不足,對于嵌入式系統的不了解,以及對于各種芯片的使用方法不能靈活運用使得設計中問題不斷。

參考文獻

[1] 崔更申,孫安青.ARM嵌入式系統開發與實踐[M].北京:中國電力出版社,2008 [2] 張綺文.ARM 嵌入式常用模塊與綜合系統設計實例精講[M].北京:電子工業出版社,[3] 劉同法,肖志剛.ARM Cortex-M3內核微控制器快帶入門與應用.北京:北京航空航天大學出版社,2009 [4] 三恒星科技.ARM 7易學通[M].北京:人民郵電出版社,2006 [5] Steve Furber著;田澤等譯.ARM SoC體系結構[M].北京:北京航空航天大學出版社,2002 [6] 滕英巖.嵌入式系統開發基礎——基于ARM位處理器和Linux操作系統[M].北京:電子工業出版社,2008 [7] http://baike.baidu.com/view/11200.htm

[9] http://wenku.baidu.com/view/ef0be52b7375a417866f8f46.html

第二篇:嵌入式報告

嵌入式實訓報告

姓名:張龍班級:電氣803學號:08010270

嵌入式系統學習體會

一、嵌入式發展前景

嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

一類是學電子工程、通信工程等偏硬件專業出身的人,他們主要是搞硬件設計,有時要開發一些與硬件關系最密切的最底層軟件,如BootLoader、Board SupportPackage(像PC的BIOS一樣,往下驅動硬件,往上支持操作系統),最初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜軟件系統往往力不從心(例如嵌入式操作系統原理和復雜應用軟件等)。

另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。如果我們學軟件的人對硬件原理和接口有較好的掌握,我們完全也可寫BSP和硬件驅動程序。嵌入式硬件設計完后,各種功能就全靠軟件來實現了,嵌入式設備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統的最主要工作(目前有很多公司將硬件設計包給了專門的硬件公司,稍復雜的硬件都交給***或國外公司設計,國內的硬件設計力量很弱,很多嵌入式公司自己只負責開發軟件,因為公司都知道,嵌入式產品的差異很大程度在軟件上,在軟件方面是最有“花頭“可做的),所以我們搞軟件的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。

二、嵌入式系統應用前景

隨著計算機軟件和集成電路技術的發展,嵌入式系統產品日益完善,在航天、航空、交通、網絡、電子、通訊、金融、智能電器、智能建筑、儀器儀表、工業自動控制、數控機床、掌上型電腦、各種智能IC卡、第二代身份證驗證、公共交通收費系統、醫藥系統以及軍事等領域得到廣泛應用,已成為我國信息化帶動工業化,工業化促進信息化 發展的國民經濟新的增長點在我國2006 年嵌入式軟件產品占全年全部軟件產值的23%還多.據調查顯示,目前嵌入式系統涉及的領域中,PDA占30%,手機占18%,數字信息家電占21%,工業控制5%,服務行業占2%,交通系統占2%,其他占22%.目前最值得關注的嵌入式產品市場主要有如下幾類:

1.信息家電

后PC時代,家用電器將向數字化和網絡化發展,電視機、微波爐、數字電話等都將嵌入微處理器并通過家庭網關與Internet連接,構成家庭信息網絡.屆時, 人們可以遠程控制家里的電器設備,可以實現遠程醫療、遠程教育, 可以視頻點播,實現交互式電視,還可以提供各種網上服務等.一般可認為,那些低單價、操作簡單、可通過因特網發送或獲取信息, 將逐步分割或替代PC 的某些功能,并能

與其它信息產品交換資料或信息的產品可統稱為信息家電.信息家電可以提供安全防范、消費電子產品的智能控制、交互式智能控制、家庭信息服務、自動維護、家庭醫療保健等服務.而這些服務中的各類數字融合產品,都離不開嵌入式系統的支持,可以說,嵌入式系統是家庭信息網絡、IT 融合的重要技術基礎.具有豐富功能、高度集成的智能數字終端將是未來的發展方向.智能數字終端和各類數字融合產品具有十分廣闊的市場前景.2.移動計算設備

移動計算設備包括手機、PDA、掌上電腦等各種移動設備.中國擁有最大的手機用戶,市場巨大,而掌上電腦或PDA 由于易于使用、攜帶方便、價格便宜,近幾年在我國得到了快速地發展.PDA 與手機也已呈現融合趨勢, 智能手機正在成為今后的發展趨勢方向, 智能手機就是一臺嵌入式系統.智能手機要存放更多的軟件和各種大容量的多媒體文件,必定要有操作系統, 目前智能手機操作系統主要有開源的Linux、微軟公司的Windows CE系統和 Symbain 公司的 SymbainOs 系統.智能手機的功能越來越異常強大,為智能手機開發的各種功能程序已經在互聯網上盛行.通過安裝這些軟件,可大大擴展手機的功能.3.網絡設備

各種網絡設備包括路由器交換機、Web Server、網絡接入網關等, 都是一類嵌入式系統.隨著下一代Internet 的研發成功和投入使用,必然會有更多更強的嵌入式網絡設備和產品面世,這意味著巨大的嵌入式網絡設備和產品市場需求.嵌入式系統也在向無線網絡發展,無線網絡已開發集成了802.11 芯片組.無線嵌入式網絡有望部署到住宅及商用建筑自動化、工業設備監測以及其他無線傳感和控制應用中.ZigBee 聯盟已經為低成本、低功率的無線嵌入式網絡制定了標準.這項標準定義了在IEEE 802.15.4 標準媒體接入控制層和物理層上的網絡及支持的應用服務.這項標準很適合照明、供暖、冷卻控制、工業建筑、自動化以及醫療設備監測等方方面面的應用.ZigBee聯盟的長期目標是能夠建立基于互操作平臺和配置文件的可伸縮、低成本的嵌入式基礎架構.4.自動化與測控儀器儀表

測控儀器儀表種類繁多,我國每年光進口的醫療設備就上億, 每個醫療設備就是一套嵌入式系統.測控儀器儀表更是遍及大中小企業,新型的測控儀器儀表無一不是嵌入式系統.在工控和仿真領域,嵌入式設備也早已得到廣泛應用.嵌入式系統在自動化行業已有很多成功應用案例,如數控機床控制系統、面向啤酒行業控制系統、水廠控制系統、縫紉機控制系統、可燃性氣體報警系統、智能建筑安防系統、自動生產線分布式控制系統、變電站自動化系統、自動生產線檢測系統等.我國的工業生產需要完成智能化、數字化改造,智能控制設備、智能儀表、自動控制等為嵌入式系統提供了巨大的市場.工控、仿真、數據采集、軍用等領域一般都要求實時操作系統支持.在金融業、電力系統和服務業,嵌入式也在發揮著越來越重要的作用.5.嵌入式技術在交通管理、環境監測中的應用

在交通系統,嵌入式的作用也日益重要.汽車智能駕駛設備、汽車模擬駕駛器、汽車噴油泵調試臺、輪船智能駕駛設備等都面臨更新換代.這類新型設備也都離不開嵌入式系統.我國汽車業的發展必然為汽車電子的嵌入式系統應用帶來良好商機.嵌入式系統在交通指揮系統、高速公路收費監控、汽車自導航、GPS車載終端、電子警察、加油站和汽車檢測中的應用都是非常廣泛的,有良好的市場前景.在環境監測(包括水文資料實時監測, 防洪體系及水土質量監測,堤壩安全,地震監測網,實時氣象信息網,水源和空氣污染監測)中,嵌入式產品同樣有著廣泛的市場前景.三、嵌入式系統的組成 1.底層(硬件層)

需要你自己對于硬件相當的了解,能夠獨立繪制PCB并進行焊接,之后調試板子,做好電路板。比如sc2410,你需要繪制至少四層PCB電路板,其中ARM核心板是最難掌握的部分,外圍電路要注意各種走線技巧等等。繪制完PCB之后就需要你的焊接功夫。將元器件焊接在PCB上。最后調試電路板,這是這一層設計中的收尾工作,也是最具有挑戰性的工作。調試電路需要大量的經驗,對于初學者來說,需要很強的電路知識,對于硬件的性能以及應用要非常了解才行。

2.中間層(驅動層)

電路板已經有現成的。你需要編程使一個死的板子,活起來,就是把程序下載進去,能叫板子跑起來。這里需要你對于ARM芯片的結構有很好的掌握,要會讀芯片資料(datasheet)通常都是英文的。了解其內部資源我們就可以進行驅動編程了。我們平時所使用單片機,一般都是寫好的程序,各個管腳在什么時序下輸出什么信號(1或0),來操作實現相應借口的外圍設備,比如液晶屏、LED燈等。單片機也可以叫做簡單的嵌入式。原理相同。ARM也可以向單片機一樣使用,但我們更多的是要對ARM加入操作系統的,這才是我們最常說的嵌入式。加入操作系統了以后,芯片對于個個資源的調度有了更系統的統籌規劃,可以更充分的利用ARM芯片的系統資源,提高性能,使資源合理分配。而通常的驅動是在操作系統下工作的。比如基于LINUX或WINCE等等下的驅動程序。驅動程序是鏈接硬件平臺和操作系統的紐帶,當然編寫驅動要同時兼顧操作系統特點和硬件接口的特點。做驅動的開發,需要對于軟硬件都要有所了解,其中更偏重操作系統的理解。這部分工作也是最難做的。

3. 上層(應用層):

應用層,即我們所說的軟件編程了。就相我們手機里QQ和飛信一樣,我們需要根據我們手機的操作系統來編寫應用程序。對于各個開發板,我們同樣需要根據它里邊的系統進行應用開發。這部分,應該是幾乎脫離硬件了,我們只需簡單的了解硬件即可。我們只需深刻理解操作系統的中各個系統函數和接口函數,即可進行開發。需要很強的C++水平。

四、嵌入式系統的設計特點

嵌入式系統的開發通常采用“宿主機/目標機”方式。

宿主機(Host)是一臺通用的計算機,一般是PC機。它通過串口或網絡連接與目標機進行通信。

目標機(Target)常用在嵌入式系統的開發過程期間。目標機可以是嵌入式系統的實際運行環境,也可以是能替代實際環境的仿真系統。

首先,利用宿主機上豐富的設備資源以及良好的開發環境來開發和仿真調試目標機上的軟件。

然后,通過UART接口或Ethernet接口將交叉編譯生成的目標代碼傳輸并下載到目標機上,并用交叉調試器在實時內核/操作系統或監控程序的支持下進行實時分析和調試。

最后,目標機在特定的環境下運行

五、體會

通過學習嵌入式的課程使我了解了什么是嵌入式,所謂嵌入式系統是一種專用的計算機系統,作為裝置或設備的一部分。通過實訓課的訓練不僅使我知道了嵌入式系統的組成及應用,而且拓展了自己的知識和動手能力也對自己今后的發展有很大的的幫助。

第三篇:報告嵌入式心得

專題課學習至今,學到了很多東西。而找工作時,各種筆試面試中,深刻地體會到“嵌入式系統”的重要性。這讓我更堅定了學好嵌入式系統的想法。

嵌入式系統這門課和C語言頗有關聯,這也重新夯實了我的C語言基礎。而良好的C語言能力,也是學習嵌入式的必備基礎。我決定在學好基礎后,在對嵌入式進行擴展學習。

據了解嵌入式學習主要有兩方面:軟件和硬件。嵌入式軟件的比較多,而做硬件不多,但多是高手。嵌入式的軟件又有好多種,主要是針對不同CPU的,但是基本都是用C語言的,還有極少的匯編,主要在BOOT啟動、初始代碼中。目前來說,嵌入式Linux比較流行,安卓就是基于linux內核的。wince、Vxworks什么的貌似不多,特別是vxworks。

我也對嵌入式系統的應用方面進行了了解。現在在市場還是蠻吃香的,可從事的就業方向還是蠻多的比如:消費類電子(手機、PDA、游戲機)、數字 多媒體(網絡點播、機頂盒)、汽車電子(導航儀)、醫療電子、工業控制等行業。

嵌入式系統是二十一世紀科技領域的重大創新,必將推進全球經濟社會高速發展,實現人類發展史上的重大突破。科學在發展,人類在進步,隨著一代又一代IT精英們的不斷努力,未來的嵌入式系統一定會是更加方便人們的工作、學習、生活的好伴侶。

據了解,嵌入式市場有非常大的機會,預計到2012年將有30億臺嵌入式設備交貨。這樣一個“爆炸性”的增長主要是由于終端用戶越來越基于連接性的用戶體驗及應用程序來購買具有智能、連接性、服務導向的設備。

嵌入式系統是“控制、監視或者輔助裝置、機器和設備運行的裝置(”devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。目前國內一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專業計算機系統。

本文從嵌入式系統的 等方面來概要性地介紹嵌入式系統。

1.嵌入式系統的概念

1.1嵌入式系統的定義

根據IEEE(電氣和電子工程師協會)的定義,嵌入式系統是“控制、監視或者輔助裝置、機器和設備運行的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。目前國內一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專業計算機系統。

1.2 嵌入式系統的特點

1.系統內核小。由于嵌入式系統一般是應用于小型電子裝置的,系統的資源相對有限,所以內核較之傳統的操作系統要小得多。

2.專用性強。嵌入式系統的個性化很強,其中的軟件系統和硬件的結合非常緊密,一般要針對硬件進行系統的移植,即使在同一品牌、同一系列的產品中也需要根據系統硬件的變化和增減不斷進行修改。同時針對不同的任務,往往需要對系統進行較大更改,程序的編譯下載要和系統相結合,這種修改和通用軟件的“升級”是完全兩個概念。

3.系統精簡。嵌入式系統一般沒有系統軟件和應用軟件的明顯區分,不要求其功能設計及實現上過于復雜,這樣一方面利于控制系統成本,同時也利于實現系統安全。

4.高實時性的系統軟件(OS)是嵌入式軟件的基本要求。而且軟件要求固態存儲,以提高速度;軟件代碼要求高質量和高可靠性。

5.嵌入式軟件開發要想走向標準化,就必須使用多任務的操作系統。嵌入式系統的應用程序可以沒有操作系統直接在芯片上運行;但是為了合理地調度多任務、利用系統資源、系統函數以及和專家庫函數接口,用戶必須自行選配RTOS(Real-Time Operating System)開發平臺,這樣才能保證程序執行的實時性、可靠性,并減少開發時間,保障軟件質量。

6.嵌入式系統開發需要開發工具和環境。由于其本身不具備自舉開發能力,即使設計完成以后用戶通常也是不能對其中的程序功能進行修改的,必須有一套開發工具和環境才能進行開發,這些工具和環境一般是基于通用計算機上的軟硬件設備以及各種邏輯分析儀、混合信號示波器等。開發時往往有主機和目標機的概念,主機用于程序的開發,目標機作為最后的執行機,開發時需要交替結合進行。

1.3幾個關鍵概念的解釋

1、嵌入式處理器

嵌入式系統的核心,是控制、輔助系統運行的硬件單元。范圍極其廣闊,從最初的4位處理器,目前仍在大規模應用的8位單片機,到最新的受到廣泛青睞的32位,64位嵌入式CPU。

2、實時操作系統

實時操作系統(RTOS-Real Time Operating System):

嵌入式系統目前最主要的組成部分。根據操作系統的工作特性,實時是指物理進程的真實時間。實時操作系統具有實時性,能從硬件方面支持實時控制系統工作的操作系統。其中實時性是第一要求,需要調度一切可利用的資源完成實時控制任務,其次才著眼于提高計算機系統的使用效率,重要特點是要滿足對時間的限制和要求。

3、分時操作系統

對于分時操作系統,軟件的執行在時間上的要求,并不嚴格,時間上的錯誤,一般不會造成災難性的后果。目前分時系統的強項在于多任務的管理,而實時操作系統的重要特點是具有系統的可確定性,即系統能對運行情況的最好和最壞等的情況能做出精確的估計。

4、多任務操作系統

系統支持多任務管理和任務間的同步和通信,傳統的單片機系統和DOS系統等對多任務支持的功能很弱,而目前的Windows是典型的多任務操作系統。在嵌入式應用領域中,多任務是一個普遍的要求。

5、實時操作系統中的重要概念

系統響應時間(System response time):系統發出處理要求到系統給出應答信號的時間。

任務換道時間(Context-switching time):任務之間切換而使用的時間。

中斷延遲(Interrupt latency):機器接收到中斷信號到操作系統作出響應,并完成換道轉入中斷程序的時間。

6、實時操作系統的工作狀態

實時系統中的任務有四種狀態:運行(Executing),就緒(Ready),掛起(Suspended),冬眠(Dormant)。

運行:獲得CPU控制權。

就緒:進入任務等待隊列,通過調度轉為運行狀態。

掛起:任務發生阻塞,移出任務等待隊列,等待系統實時事件的發生而喚醒,從而轉為就緒或運行。

冬眠:任務完成或錯誤等原因被清除的任務,也可以認為是系統中不存在的任務。

任何時刻系統中只能有一個任務在運行狀態,各任務按級別通過時間片分別獲得對CPU的訪問權。

2.嵌入式系統的組成

有關嵌入式系統的組成非常多,限于篇幅,本文只介紹其中機電最關鍵概念。嵌入式系統的組成

1)嵌入式系統硬件層。一般包括有:嵌入式處理器、存儲器、I/O系統和外設 2)嵌入式系統的軟件系統。包括:操作系統、應用軟件

嵌入式系統的開發工具(1)硬件開發工具包括:仿真器等;其它(示波器等)(2)軟件開發工具包括:編譯、連接、定位軟件,通常使用C語言;調試軟件。

3)中間層。它將系統軟件與底層硬件部分隔離,使得系統的底層設備驅動程序與硬件無關。4)應用層

一個嵌入式系統裝置一般都由嵌入式計算機系統和執行裝置組成,如圖1-1所示,嵌入式計算機系統是整個嵌入式系統的核心,由硬件層、中間層、系統軟件層和應用軟件層組成。執行裝置也稱為被控對象,它可以接受嵌入式計算機系統發出的控制命令,執行所規定的操作或任務。

2.1硬件層

硬件層中包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設備接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式處理器基礎上添加電源電路、時鐘電路和存儲器電路,就構成了一個嵌入式核心控制模塊。其中操作系統和應用程序都可以固化在ROM中。

2.1.1、嵌入式微處理器

嵌入式系統硬件層的核心是嵌入式微處理器,嵌入式微處理器與通用CPU最大的不同在于嵌入式微處理器大多工作在為特定用戶群所專用設計的系統中,它將通用CPU許多由板卡完成的任務集成在芯片內部,從而有利于嵌入式系統在設計時趨于小型化,同時還具有很高的效率和可靠性。

嵌入式微處理器的體系結構可以采用馮諾依曼體系或哈佛體系結構;指令系統可以選用精簡指令系統(Reduced Instruction Set Computer,RISC)和復雜指令系統CISC(Complex Instruction Set Computer,CISC)。RISC計算機在通道中只包含最有用的指令,確保數據通道快速執行每一條指令,從而提高了執行效率并使CPU硬件結構設計變得更為簡單。

嵌入式微處理器有各種不同的體系,即使在同一體系中也可能具有不同的時鐘頻率和數據總線狂度,或集成了不同的外設和接口。據不完全統計,目前全世界嵌入式微處理器已經超過1000多種,體系結構有30多個系列,其中主流的體系有ARM、MIPS、PowerPC、X86和SH等。但與全球PC市場不同的是,沒有一種嵌入式微處理器可以主導市場,僅以32位的產品而言,就有100種以上的嵌入式微處理器。嵌入式微處理器的選擇是根據具體的應用而決定的。

2.1.2、存儲器

嵌入式系統需要存儲器來存放和執行代碼。嵌入式系統的存儲器包含Cache、主存和輔助存儲器。

1.Cache

Cache是一種容量小、速度快的存儲器陣列它位于主存和嵌入式微處理器內核之間,存放的是最近一段時間微處理器使用最多的程序代碼和數據。

在嵌入式系統中Cache全部集成在嵌入式微處理器內,可分為數據Cache、指令Cache或混合Cache,Cache的大小依不同處理器而定。一般中高檔的嵌入式微處理器才會把Cache集成進去。

2.主存

主存是嵌入式微處理器能直接訪問的寄存器,用來存放系統和用戶的程序及數據。它可以位于微處理器的內部或外部,其容量為256KB~1GB,根據具體的應用而定,一般片內存儲器容量小,速度快,片外存儲器容量大。

常用作主存的存儲器有:

ROM類 NOR Flash、EPROM和PROM等。

RAM類 SRAM、DRAM和SDRAM等。

其中NOR Flash 憑借其可擦寫次數多、存儲速度快、存儲容量大、價格便宜等優點,在嵌入式領域內得到了廣泛應用。

3.輔助存儲器

輔助存儲器用來存放大數據量的程序代碼或信息,它的容量大、但讀取速度與主存相比就慢的很多,用來長期保存用戶的信息。

2.1.3、通用設備接口和I/O接口

嵌入式系統和外界交互需要一定形式的通用設備接口,如A/D、D/A、I/O等,外設通過和片外其他設備的或傳感器的連接來實現微處理器的輸入/輸出功能。

2.2軟件系統

系統軟件層由實施多任務操作系統(Real-time Operation System,RTOS)、文件系統、圖形用戶接口(Graphic User Interface,GUI)、網絡系統及通用組件模塊組成。RTOS是嵌入式應用軟件的基礎和開發平臺。

嵌入式實時操作系統:

實時多任務操作系統(RTOS)是嵌入式應用軟件的基礎和開發平臺。RTOS是一段嵌入在目標代碼中的程序,系統復位后首先執行,相當于用戶的主程序,其他程序都建立在RTOS之上。

2.3中間層

硬件層與軟件層之間為中間層,也稱為硬件抽象層(Hardware Abstract Layer,HAL)或板級支持包(Board Support Package,BSP),它將系統上層軟件與底層硬件分離開來,使系統的底層驅動程序與硬件無關,上層軟件開發人員無需關心底層硬件的具體情況,根據BSP 層提供的接口即可進行開發。該層一般包含相關底層硬件的初始化、數據的輸入/輸出操作和硬件設備的配置功能。

BSP具有以下兩個特點:

硬件相關性:因為嵌入式實時系統的硬件環境具有應用相關性,而作為上層軟 件與硬件平臺之間的接口,BSP需要為操作系統提供操作和控制具體硬件的方法。

操作系統相關性:不同的操作系統具有各自的軟件層次結構,因此,不同的操作系統具有特定的硬件接口形式。

3.嵌入式系統的開發

3.1嵌入式兩種開發

硬件,主要使用語言是C語言和匯編,例如做dsp開發,做驅動開發,這類的開發對硬件要求比較高,短期內比較難掌握,除非是專業人士,另外,這類開發的就業機會比較少,因為國內的硬件設計力量很弱,稍復雜的硬件都交給國外公司設計,所以大學生找這樣的工作很難,這也是為什么很多這類的畢業生都轉行去做應用層的軟件開發或者做網絡維護之類的工作了。

軟件,主要基于嵌入式操作系統,例如Symbian、Linux、Windows mobile、Android等等,開發人員主要從事嵌入式操作系統和應用軟件的開發。特點是:比較容易上手學習,就業機會多,因為嵌入式設備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統的最主要工作。越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢,所以需要大量的研發人員,而且就業前景也非常的看好。

3.2嵌入式系統開發生命周期

硬件與軟件將同時進行開發。理解硬件與軟件功能相互之間的關系及界限有助于確保設計要求得到完整正確的理解和實現。

早在設計要求的定義與分析階段,就必須分配系統仿真、原型設計和行為建模結果、一旦分配結束,就可以立即著手具體的設計和實現。實時系統開發中軟硬件的并行設計會使用到各種分析技術,包括:

1.硬件與軟件仿真;

2.硬件/軟件協同仿真;

3.可調度的建模技術,如速率恒定分析;

4.原型設計和漸進式開發。

低層仿真可以用來為總線寬度和數據流程建模,這對性能評估是非常有用的。高層仿真可以滿足功能的交互,并促成硬件/軟件權衡研究及有效性設計。

4.嵌入式系統的現狀與發展

發展現狀:

隨著信息化,智能化,網絡化的發展,嵌入式系統技術也將獲得廣闊的發展空間。

硬件方面,不僅有各大公司的微處理器芯片,還有用于學習和研發的各種配套開發包。目前低層系統和硬件平臺經過若干年的研究,已經相對比較成熟,實現各種功能的芯片應有盡有。而且巨大的市場需求給我們提供了學習研發的資金和技術力量。

從軟件方面講,也有相當部分的成熟軟件系統。國外商品化的嵌入式實時操作系統,已進入我國市場的有WindRiver、Microsoft、QNX和Nuclear等產品。

發展趨勢:

信息時代,數字時代使得嵌入式產品獲得了巨大的發展契機,為嵌入式市場展現了美好的前景,同時也對嵌入式生產廠商提出了新的挑戰,從中我們可以看出未來嵌入式系統的幾大發展趨勢:。

1.嵌入式開發是一項系統工程,因此要求嵌入式系統廠商不僅要提供嵌入式軟硬件系統本身,同時還需要提供強大的硬件開發工具和數據庫支持。

目前很多廠商已經充分考慮到這一點,在主推系統的同時,將開發環境也作為重點推廣。2.網絡互聯成為必然趨勢。

未來的嵌入式設備為了適應網絡發展的要求,必然要求硬件上提供各種通信接口。傳統的單片機對于網絡支持不足,而新一代的嵌入式處理器已經開始內嵌網絡接口,支持更多協議。

3.精簡系統內核、算法,降低功耗和軟硬件成本。

未來的嵌入式產品是軟硬件緊密結合的設備,為了減低功耗和成本,需要設計者盡量精簡系統內核,只保留和系統功能緊密相關的軟硬件。

第四篇:嵌入式報告

題目:嵌入式系統學習心得

班級:學號:姓名:

1.嵌入式的發展 A.簡單操作系統階段

20世紀80年代,隨著微電子工藝水平的提高,IC制造商開始把嵌入式應用中所需要的微處理器、I/O接口、串行接口以及RAM、ROM等部件統統集成到一片VLSI中,制造出面向I/O設計的微控制器,并一舉成為嵌入式系統領域中異軍突起的新秀。與此同時,嵌入式系統的程序員也開始基于一些簡單的“操作系統”開發嵌入式應用軟件,大大縮短了開發周期、提高了開發效率。

這一階段嵌入式系統的主要特點是:出現了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各種簡單的嵌入式操作系統開始出現并得到迅速發展。此時的嵌入式操作系統雖然還比較簡單,但已經初步具有了一定的兼容性和擴展性,內核精巧且效率高,主要用來控制系統負載以及監控應用程序的運行。

B.實時操作系統階段

20世紀90年代,在分布控制、柔性制造、數字化通信和信息家電等巨大需求的牽引下,嵌入式系統進一步飛速發展,而面向實時信號處理算法的DSP產品則向著高速度、高精度、低功耗的方向發展。隨著硬件實時性要求的提高,嵌入式系統的軟件規模也不斷擴大,逐漸形成了實時多任務操作系統(RTOS),并開始成為嵌入式系統的主流。

這一階段嵌入式系統的主要特點是:操作系統的實時性得到了很大改善,已經能夠運行在各種不同類型的微處理器上,具有高度的模塊化和擴展性。此時的嵌入式操作系統已經具備了文件和目錄管理、設備管理、多任務、網絡、圖形用戶界面(GUI)等功能,并提供了大量的應用程序接口(API),從而使得應用軟件的開發變得更加簡單。

C.面向Internet階段

21世紀無疑將是一個網絡的時代,將嵌入式系統應用到各種網絡環境中去的呼聲自然也越來越高。目前大多數嵌入式系統還孤立于Internet之外,隨著Internet的進一步發展,以及Internet技術與信息家電、工業控制技術等的結合日益緊密,嵌入式設備與Internet的結合才是嵌入式技術的真正未來。

信息時代和數字時代的到來,為嵌入式系統的發展帶來了巨大的機遇,同時也對嵌入式系統廠商提出了新的挑戰。目前,嵌入式技術與Internet技術的結合正在推動著嵌入式技術的飛速發展,嵌入式系統的研究和應用產生了如下新的顯著變化:

新的微處理器層出不窮,嵌入式操作系統自身結構的設計更加便于移植,能夠在短時間內支持更多的微處理器。

嵌入式系統的開發成了一項系統工程,開發廠商不僅要提供嵌入式軟硬件系統本身,同時還要提供強大的硬件開發工具和軟件支持包。

通用計算機上使用的新技術、新觀念開始逐步移植到嵌入式系統中,如嵌入式數據庫、移動代理、實時CORBA等,嵌入式軟件平臺得到進一步完善。

各類嵌入式Linux操作系統迅速發展,由于具有源代碼開放、系統內核小、執行效率高、網絡結構完整等特點,很適合信息家電等嵌入式系統的需要,目前已經形成了能與Windows CE、Palm OS等嵌入式操作系統進行有力競爭的局面。網絡化、信息化的要求隨著Internet技術的成熟和帶寬的提高而日益突出,以往功能單一的設備如電話、手機、冰箱、微波爐等功能不再單一,結構變得更加復雜,網絡互聯成為必然趨勢。

2.嵌入式的應用

嵌入式系統主要用于各種信號處理與控制,目前已在國防、國民經濟及社會生活各領域普遍采用,可用于企業、軍隊、辦公室、實驗室以及個人家庭等各種場所。同時,嵌入式系統作為數字化電子信息產品的核心,嵌入式計算機斷層成像系統已出口日本。

軍用

各種武器控制(火炮控制、導彈控制、智能炸彈制導引爆裝置)、坦克、艦艇、轟炸機等陸海空各種軍用電子裝備,雷達、電子對抗軍事通信裝備,野戰指揮作戰用各種專用設備等。

家用

各種信息家電產品,如數字電視機,機頂盒,數碼相機,VCD、DVD 音響設備,可視電話,家庭網絡設備,洗衣機,電冰箱,智能玩具等。

工業用

各種智能測量儀表、數控裝置、可編程控制器、控制機、分布式控制系統、現場總線儀表及控制系統、工業機器人、機電一體化機械設備、汽車電子設備等。商用

各類收款機、POS 系統、電子秤、條形碼閱讀機、商用終端、銀行點鈔機、IC 卡輸入設備、取款機、自動柜員機、自動服務終端、防盜系統、各種銀行專業外圍設備。

辦公用

復印機、打印機、傳真機、掃描儀、激光照排系統、安全監控設備、手機、尋呼機、個人數字助理(PDA)、變頻空調設備、通信終端、程控交換機、網絡設備、錄音錄像及電視會議設備、數字音頻廣播系統等。

醫用電子設備

各種醫療電子儀器,X 光機、超聲診斷儀、計算機斷層成像系統、心臟起搏器、監護儀、輔助診斷系統、專家系統等。

3.嵌入式的特點

嵌入式處理器的應用軟件是實現嵌入式系統功能的關鍵,對嵌入式處理器系統軟件和應用軟件的要求也和通用計算機有所不同,主要有以下幾點:

(1)軟件要求固態化存儲為了提高執行速度和系統可靠性,嵌入式系統中的軟件一般都固化在存儲器芯片或嵌入式微控制器本身中,而不是存貯于磁盤等載體中。

(2)軟件代碼要求高質量、高可靠性盡管半導體技術的發展使處理器速度不斷提高、片上存儲器容量不斷增加,但在大多數應用中,存儲空間仍然是寶貴的,還 存在實時性的要求。為此要求程序編寫和編譯工具的質量要高,以減小程序二進制代碼長度、提高執行速度。

(3)系統軟件(OS)的高實時性是基本要求在多任務嵌入式系統中,對重要性各不

相同的任務進行統籌兼顧的合理調度是保證每個任務及時執行的關鍵,單純通 過提高處理器速度是無法完成和沒有效率的,這種任務調度只能由優化編寫的系統軟件來完成,因此系統軟件的高實時性是基本要求。

(4)多任務操作系統是知識集成的平臺和走向工業化標準化道路的基礎,嵌入式系統開發需要開發工具和環境嵌入式系統本身不具備開發能力,即使設計完成 以后用戶通常也是不能對其中的程序功能進行修改的,必須有一套開發工具和環境才能進行開發,這些工具和環境一般是基于通用計算機上的軟硬件設備以及各種邏輯分析儀、混合信號示波器等。

(5)嵌入式系統軟件需要實時多任務操作系統開發平臺(RTOS)通用計算機具有完善的操作系統和應用程序接口,是計算機基本組成不可分離的一部分,應用程序的開發以及完成后的軟件都在Os平臺上面運行,但一般不是實時的。嵌入式系統則不同,應用程序可以沒有操作系統直接在芯片上運行:但是為了合理地調度多任務、利用系統資源,用戶必須自行選配RTOS開發平臺,這樣才能保證程序執行的實時性、可靠性,并減少開發時間,保障軟件質量。

(6)在嵌入式系統的軟件開發過程中,采用C語言將是最佳和最終的選擇由于匯編語言是一種非結構化的語言,對于大型的結構化程序設計已經不能完全勝任了。這就要求我們采用更高級的C語言去完成這一工作。

4.實訓內容簡介

A.實訓內容

1)嵌入式系統及AM軟件介紹

2)Metrowerks CodeWarrior集成開發環境介紹

3)TESTI寄存器相加

4)GPIO 模 塊

5)向量中斷控制器(VIC)模塊

6)定 時 器 s

7)L C D顯示

8)實時操作系統簡介

B.具體實例簡介

a、b、實驗內容:LCD 實驗步驟:

1).啟動ADS1.2,使用ARM7 Executable Image for lpc2210工程模板建立一個工程LCD_Disphoto;

2).建立源文件lcddrive.c、lcddrive.h,編寫液晶模塊的驅動程序,然后將lcddrive.c添加的工程的user組中;

3).建立源文件test.c,編寫實驗程序,然后添加到工程的user組中;

4).修改config.h,增加包含LCDDRIVE.H頭文件;#include“LCDDRIVE.H”

5.心得體會

通過本次實驗,我也學會了如何去分析問題,如何找出自己設計中的不足,繼而去排除解決問題,這就是一個自我學習的過程當我們通過實驗去學習理論知識時,自己動手得出的結論,不僅能加深我們對嵌入式的理解,更能加深我們 對此的記憶

第五篇:嵌入式課程設計報告

福建工程學院

《嵌入式系統》課程設計

報告書

題目:

基于S3C2440設備驅動及其界面設計

班級:

姓名:

學號:

指導老師:

陳靖,張平均,李光煬

目錄

一、設計課題...............................................................................................................................4

二、設計目的...............................................................................................................................4

三、設計任務及要求...................................................................................................................4

四、設計內容...............................................................................................................................5

五、操作界面的生成...................................................................................................................7

六、操作界面調試.......................................................................................................................9

七、設計總結.............................................................................................................................10

八、設計參考書.........................................................................................................................12

九、附件(程序).....................................................................................................................13

一、設計課題

基于S3C2440的設備驅動及其界面設計

二、設計目的:

1.進一步鞏固嵌入式系統的基本知識; 2.掌握嵌入式應用系統的基本結構; 3.掌握嵌入式系統開發環境建立和使用;

4.掌握嵌入式系統基本驅動、應用程序的設計調試和編譯移植方法; 5.學會查閱有關專業資料及設計手冊; 6.MiniGUI界面編程。

三、設計任務及要求:

1.掌握嵌入式系統開發環境建立和使用;

2.掌握嵌入式系統基本驅動、應用程序的設計調試和編譯移植方法;

3、MiniGUI在PC上的安裝、移植

4、Linux基本輸入輸出驅動程序設計編譯與移植

5、基于MiniGUI的基本輸入輸出應用編程編譯與移植

6、編寫設計說明書(方案的確定、設計環節的考慮及必要說明等)及設備的使用說明;

7、繪制有關圖紙.四、設計內容:

1、基礎知識準備

1)講解設計任務;2)熟悉ubuntu的使用;3)熟悉TQ2440試驗系統的使用;4)掌握嵌入式系統開發環境建立和使用;

5)掌握嵌入式系統基本驅動、應用程序的設計調試和編譯移植方法.2、界面設計環境構建:MiniGUI在PC上的安裝、移植

2.1、MiniGUI在pc機上安裝和運行

建立工作目錄:mkdir /minigui-free

cd /minigui-free mkdir /src 復制源文件包到工作目錄: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)依次運行libcross.sh,rescross.sh,samplecorss.sh(6)到nfsroot的,目錄下,將libreduce.sh考到這個目錄下,運行libreduce.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運行MiniGUI例子程序(1)打開qvfb:qvfb &(2)運行helloword:

五、操作界面的生成

1、操作界面面執行文件的生成

1).在/minigui-free/mg-samples-1.6.10/src/修改源文件treeview.c 2).再次運行samplecorss.sh,生成執行文件treeview

2、利用nfs進行掛載

1).將本地PC機的網絡方式設置成為橋接

2).查看/etc/exports下可以掛載的目錄

3).啟動服務/etc/init.d/nfs-kernel-server restart 4).查看本機和ARM上的IP地址,設置在同一網段,然后ping,使其能夠互通。5).在超級終端上,進行操作

Mount-o nolock,rsize=1024,wsize=1024 本機IP:/ /mnt

將虛擬機和ARM進行掛載,可以查看到虛擬機根目錄下的文件。

3、在超級終端上將需要的文件從虛擬機上復制到ARM機上

1).重新燒寫文件系統鏡像文件

2).掛載成功后,將/mnt/minigui-free/nfsroot/lib/*復制到/usr/lib/ 3).將/mnt/minigui-free/nfsroot/usr/local/lib/*復制到/usr/local/lib/ 4).將/mnt/etc/MiniGUI.cfg復制到/etc/ 8

5).將/mnt/minigui-free/mg-samples-1.6.10/src/*復制到/usr/minigui/

4、在超級終端上運行執行文件

1).進入/usr/minigui/運行treeview文件 2).可以再操作界面上現實我們所設計的界面

六、操作界面調試

1、點擊LED1LED2LED3LED4,分別控制四盞led燈的亮暗,調試界面如下:

2、輸入頻率值,點擊START鍵控制四盞led燈閃爍,調試界面如下:

七、設計總結

1、設計過程中遇到的問題

錯誤1:

InitGUI: Can not initialize colors of window element!InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.解決方法:正確配置MiniGUI.cfg文件 錯誤2:

Permission denied 解決方法:權限不夠,使用root用戶登錄。錯誤3:

編譯出錯未找到jpeg,png等

解決方法:安裝zlib,png,jpeg庫。

錯誤4:

出現符號未找到等編譯錯誤 解決方法:make clean 后在make 錯誤5:

在minigui創建和移植的過程中,出現lib庫編譯不成功的現象,這是由于minigui是基于qt3的,因此需要添加qt3所在路徑至配置文件。錯誤:6 在開發板上添加鼠標設備后,提示視頻采集失敗,這是因為/etc下的配置文件MiniGUI.cfg中對外設控制范圍的控制過大,銀將其修改為與界面統一大小800*480.錯誤:7 在執行led燈控制程序之前應該首先停止開發板上原有的流水燈進程led-player。錯誤:8 運行執行程序treeview后界面上出現兩個光標,此時應該在/etc/init.d下的rcS文件中停用qt3的光標。

2、心得體會

本學期為期兩周的嵌入式課程設計在不知不覺中結束了,雖說這次課程設計時間不是很長,但是感覺自己收獲頗豐,不僅學習到了一些新知識,回顧了以前的一些快要遺忘的知識點,而且使自己的學習目標更加明確,學習方法更加完善,也體會到軟件開發的趣味,更加清楚地認識到了自己在軟件開發及學習上的一些不足之處。

兩周的課程設計,在計算機這個博大深奧的領域我感覺自己還有好多東西要學,還有好多的東西不懂!嵌入式軟件開發應用廣泛而且前景很好,目前正處于人才緊缺的關口,嵌入式技術在未來能夠得到更加廣泛的應用。學好嵌入式,C語言很重要,所以感覺自己有必要在學習、積累一下這方面的知識。很多東西的學習不是一帆風順也是比較耗時的,嵌入式也不例外,要想學好還必須下大力氣,還必須堅持。這次的課程設計讓我明確了一點:嵌入式開發對于提升我們的系統知識有很大的幫助,尤其是操作系統的知識。嵌入式

系統開發對于我們的知識面要求非常的廣,且要有一定的深度。這次的課程設計因為是一個有針對性的訓練,所以記的會非常牢固。跟平時上課不太一樣,平時上完理論課很少有時間上機進行時間或者隔幾天才上機練習,等到上機時一些東西可能遺忘了,比較耗費時間。在課上,有老師在前面演示我們感覺看得懂或感覺沒問題,可輪到我們獨立完成的時候,因為實際操作的少,其中的問題就來了!我很感謝學校特別是學院老師有實訓這樣的安排,把我們這一學期學的東西系統的集中的進行訓練,讓我們深刻明確的體驗了一下軟件開發的流程!還要感謝給我們實訓的楚老師,感覺楚老師能力很強,也很有耐心,即使老師講了很多遍的問題,我們不會,老師還是會走進我們給我們耐心的指導,還給我們講一些學習計算機的方法,一些軟件開發需要注意的細節,讓我們知道自己在哪方面不足,需要加強,也讓我們了解到哪些需要認真的學習,那些是重點,不是沒有方向的亂學一通,什么也學不好!經過這次的實訓,我真真確確的感受到了計算機在我們生活中工作中的運用,這些軟件、程序能讓我們提高工作的效率,更直觀更便捷的切入主題。當然,在學習的過程中并不是一帆風順的,在這之中,因為要操作的東西很多,有時錯一步,后面的結果就無法顯示,而自己的計算機水平還有待提高,根本檢查不出來是哪里出了錯!這時候,老師都會耐心的過來幫助我!在平時我們就需要好好的查閱書籍或者上網搜集相關資料去解決問題。

短短兩周的課程設計很快結束了,我發現我對計算機這個專業、對嵌入式技術、對Linux都有了新的認識。通過這次的實訓,我了解到,要真真正正的掌握計算機程序還不是一件簡單容易的事兒,但真正掌握后,它帶給我們的將是無窮的便捷與科技,我喜歡高端便捷的生活。我希望我能做計算機這個萬能機器人的主人而不是奴隸,我會努力加油的!感謝學校,感謝老師給我的幫助,讓我的思想、技能又上了一個臺階!感謝!加油!

八、設計參考書

1、《嵌入式系統接口設計與Linux驅動程序開發》

2、《ARM9嵌入式LINUX系統構建與應用》

4、MiniGUI編程手冊

5、Linux應用程序編程

九、附件(程序)

#include

#include

/*包括 MiniGUI 常用的宏以及數據類型的定義*/ #include /*包含了全局的和通用的接口函數以及某些雜項函數的定義*/ #include

/*包含了

MiniGUI

繪圖函數的接口定義*/ #include

/*包含了

libminigui 中所有內建控件的接口定義*/ #include #include #include

/*包含了許多UNIX系統服務的函數原型*/ #include

/*提供對I/O控制的函數*/

#define ID_LED1 101

/*定義各個控件與定時器的ID號*/ #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)

/*自定義一個畫圓函數,x、y、r、which分別表示圓心坐標、半徑、顏色*/ {

HDC hdc;

/*定義設備上下文句柄*/ int color;color=((which==0)?PIXEL_green:PIXEL_red);

hdc=BeginPaint(hdig);

/*獲得設備上下文句柄*/ SetBrushColor(hdc,color);

/*設置畫刷顏色*/ FillCircle(hdc,x,y,r);

/*調用園填充函數*/ EndPaint(hdig,hdc);

/*釋放設備上下文句柄*/ }

static DLGTEMPLATE DlgInitProgress=

/*定義對話框模板.用static類型數據,使該數據的定義只在所在文件中有效,以免因為名字空間污染造成潛在的編譯或連接錯誤*/ {

WS_BORDER|WS_CAPTION,/*對話框風格,WS_BORDER創建有邊框的窗口 ,WS_CAPTION創建含標題欄的主窗口*/

WS_EX_NONE,/*對話框擴展風格,WS_EX_NONE表示無擴展風格*/

0,0,800,480,/*對話框位置,左上角坐標(0,0),800、480分別為寬和高*/

“MY_LED_CONTROL”,/*對話框標題*/

0,/*對話框圖標*/

0,/*對話框菜單*/

9,/*對話框中控件個數。這個必須要匹配*/

NULL,/*pointer to control array*/

0

/*附加值*/ };

static CTRLDATA CtrlInitData[]=

/*控件數組*/ {

{

“static”,/*控件類型*/

WS_VISIBLE|SS_SIMPLE,/*控件風格,WS_VISIBLE創建初始可見的窗口,SS_SIMPLE顯示單行文本*/

100,270,150,40,/*控件位置*/

ID_TEXT1,/*控件ID*/

“Please input frequency”,/*控件內容*/

0,/*附加值*/

WS_EX_NONE

/*控件擴展風格*/

}, { “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創建旋鈕數字框,CBS_AUTOLOOP框中的數字將自動循 環顯示*/

435,270,80,40,ID_COMBOBOX,“0”,/*旋鈕數字框初始值*/

0,WS_EX_NONE

} };

static int DialogBoxProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)/*對話框過程函數,用來接收和處理所有發送到該窗口的消息*/ {

int number;

/*用來存從旋鈕數字框獲得的數值*/

static int t=0;

int num;

/*存放定時時間*/

switch(message)

{

case MSG_INITDIALOG:

/*用戶在定義自己的對話框回調函數時,需要處理

MSG_INITDIALOG消息,該消息是在MiniGUI根據對話框模板建立對話框以及 控件之后,發送到對話框回調函數的。*/

SendDlgItemMessage(hWnd, ID_COMBOBOX, CB_SETSPINRANGE, 0, 10000);

/*設置旋鈕數字框的最大小值*/

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++;

/*定時器消息,這里完成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);/*獲取旋鈕數字框的數值*/

printf(“**********%d*******************n”,number);

printf(“*******************start2*********************n”);

if(number!=0)

{

printf(“*******************start3*********************n”);

num=(int)(1000*(1.0/number));

/*將頻率轉換為時間*/

printf(“*******************start4*********************n”);

}

else

{

printf(“*******************start5*********************n”);

num=1000;

}

printf(“*******************start6*********************n”);

printf(“*******************start7*********************n”);

printf(“*******************start8*********************n”);

SetTimer(hWnd,ID_TIMER,num);/*創建定時器,時間為num*10ms*/ printf(“*************************SetTimer OK******************************n”);

SendMessage(hWnd,BM_CLICK,0,0);

/*發送點擊信息*/ printf(“*************************SendMessage OK******************************n”);

//for(i=0;i++;i<10000)

/*當初用for循環時無法進入循環,也許是因為消息本身有循環機制,用for循環太多也許沖突,所以后來用了定時器*/

//{

//

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);/*關閉定時器。下面的表示燈滅*/

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));

/*對話框的缺省消息處理由 DefaultDialogProc 函數完成*/ }

static void InitDialogBox(HWND hWnd){ DlgInitProgress.controls=CtrlInitData;

/*將對話框模板結構和控件結構數組關聯起來*/ DialogBoxIndirectParam(&DlgInitProgress,hWnd,DialogBoxProc,0L);/*創建對話框*/

printf(“*************create dialog**********************n”);}

/*****************************************************************

主窗口的過程函數

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 , “led” , 0 , 0);

/*選擇PROCESSES模式*/

#endif

printf(“****************into main*********************n”);

fd_led=open(“/dev/GPIO-Control”,0);

/*打開驅動設備*/

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;/窗口風格/

CreateInfo.dwExStyle=WS_EX_NONE;

/窗口擴展風格/

CreateInfo.spCaption=“MY_LED_CONTROL_WIN”;

/窗口標題/

CreateInfo.hMenu=0;

/菜單/

CreateInfo.hCursor= GetSystemCursor(0);

/光標/

CreateInfo.hIcon=0;

/圖標/

CreateInfo.MainWindowProc=LedWinProc;

/設置主窗口的窗口函數,所用發往該窗口的消息由該函數處理/

CreateInfo.lx=0;

/窗口位置/

CreateInfo.ty = 0;

CreateInfo.rx = 240;

CreateInfo.by = 180;

CreateInfo.iBkColor=COLOR_lightwhite;

/設置背景顏色/

CreateInfo.dwAddData=0;

/附加數值/

CreateInfo.hHosting=HWND_DESKTOP;

/設置窗口的托管窗口為桌面窗口/

hMainWnd = CreateMainWindow(&CreateInfo);

/創建主窗口,返回創建窗口的句柄/

if(hMainWnd == HWND_INVALID)

return-1;

ShowWindow(hMainWnd,SW_SHOWNORMAL);

/顯示窗口的顯示方式/

while(GetMessage(&Msg, hMainWnd))/獲取主窗口的句柄,指向MSG結構指針/

{

TranslateMessage(&Msg);

/將擊鍵消息轉換為MSG_CHAR消息,然后直接發送到窗口的過程函數/

DispatchMessage(&Msg);

/獲取消息的目標窗口的窗口過程,然后直接調用 該窗口過程函數對消息進行處理/

}

MainWindowThreadCleanup(hMainWnd);/清除主窗口所使用消息隊列的系統資源/ *****************************************************************************/

return 0;

}

#ifndef _MGRM_PROCESSES #include #endif

下載嵌入式報告word格式文檔
下載嵌入式報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式操作系統課程報告

    華北水利水電大學North China University of Water Resources and Electric Power嵌入式操作系統課程報告題目 嵌入式系統課程綜和論述......

    嵌入式專業見習報告[范文]

    嵌 入 式 軟 件 專 業 見習報 告 院(系):********* 專業班級:******* 姓名:學號:********** 大一結束了,學習了嵌入式軟件相關方面的知識,我對這個專業有了初步了解,但這只是一些皮......

    暑假嵌入式實習報告

    一、嵌入式的概述: 隨著信息化技術的發展和數字化產品的普及,以計算機技術、芯片技術和軟件技術為核心的嵌入式系統再度成為當前研究和應用的熱點,通信、計算機、消費電子技術(3......

    嵌入式實訓報告

    嵌入式實訓報告 班級:電子信息1301 姓名:鐘海明 學號:3138702144 同組人:胡曉海 指導老師:韋龍新 1 目錄: 一、實訓目的---------------------3 二、實訓要求--------------------......

    嵌入式系統設計報告

    嵌入式系統設計實驗報告 班 級:學 號:姓 名:成 績:指導教師: 20090612 2009112107 侯金鐘 武俊鵬、劉書勇 1. 實驗一 1.1 實驗名稱 嵌入式系統硬件開發環境 1.2 實驗目的 1.熟......

    嵌入式系統實習報告

    一、嵌入式系統開發與應用概述在今日,嵌入式ARM 技術已經成為了一門比較熱門的學科,無論是在電子類的什么領域,你都可以看到嵌入式ARM 的影子。如果你還停留在單片機級別的學習......

    嵌入式培訓實習報告

    第一天:今天是我到杰普軟件科技有限公司實習的第一天,也是我第一次接觸到linux系統,。雖然我以前就知道這個系統,但以前從沒見過,現在第一次用感覺還不錯。 老師在上課的時候還介......

    嵌入式讀書報告(合集5篇)

    《深入理解Linux內核,第三版》讀后感這學期在我們學習嵌入式將近結束的時候,老師推薦了幾本書,叫我們感興趣的下去自己借來看看。一來是為了更好的學習知識,提高我們的專業水平,......

主站蜘蛛池模板: 人妻少妇精品一区二区三区| 精品国产一区二区三区吸毒| 亚洲国产成人高清在线观看| 亚洲欧美精品综合一区| 国内精品久久久久久久久齐齐| 蜜桃av色偷偷av老熟女| 亚洲综合色aaa成人无码| 国产精品一区二区久久乐下载| 久久九色综合九色99伊人| 日韩人妻潮喷中文在线视频| 国产伦精品一区二区三区免费| 影音先锋男人av鲁色资源网| 精品国产免费一区二区三区香蕉| 一本无码中文字幕在线观| 国产精品久久一区二区三区| 人成午夜大片免费视频77777| 国产在线精品一区二区三区直播| 国产在线精品一区二区| 又色又爽又高潮免费视频观看| 亚洲 欧美 激情 小说 另类| 人人妻人人爽人人澡av| 久久婷婷五月综合色丁香| 日韩国产人妻一区二区三区| 欧美性受xxxx黑人猛交| 久久综合九色欧美综合狠狠| 日本护士毛茸茸高潮| 强行无套内谢大学生初次| 俺去俺来也在线www色官网| 久久久久人妻一区精品下载| 99久视频只有精品2019| 亚洲日产一线二线三线精华液| 久久国产精品久久久久久| 亚洲综合色婷婷在线影院p厂| 亚洲国产欧美在线人成大黄瓜| 人人婷婷人人澡人人爽| 国产手机在线αⅴ片无码观看| 无码三级在线看中文字幕完整版| 自拍偷在线精品自拍偷无码专区| 97人人超碰国产精品最新o| 中文久久乱码一区二区| 中文字幕在线亚洲精品|