嵌入式實習總結
一段忙碌又充實的實習生活又告一段落了,回顧這段時間的實習,知識和能力都得到了很大提高,這時候最關鍵的一步就是寫實習總結了。那麼好的實習總結是什麼樣的呢?下面是小編為大家收集的嵌入式實習總結,歡迎閱讀,希望大家能夠喜歡。
嵌入式實習總結1
嵌入式是我的夢想,我很羨慕能夠在嵌入式方面獨檔一面的高手,希望有一天我也能像他們那樣自信自如的在嵌入式這片熱土上揮灑著自己的青春和浪漫。帶著無比豪邁的心情和繽紛的夢想來到易嵌學習嵌入式,在新的老師、新的同學和新的環境中,我開始了我的嵌入式學習,開始了新一輪的拼搏。
在易嵌短暫的兩個月,我們從linux基礎入手,強化了c語言程式設計,學習了linux系統程式設計和網路程式設計。時間雖短,但成長很快,無論是理論知識還是實踐能力都得到了大幅度的提高。在這裡將理論和實踐相結合,相互促進,相互補充,使得學習更加透徹。透過用不同方法實現同一個專案,不斷深入,層層推進,學以致用!
在易嵌的這個暑假,我過得充實而快樂。在這裡有著同學間的探討、師生間的互動和魔鬼般的訓練!在我豐富多彩的人生路上留下了永遠亮麗與難忘的記憶!
實踐報告正文:看著四年的大學生活就快要結束了,心中隱隱有一種傷感與失落,我陷入了沉思:該挺直腰桿走自己的路了!學習嵌入式是我的夢想,我很羨慕能夠在嵌入式方面獨檔一面的高手,希望有一天我也能像他們那樣自信自如的在嵌入式這片熱土上揮灑著自己的青春和浪漫。
當我決定好好利用這個暑假,學習我一直都想去學的嵌入式的時候,就註定要在我豐富多彩的人生路上留下永遠亮麗與難忘的記憶!算算畢業的時間,我已經聞到了離別的氣息,在這即將遠離大學時代的時刻,才真正懂得回眸的意義。想想走過的路,想想現在的路,想想來時的路,不知道未來能否成功,既然選擇了遠方,就註定要風雨兼程!帶著無比豪邁的心情和繽紛的夢想來到易嵌學習嵌入式,希望在這嶄新的一頁留下人生的美好!在新的老師、新的同學和新的環境中,我開始了我的嵌入式學習,開始了新一輪的拼搏。
無論現在多麼努力都無法追回失去的金色年華,所以在開班典禮的時候,我便為自己制定了目標!我將好好利用最後一個暑假,多學些知識鍛鍊自己,為自己儲備一些精神食糧並不斷開拓視野和提升自己的能力,讓自己能夠在畢業的時候成為學校的驕傲!
在易嵌短暫的兩個月,我們從linux基礎入手,強化了c語言程式設計,學習了linux系統程式設計和網路程式設計。時間雖短,但成長很快,無論是理論知識還是實踐能力都得到了大幅度的提高。
透過對linux作業系統的學習,我初步掌握了linux基礎。剛開始我對linux只是有一點兒瞭解,但並沒有真正的去接觸。在這段時間裡,從linux系統安裝開始著手,瞭解linux的發展,相比其他系統,它有很多優點。在安裝好系統後,學習了linux的分割槽命名、linux的常用命令、文字編輯器vi、shell的使用、原始碼的編譯和除錯、多模組的編譯和連結以及管理工具。透過這些學習,我基本能夠在linux系統下透過vi編輯器編寫c語言程式,透過一些常用命令來除錯、檢視程式。
能夠在這麼短的時間內初步掌握linux,與在學校學習一門課程意義完全不同,透過老師的講解,自己的練習,同學之間的交流,能夠加深印象,熟練操作。
學習linux基礎只是我嵌入式學習歷程的一個開始,雖然有好多命令還不太熟悉,有好多命令都還沒有去嘗試過,但我相信隨著後期的學習,我將逐漸熟練掌握。在c語言學習階段,我學到了很多新的知識,變數、函式、陣列、指標、指標函式、函式指標、指標陣列、陣列指標、結構體、結構體指標陣列、關鍵字……,從模組到整體,從寫程式碼的風格到程式碼最佳化……透過這段時間的.學習,我感覺自己寫出的程式碼比以前更直觀,更注重細節,bug也更少了!
在半個月時間的c語言學習中,我從剛開始的重溫c語言到後來的位運算、堆疊、單向連結串列、雙向連結串列以及list_head。新知識以及注意點漸漸增多,在這段時間,我創造了很多個記錄,比如11小時完成30道程式設計題,獨自完成一個功能比較齊全的學生選課管理系統等,特別是剛接觸到連結串列和list_head的時候,不在像前面那樣輕鬆了,還記得那段時間,每到晚上熱醒的時候,又想起了我的學生管理系統,本來就少的可憐的睡覺時間,又被……,真可謂苦我心志矣!
不過,等我美美的睡上一覺,醒來回想起這段時間的學習,真是一個大豐收!雖然不能說是很精通c語言,至少可以說真的入門了……,我又向自己的目標邁出了堅實的一步!這段時間,我時常會想,如果一切可以重來,我會選擇另外一種學習方式,從一開始就夯實基礎!可是這是不現實的,經歷了無數次的風雨後,柔弱的我早已學會了堅強。透過不斷的交流與學習,我懂得了生活,懂得了學習,懂得了時間,懂得了成長,懂得了奮鬥和拼搏。現在知道,為時不晚,從現在開始,我將為自己開闢一條適合自己的道路。
伴隨著烈日,我們又開始了新的征程,開始深入學習linux系統程式設計,在這個階段,我們學習了作業系統基礎、併發性、linux系統介面、程序和執行緒以及程序間的通訊。透過這階段的學習,我對linux有了更加深入的瞭解,能夠熟練進行多執行緒多程序的操作。
緊接著就進入了網路程式設計學習階段,從網路基礎到linux網路程式設計,我更加深入的學習了tcp/ip協議和osi模型,理解了資料報的傳輸過程,對網路在嵌入式方面的應用進行了深入的學習,學會了socket程式設計。學完後重新對學生選課管理系統進行了改寫,用c/s模型改寫成多使用者登入,利用執行緒實現資源共享。在專案改寫中,不僅融合了前面的c語言知識,還充分的應用了linux系統程式設計和socket程式設計,將理論和實踐相結合,相互促進,相互補充,使得學習更加透徹。透過用不同方法實現同一個專案,不斷深入,層層推進,學以致用!
在易嵌的這個暑假,我過得充實而快樂。在這裡有著同學間的探討、師生間的互動和魔鬼般的訓練!軍隊透過紮實的訓練培養出來一代代革命軍人,相信不久的將來,我也會成為一名優秀的嵌入式工程師!
嵌入式實習總結2
這學期才接觸嵌入式系統感覺還稱不上入門,我透過學習知道了嵌入式的發展前景很大,各個領域都用到了嵌入式,學好嵌入式不愁沒飯吃。
廣義上講,凡是帶有微處理器的專用軟硬體系統都是嵌入式系統。如各類微控制器和DSP系統。從狹義上講,那些使用嵌入式微處理器構成獨立系統,具有自己作業系統,具有特定功能,用於特定場合的專用軟硬體系統稱為嵌入式系統。嵌入式系統由嵌入式硬體與嵌入式軟體組成; 嵌入式硬體以晶片、模板、元件、控制器形式埋藏於裝置內部。
理解“嵌入”的概念主要從三個方面上來理解。
1、從硬體上,將基於CPU的處圍器件,整合到CPU晶片內部,比如早期基於X86體系結構下的計算機,CPU只是有運算器和累加器的功能,一切晶片要造外部橋路來擴充套件實現,象串列埠之類的都是靠外部的16C550/2的串列埠控制器晶片實現,而目前的這種串列埠控制器晶片早已整合到CPU內部,還有PC機有顯示卡,而多數嵌入式處理器都帶有LCD控制器,但其種意義上就相當於顯示卡。比較高階的ARM類IntelXscale架構下的IXP網路處理器CPU內部整合PCI控制器(可配成支援4個PCI從裝置或配成自身為CPI從裝置);還整合3個NPE網路處理器引擎,其中兩個對應於兩個MAC地址,可用於閘道器交換用,而另外一個NPE網路處理器引擎支援DSL,只要外面再加個PHY晶片即可以實現DSL上網功能。IXP系列最高主頻可以達到1.8G,支援2G記憶體,1G×10或10G×1的乙太網口或Febrechannel的光通道。IXP系列應該是目標基於ARM體系統結構下由intel進行整合後成Xscale核心的最高的處理器了。
2、從軟體上前,就是在定製作業系統核心裡將應用一併選入,編譯後將核心下載到ROM中。而在定製作業系統核心時所選擇的應用程式元件就是完成了軟體的“嵌入”,比如WinCE在核心定製時,會有相應選擇,其中就是wordpad,PDF,MediaPlay等等選擇,如果我們選擇了,在CE啟動後,就可以在介面中找到這些東西,如果是以前PC上將的windows作業系統,多半的東西都需要我們得新再裝。
3、把軟體核心或應用檔案系統等東西燒到嵌入式系統硬體平臺中的ROM中就實現了一個真正的“嵌入”。
嵌入式系統分為4層,硬體層、驅動層、作業系統層和應用層
1、硬體層,是整個嵌入式系統的根本,如果現在微控制器及介面這塊很熟悉,並且能用C和組合語言來程式設計的話,從嵌入式系統的硬體層走起來相對容易,硬體層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬體的電路圖和自行完成CPLD的邏輯設計的,同時還要對作業系統核心及其排程性相當的熟悉的。但硬體平臺是基礎,增值還要靠軟體。 硬體層比較適合於,電子、通訊、自動化、機電一體、資訊工程類專業的人來搞,需要掌握的專業基礎知識有,微控制器原理及介面技術、微機原理及介面技術、C語言。
2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對作業系統核心十分的精通,以便其所寫的驅動程式在系統呼叫時,不會獨佔作業系統時間片,而導至其它任務不能動行,不懂作業系統核心架構和實時排程性,沒有良好的驅動編寫風格,按大多數書上所說新增的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用呼叫時就如同windows下我們開啟一個程式執行後,再開啟一個程式時,要不就是中斷以前的程式,要不就是等上一會才能執行後來開啟的程式。想做個好的驅動人員沒有三、四年功底,作業系統核心不研究上幾編,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。驅動層比較適合於電子、通訊、自動化、機電一體、資訊工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬體層所具備的基礎學科外,還要對資料結構與演算法、作業系統原理、編譯原理都要十分精通了解。
3、作業系統層,對於作業系統層目前可能只能說是簡單的移植,而很少有人來自已寫作業系統,或者寫出缺胳膊少腿的作業系統來,這部分工作大都由驅動工程師來完成。作業系統是負責系統任務的除錯、磁碟和檔案的管理,而嵌入式系統的實時性十分重要。據說,XP作業系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟體所自己的女媧Hopen作業系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4、應用層,相對來講較為容易的,如果會在windows下如何進行程式設計介面函式呼叫,到作業系統下只是編譯和開發環境有相應的變化而已。如果涉及Java方面的程式設計也是如此的。嵌入式系統中涉及演算法的由專業演算法的人來處理的,不必歸結到嵌入式系統範疇內。但如果涉及嵌入式系統下面嵌入式資料庫、基於嵌入式系統的網路程式設計和基於某此應用層面的協議應用開發(比如基於SIP、H.323、Astrisk)方面又較為複雜,並且有難度了。
透過網上查詢我發現目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如作業系統級、驅動程式級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式作業系統等),掌握這些新技術的人當然很少。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。我們軟體系的人學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式作業系統方面。對於搞嵌入式軟體的人,最重要的技術顯然是掌握主流嵌入式微處理器的結構與原理,必須掌握一個嵌入式作業系統,必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體專案。
然而我們都沒有做過一個嵌入式軟體專案,甚至連嵌入式的開發流程我也不清楚,我只瞭解了使用簡單工具做一個簡單的實驗。只有去專研才能在嵌入式的領域站住腳,只有知道的比別人多才會更有競爭力。透過網上了解,我查詢了嵌入式的入門和所需要的知識,其中C語言尤為重要,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言。其次,應該對作業系統有所瞭解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序、執行緒,系統如何來分配資源的,系統如何來管理硬體的;知道了c語言和作業系統之後,再來看看嵌入式系統,我們主要學的是ARM,用的是ARM7,深入理解ARM不是件容易的事,只有在知道ARM相關知識之後才能稱得上嵌入式已經入門了。與嵌入式有關的知識我也學了不少就是不能夠綜合在一起運用,組成原理,資料結構,作業系統,C++,這3門與嵌入式密切相關的學科都系統的學了一遍,但由於長時間沒用到都有點忘記了,從網上得知嵌入式的學習與這些書有很大關係之後,我把嵌入式與以前學過的知識結合起來發現嵌入式的實驗中很多都是共通的,我對嵌入式有了初步的理解。
我以為學習嵌入式應該分為2個部分:軟體和硬體。關於硬體方面我接觸到了數位電路教材和類比電路方面的知識,但由於沒有嵌入式CPU很難親自動手來實現嵌入式的相關理論;嵌入式入門則需要不斷地實驗與分析,我只在實驗課時做幾個與所給的程式相關的小程式來實現一下;而軟體方面則學過C語言,裡面通常的語法曾今熟悉過;我透過下列方法來適應C語言在嵌入式中應用:首先重新翻看了下C的教材,看了些常見的語法,接著在編譯器的角度來看待C,編譯原理我剛學過,其中將高階語言與低階語言的翻譯感覺在嵌入式中用到了很多;最後衝硬體的角度來看待C。嵌入式的核心包括嵌入式作業系統,嵌入式軟體開發平臺及工具以及嵌入式應用軟體。這些決定怎樣才能開發一個好的嵌入式系統。 下面談談我瞭解的嵌入式的相關知識與應用:
首先,嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬體可裁減,適應應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式有如下幾個突出的有點1.系統核心小,2專用性強,3系統精簡4高實時性OS5嵌入式系統的應用程式可以沒有作業系統直接在晶片上執行,6嵌入式系統需要開發工具和環境。
嵌入式系統是近幾年才風靡起來的,但是這個概念並非新近才出現。從20世紀七十年代微控制器(最早的微控制器是Intel公司的8048,出現在1976年)的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。經過30年的發展,嵌入式技術已經日趨成熟,在中國嵌入式機一般由嵌入式微處理器、外圍硬體裝置、嵌入式作業系統以及使用者的應用程式等四個部分組成,用於實現對其他裝置的控制、監視或管理等功能。
其次,嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用裝置上,通常這些裝置的硬體資源(如處理器、儲存器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智慧化,嵌入式更顯重要。嵌入式系統是軟硬結合的學科,通常有兩類人會去專研嵌入式:一類是學電子工程、通訊工程等偏硬體專業的,另一類是學軟體、計算機專業出身的人,主要從事嵌入式作業系統和應用軟體的開發。我是軟體專業的學習嵌入式,越是智慧裝置越是複雜系統,軟體越起關鍵作用,而且這是目前的趨勢。嵌入式應用在很多方面,具體的可以分為工業控制,交通管理,資訊家電,家庭智慧管理系統,POS網路及電子商務,環境工程與自然,機器人,機電產品方面應用等方面。其中目前在服務領域,如遠端點菜器等已經體現了嵌入式系統的優勢。例外還有很多地方用到了嵌入式系統,最近飛利浦和ARM共同推出32位RISC嵌入式控制器,適用於工業控制,採用最先進的0.18微米CMOS嵌入式快閃記憶體處理技術,操作電壓可以低至1.2伏,它還能降低25%到30%的製造成本,在工業領域中對終端使用者而言是一套極具成本效益的解決方案。
那麼該如何學好嵌入式我覺得應該從以下幾點入手:
首先C語言,這個是毋庸置疑的,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至於如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些影片看也好。很多人會問,C語言要學到怎麼樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念後,就該寫程式碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收穫就不是你死看書能得到的。
其次,應該對作業系統有所瞭解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序、執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗,會有更好的理解的。
還有應該學習下linux或者wince下的程式設計,這些對以後做應用的程式設計很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等作業系統,Android是以後發展的趨勢,現在很熱門,Android也是基於linux系統封裝的,所以建議先學習下linux。
還有,應該學習下微控制器或者ARM或者MIPS,很多人說我沒有微控制器的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過微控制器,那最好不過了,以後學習ARM就更簡單了。
最後如果你把以上的知識都有所瞭解後,就該去閱讀閱讀一些優秀的程式碼,比如結合arm晶片手冊學習去學習下UBOOT的原始碼,瞭解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的原始碼,當然如果你直接閱讀2.6的程式碼,我想你會很痛苦的,可以先看看linux程式碼早期的版本,比如0.12的程式碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
以上就是我在本學期學習嵌入式後的心得及感想。