嵌入式學習心得體會(通用8篇)
我們有一些啟發後,馬上將其記錄下來,這麼做能夠提升我們的書面表達能力。你想好怎麼寫心得體會了嗎?以下是小編為大家收集的嵌入式學習心得體會,僅供參考,希望能夠幫助到大家。
嵌入式學習心得體會 篇1
時間過的緊快,在粵嵌教育已經培訓有5個月了,培訓期間收穫很多,也認識了班上的學習大神,經過系統的學習,老師的細心指導,我的付出努力,對於嵌入式上,學到很多實用的知識,在動手操作能力也加強了,不僅在專業技術方面有了很大進步,而且在實踐操作方面我也對嵌入式有了更深入的瞭解。也許這5個月是我在外面學習和生活最寶貴的時間。
在校兩年,讀於電子資訊工程技術專業的我,就覺得這專業學的知識太廣了,不管基礎還是動手操作,都要比較靈活。在校期間,學習微控制器,感測器,C語言,嵌入式應用技術等課程。感覺學起來,對我來說接受還是比較快的,那時就有想過:學的多不如學的巧,也許在校對課程多於理論為主,理解它的原理和基本程式設計方式。其實,我還是有努力去學的,可以說,在校科任老師都教會我很多專業知識,為我將來的學習和發展打好基礎。
在大三期間,為了更明確自己要走的方向,去培訓嵌入式軟體開發。也許將要投身嵌入式行業的我,就註定這條路要付出很多時間和精力,但可能我好求比較強,接受還行,就不停給自己打氣,努力!要去培訓嵌入式時,我從網上也對它有更加的理解,也看下大2學的嵌入式應用技術書,嵌入式系統是軟體和硬體的綜合體,以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
剛開始嵌入式學習,對Linux系統的知識加於鞏固。一些簡單的程式碼,C語言,對於嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言。在下來幾個月就對Linux系統,資料結構、系統移植的方法、A8的體系結構、Linux核心及驅動設計、android、C+Java的JNI應用程式設計的系統學習。在每學個階段就作一個考試,對前面所學的知識進行復習,有些會做一個簡單的小專案,學以致用。知識量還是比較多,但教學也比較快,有些知識還沒消化完,第二天又接受新知識,對於能在課上就可以對知識完全懂的並不多,晚上都用一兩個小時來複習。經過5個月系統的學習,嵌入式技術方面有了很大進步,實踐操作方面也對嵌入式有了更深入的瞭解。在最後一個月,基於A8(S5PV210)的嵌入式智慧家居系統製作。
下面我談談在粵嵌教育的培訓感受,我培訓的地點是在科學城粵嵌教育培訓中心的多媒體課室裡,這裡有學習環境非常好,在緊張的學習的過程中,你可以得到名師的指導,也可以體會到一流企業高質量的培訓。在課堂上,老師們認真的演講,以及手把手地教導,使每個學生都能夠紮實地掌握到嵌入式的各方面的知識。而粵嵌教育的老師也是操作實踐為主,實踐是非常重要的,只有把知識掌握到位,才能達到學習的目的。
感謝粵嵌教育機構,感謝粵嵌教育老師。
嵌入式學習心得體會 篇2
首先,我們學習的課本是嵌入式系統應用教程。我學習的體會是這樣的:開始時,由於是剛剛入門,對老師書的好多東西是好奇的,好多名詞也是新鮮的,不過不太懂什麼意思。但是慢慢的,瞭解的深入讓我有了更深的感觸和體會。
在嵌入式的學習過程中,讓我瞭解了什麼是嵌入式系統。它就是以應用為中心,以計算機技術為基礎,軟硬體可定製,適用於不同應用場合,對功能、可靠性、成本、體積、功耗有嚴格要求的計算機系統。他一般由嵌入式微處理器、外圍硬體裝置、嵌入式作業系統、使用者應用程式四個部分組成,用於實現對其他裝置的控制、監視或管理功能。嵌入式系統已經應用於科學研究、工業控制、軍事技術、交通通訊、醫療衛生、消費娛樂等領域,人們日常使用的手機、PDA、汽車、智慧家電、GPS等均是嵌入式系統的典型代表。
一開始我們就學習嵌入式的系統的基礎部分,那很簡單,就是一些定義或是介紹之類的。在進入第二章時,就開始學習了嵌入式開發過程中的主要作業系統——linux,在接下來的課程中,我發現嵌入式的學習過程還是蠻有趣的。在對linux的學習中,我們對它有了一點點的瞭解,接著就是學習一虛擬機器的方式安裝linux。對我來說有趣的就是安裝的過程了,首先我們跟著老師的腳步走,學會了怎麼安裝,在自己動手進行對它的安裝,這個過程是簡單而有趣的。這樣的開始讓我對它充滿了興趣,也對以後的學習充滿了信心。
其次就是安裝好了之後,老師就更深一步的教我們應用了。在這是老師首先交給我們的是一些簡單的命令應用,Linux具有很豐富的命令,絕大多數命令具有大量的引數。在學習命令的過程中,只要你認真的看著老師操作還有認真聽著他講,你就會發現有些命令的操作還是很簡單的,不過在操作的過程中,我也有遇到有些困難,會出現你按照書上學習的例子,將命令輸入終端時會出現你不想要的結果,也就是錯誤的結果。這是問問旁邊的同學或是懂的同學就可以解決了。在對於這部分的學習中,讓我知道了命令對於嵌入式的重要性。它是linux的重要內容,linux中所有的功能都是透過命令執行。在實際應用中,為了減少系統開銷,經常不使用圖形介面,此時,對系統的所有操作都需要以命令方式來執行。在嵌入式系統開發過程中,由於目標機的效能和配置比較低,因此,一般情況下目標機僅具有命令視窗而沒有圖形介面,對目標機的所有操作都透過命令來實現。
還有的那就是進一步學習與嵌入式系統開發相關的linux的服務,他們的啟動、設定等的操作和應用。而在學習之中,我們主要介紹的是嵌入式系統中開發工程使用的TFTP、Telent和NFS服務。第一個實現的事上機位與下機位之間檔案的傳輸、無磁碟網路的裝置的啟動等功能;第二個實現的事遠端登入功能;第三個實現的是網路檔案系統功能。
從以上的內容之中,並不難感受到我們的學習過程是由淺入深的,這對於我們的學習也有了較好的幫助。
當然,我們學習的不僅僅是這麼幾個內容,其中還有相關的實驗內容。在我們基礎的學習的過程之中,我有了這麼一點的感受,總的來說就是概念加專業名詞還有介紹加實驗。不過你絕對不能小看那些概念和介紹,它對我們有著很重要的指導作用哦!實驗那就更不用說了,它提高我們的動手能力,在實驗的過程中還能讓你更加理解書中的理念,這就是我學習嵌入式的感受。
嵌入式學習心得體會 篇3
研究嵌入式系統已經有快兩年的時間了。很慶幸自己當初選擇了嵌入式系統作為自己的研究和職業方向,可以說它是一種催化劑,讓我自身的修養和研究能力都有了很大的提高。
在嵌入式系統的大門前,我只能算是剛剛看到這個大門的臺階,但這段小小的距離讓我受益頗多,現將其中心得奉獻出來,歡迎高手前輩們指正,以供剛接觸的新人參考。
在寫之前,想先寫一句話,千萬不要以為你是天才,所謂天才即勝別人N倍的人,如果你真認為你是天才,請以天才的標準來要求自己,將自己付出和別人的比例以N:1來進行。
(1)學習與生活心態
很多朋友都是在剛步入大學校門開始接觸計算機或者其他。大學是一個很讓人迷茫頹廢的地方,可能你在高中躊躇滿志,但在大學的管理機制下卻心態漸糜。能夠在大學(大一)裡找到自己人生之志的同學有多少?目標要明確,不要得過且過,不要追逐熱門的東西。
不管在什麼時候,心裡都要有自己的信念和理想,不要被其他東西左右了自己。要從興趣和競爭出發,因為這才是你產生動力源的地方。學東西時,要讓自己先喜歡上它,要學會享受學習它的時間,喜歡喬XXX的都知道,喬老爺子最常說的一句就是要享受比賽的時間。
因為只有你喜歡上了它,享受了它,才不會被它所產生的壓力壓倒自己,不要產生一種厭惡的心理。而且心態要調整,不要一味的蠻學,死學,在沒有什麼興趣學的時候可以先玩幾天,在回過頭來,或者用其他的方式來轉換。要抱著一種十年方能磨一劍的心理,紮紮實實從基礎開始,不要為高速開發的一些現象所迷惑,那些都只是軟體的功勞。
我個人認為搞程式設計,英語和數學很重要,大家一定要時時的抓,至於怎麼抓那就是另外一回事了,當然其他的知識也要汲取,可以多接觸點天文,地理,人文方面的東西來補充自己。轉換的生活方式。要學會生活,在人的一生中,都會遇到一些很不開心的事,或者大大小小的意外,孫子兵法裡面一句大意就是說,戰場上要會將劣勢轉成優勢,即最大的劣勢很可能就是你的優勢所在。
一個打擊你可以把他變為前進的動力,不必為了一點挫折和捶胸頓足,不必為了一點小事爭吵不休。空閒的時候可以躺下來看看天,你就會明白自強不息,厚德載物之理。(看到一些為了失戀或者其他而墮落的人真的很難受和可惜)。
要給人以幫助。別人有困難時或者一些舉手之勞在自己解決範圍內的盡力幫之,這對自己不會損失什麼,相反在對方心裡能夠樹立你的形象和增加好感。記住,給人之恩時也是給你自己鋪路,這個世界不是靠你一個人可改變的。
(2)程式語言的選擇語言的爭論。
很多初學擇,老是在學習何種語言上舉棋不定,試問,中國牌子有幾個不被罵的,試問,世界上哪部影片沒人說他壞話的?術業有專攻,各司其職,每個語言的出現肯定都有自己價值和領域的範圍,不同的只是價值和領域的高階和大小。
就像高,矮,胖,瘦組成一個“型”。但是技術是進步的,這個進步也是在舊的基礎上。放心,技術再飛躍也不會今天奔I,明天扣肉的迅速,在學習的同時也要時時關注整個語言界的走勢(貌似哪個偉人說的與時俱進),保持一種同步曲線的前進。語言能幹什麼?能問這句話,很欣慰。
表明你是從基礎學起才會問出這樣的話來。但換而言之你一開始對這門語言調查的資訊不足。廟算者勝,對自己身邊的事物瞭解是非常重要的,這也能說明說你的教材或者教導你的人不夠充分。如果是我對新手交流,我會花足時間讓他明白這門語言是什麼,能幹什麼,整個體系等等。
這樣在學的時候,對同一條語句上的理解你可能跟別人就不一樣了,因為你知道這門語言的體系架構,你可以從更多的特性角度去挖掘使用它。提高自己對語言閱讀能力。如何快速的進步?可以告訴你沒有一步登天的辦法,但是也可以告訴你如何讓你快速掌握你所學的技術。多讀他人程式碼,多領悟他人思維,多給自己出難題,多幾種方法來解問題,多將語言的思想和身邊的事物聯絡起來。想想你是怎麼掌握普通話的,方法就不具體說了。
程式設計的思維。計算機是充滿誘惑的東西,很多人都說熱愛計算機,那只是它的表面,你熱愛的只是他的一種擴充套件性的東西。能學計算機我很高興,因為計算機從某種意義上來說將空間的距離給消除掉了。這裡沒有流血,沒有犧牲。你可以以一種藝術家的思維來塑造它,可以以偵探的邏輯思維來解決它,可以以一種戰爭狂人的思維來摧毀它。
你可以將你的這種思維體現在程式碼和整個佈局裡,不要驚異別人程式碼思維的異風,你也有自己的思維風格,你也可以,你也可以用自己程式碼讓別人驚異。記住你學東西時更多的要體會他的思維,比如數學,微積分,離散,無數的定理,你學完以後可能永遠都用不到,但是你可能有這種感覺,在你碰到某一問題時,這一問題的性質和你學到的東西很類似,但是中間就是差了一點東西,對了,這就是它思維上的一種運用,一種抽象,一種轉換。
嵌入式學習心得體會 篇4
這個題目很大,給人一種感覺我好像很成功,其實不然。實際上自己水平不高,甚至很低,但是做過了一些曲折的學習道路,同時把自己真實的學習歷程表達出來,希望對後來者有借鑑的意義,甚幸!
工作三年、幾成廢人!
我XX年畢業於華中地區的一個理工科大學,專業是機械電子,我當時已經簽了一家內陸某個省級機關工作,家裡八輩是農民,並且很偏遠,能夠進入這樣的地方是祖墳有風水。但在畢業前夕有個進入it的機會,我本想進去的,家裡人極力反對,阻力可想而知。同時要交4000元的違約金,對我來說是天文數字。大學裡的費用很多是借的,幾乎將近一半的費用是在大學勤工儉學掙的,為了省錢,高中一個學期回家一次,大學一年回去一次。並且我個人也有特殊的人生背景(悲景更確切),這裡不多說了,寫十篇也寫不完,同時偏離主題。這樣我就參加了工作。一張報紙一杯茶的日子,幾乎下班後有種很空虛和恐慌的感覺。在工作中雖然是與自己專業有點關係,但是很少。專業幾乎荒廢。我自己也思考,如果再不出去,自己將會成廢人,只好讓國家養了。兩年後決定出去,但是幾成廢人,誰要呢,只好到學校去鍍金。這是中國教育和社會的悲哀!
至於專業就改為計算機方面,聽說好找工作,我說實話不是很對計算機特別感興趣,生存第一需要。不要笑我,哈哈!
考研成績出來,超過了國家線幾十分。那個方向要兩個,我第三,但是那年非碘,不面試就按分數來排,自然我落選了。其實給我面試機會也不一定要我,哈哈,自己幾斤幾兩很清楚。
最後調劑到另外一個學校,交錢,咬咬牙,交吧!現在仍然債臺高築!
進入學校前夕為什麼要把這段列出,看後就知道了。
單位有網路,經常上網查些英語資料,在那裡唯獨英語沒有丟很多。於是我就在網上查資料,學什麼好呢,最後確定學嵌入式把,聽說跟硬體相對比較緊密!而我在大學裡多少學習了數位電路,微控制器等,所以多少也有所利用,不會真的一無所知。當然在這之前也自學過資料結構,計算機組成原理等。c語言在大學就學了。哈哈這就是我的家底。
我知道自己的基礎差,於是我就拿作業系統,資料庫、資料結構、c++來看,機關有這個好處,空餘時間多,於是平常就看書,很痛苦,沒有人請教。
另外就上網到論壇上去,我就到各個專業的技術論壇,其實是電子論壇和嵌入式論壇。我幾乎沒有發帖,幾乎把幾個大型的出名的論壇的帖子翻遍了,雖然有很多重複的,我才知道嵌入式是個什麼東東。這些帖子對我以後的學習產生了極大的影響。
最關鍵兩點:
1、嵌入式是什麼?
2、嵌入式需要哪些知識?
知道了這兩點,好辦!我就開始規劃學習路線。計算機的基本理論不能丟,於是重點看組成原理,資料機構,作業系統、c++。同時論壇上了解到,實時作業系統ucos是一個很好的嵌入式作業系統,對初學者很好。於是我就買了一本書,但是程式碼在電腦裡調不通,網上也有很多相同的問題,我就看書,分析程式碼,一遍不行就兩遍,三遍,這樣才看了入了門,才知道什麼是程序。原來看作業系統書時,根本就不知道程序是個什麼東西。
在這段時間掌握的東西不多,但是,對我以後的影響很大,我想起了大學時一個同學跟我說過了一句話:大學裡最重要的`不是學到了什麼,最重要的是學會怎麼學!大概是這個意思。
進入我的避難所對我來講,再次進入大學不再是大學,而是避難所。希望這次進入給我喘氣和養精蓄銳的機會和時間。我是這樣認為和實踐的。
在學校我有三件事:上課,上圖書館,上網。
對於上課,學校開了很多課程,非常好,很多是名人名師講解,於是很多同學都想學,都去聽。我也考慮過,最後放棄。我是這樣認為的,時間是有限的,什麼都想學,什麼都學不成。於是我把我自己學的課進行了分化,一般的課程透過就行,重要的一定好好學。我希望不要什麼爭論學習課程多和少的問題,這僅僅是我的看法。所以我的成績應該是很差的。分數低。好在後來的單位沒有要我的成績單,否則就慘了。
我個人感覺是上圖書館的效率比在寢室裡高多了,這是我的經驗。
嵌入式學習心得體會 篇5
本人本科學的是電子資訊工程專業,其實這個專業和嵌入式沒有多大的關係,要說有關係就是簡單的講了下C語言語法,學完之後還不知道什麼是C語言,只記住了char,int,long等佔幾個位元組,if,while,for迴圈什麼的,感覺也就能算一些小學就會的題目,全國計算機二級C語言也就糊塗的過了。我這個專業沒學過C++,一開始不知道什麼是面向物件,這可能會讓人笑話了。不過這說的是實話,本科的時候,學院安排的課程大部分偏硬體部分,動手機會比較多,自然而然比較喜歡硬體方面。
在大二的時候就聽學長說,微控制器很難學,那時候經學長介紹,淘寶買了本郭天祥老師出的書《51微控制器C語言教程》,一開始還真是不怎麼懂,感覺有點像是看天書,然後硬著頭皮去看,當我把51的結構看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結構圖默畫一遍,然後再把各個暫存器功能寫一下,各個功能口的結構粗略畫了下,然後覺得51整體已在我心中了,雖然沒有什麼作用,但是至少懂得這門課要怎麼去學習。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。
在大三的時候,第一學期課比較少,我就經常待在圖書館,會去蠻看些專業相關的書籍,現在想想,那時候也是機緣巧合下,看到了一本書《從51到ARM》,講述的是從51系列微控制器的一般知識出發,將arm處理器和51系列微控制器進行對比,引導讀者去理解和學習arm處理器的知識。那個時候也有考慮到以後就業的問題,就想到一件事情,如果去應聘工作的話,每個工科院校電子資訊類的畢業生都會異口同聲地說:我會51系列微控制器。當他說這句話的時候,他和別人是站在同一起跑線上的。可我們完全有可能和別人不站在同一起跑線上。正是這本書給我開啟了另外一扇大門,讓我初步瞭解了嵌入式。後來去報考全國計算機等級考試三級教程——嵌入式系統開發技術,在圖書館奮鬥了兩個月,最後取得優秀的成績,也讓我進一步瞭解嵌入式系統。
在大四的時候,我們有嵌入式的選修課,不過當時因為考研的緣故,就沒有去上過這門課,好可惜呀!但是,在選擇讀研研究方向的時候我還是毅然選擇了嵌入式方向,我知道這將成為我未來三年研究的方向。這學期(研一下學期),很開心能夠再次接觸嵌入式系統這門課程,對於導師教的這門課程,我覺得自己上課還是蠻認真聽講的,當然也被師在臺上那講得頭頭是道,溫文儒雅的風姿所吸引。對於沒有學過微機8086的我,有些時候,老師用微機與嵌入式的對比讓我頭腦沒有相關概念...
首先,我對嵌入式在概念上有了一個比較精確的瞭解。嵌入式是指以應用為中心,以計算機為基礎,並且軟硬體可裁剪,適用於對功能、可靠性、成本、體積和功耗有嚴格要求的專用計算機系統。它由硬體平臺和系統軟體組成。硬體平臺指嵌入式處理器和與之透過介面連線的外圍硬體平臺。系統軟體是指實時作業系統和使用者應用軟體。
談到硬體部分,我首先想到的是嵌入式處理器那些外圍功能模組。對於這部分的學習,我當初花了好長時間看《深入淺出ARM7——LPC2400》這本書,現在想想覺得自己學習方法沒用對,完全沒有那個必要,自己卻花了大把時間在看這些暫存器引腳的使用,因為單純的看過之後還是很容易忘的,之後在進行實驗的時候還是翻書來查就證明了這一點。不過一些最基本的模組,例如通用輸入/輸出口(GPIO),通用非同步收發器(UART),向量中斷控制器(VIC),外部中斷輸入和定時器/計數器還是需要看書認真去記住那些常用的引腳功能。對於CPU異常這部分,我一開始以為異常就是中斷,因為處理程式流程設計是相似的,都是請求處理器打斷正常的程式執行流程,進入特定程式的一種機制。當時還對老師提出的一個看法有點疑義,51可以處理中斷巢狀而ARM處理器卻不能?我當時腦子裡面就在想:中斷不都是有硬體裝置產生的,那按常理來講ARM處理器也可以處理的呀。後來在認真查書,發現CPU異常有7種:復位,資料中止,中斷,快中斷,預取中止,未定義,軟體中斷。而異常向量會使CPU轉入異常入口地址執行程式,開始了異常處理。同理的話,中斷向量使CPU轉入中斷入口地址執行程式,開始了中斷處理。即當發生IRQ中斷時,程式返回地址被存入該IRQ中斷模式下的LR,如果繼續發生IRQ中斷,那第二次的中斷返回地址也還是被存入該IRQ中斷模式下的LR中,那先前發生中斷時候存入的程式返回地址將被覆蓋掉,導致不能返回正確的位置。在我解決這個問題的期間,每次睡前思維準會定格在這問題上,久久不能繞出來,其實有時候查書還是最好的解決方案,因為網路資源只能提供給我們部分的參考資料。
對於ARM組合語言這部分的學習,我認為是需要重視的,學彙編不是說用這語言做多牛逼的事情,問題的關鍵在於,學透了彙編會使你真正理解計算機。另外一方面,只要以後在嵌入式工作中你遲早會在某個陰暗的角落裡遇到彙編。“不管你承認不承認,現在的CPU沒有直接跑高階語言的,哪怕是虛擬機器也都是類似彙編的指令集.當遇到崩潰分析,效能最佳化甚至編譯器抽風等等的時候,彙編是你最後一根救命稻草(這句話是福來師兄講的)。”為此他給了我們一份資料,周立功lpc21xx/lpc22xx系列ARM7啟動程式碼分析,主要講述的是startup.s檔案的分析,看了下才發現老師上課講的那個啟動程式碼分析很多不理解之處這裡都有詳細的介紹,這分析太精闢了。
學ARM7這麼久,我認為從硬體上講,一方面就是學習介面電路設計,另一方面就是學習彙編和C語言的板級程式設計。如果從軟體上講,就是要學習基於ARM處理器的作業系統層面的驅動和移植。這些對於我們初學者來說必須明確,要麼從硬體著手開始學,要麼從作業系統的熟悉到應用開始學,但不管學什麼,只要不是純的作業系統級,硬體的暫存器類的東西還是要能看懂的,基於板級的彙編和C程式設計還是要會的。
μC/OS-II是一種基於優先順序的搶佔式多工實時作業系統,包含了實時核心、任務管理、時間管理、任務間通訊同步(訊號量,郵箱,訊息佇列)和記憶體管理等功能。它可以使各個任務獨立工作,互不干涉,很容易實現準時而且無誤執行,使實時應用程式的設計和擴充套件變得容易,使應用程式的設計過程大為減化。μC/OS-II是一個完整的、可移植、可固化、可裁剪的佔先式實時多工核心。μC/OS-II絕大部分的程式碼是用ANSI的C語言編寫的,包含一小部分彙編程式碼,使之可供不同架構的微處理器使用。
μC/OS-II可以大致分成核心結構、任務管理、時間管理、任務之間通訊與同步4個部分。核心結構是作業系統的處理核心,包括作業系統初始化、作業系統執行、中斷進出的前導、時鐘節拍、任務排程、事件處理等多部分。任務管理部分中的內容都是與任務的操作密切相關的。包括任務的建立、刪除、掛起、恢復等等。因為μC/OS-II是以任務為基本單位排程的,所以這部分內容也相當重要。μC/OS-II中的最小時鐘單位是timetick(時鐘節拍),任務延時等操作是在時間管理這部分完成的。任務之間通訊與同步為事件處理部分,包括訊號量、郵箱、郵箱佇列、事件標誌等部分;主要用於任務間的互相聯絡和對臨界資源的訪問。μC/OS-Ⅱ作業系統是在main()中建立的,首先要系統初始化,OSInit(),初始化系統所有的變數和資料結構。然後進行任務的建立,OSTaskCreate();之後進行多工的啟動,OSStart()。在進行任務的並行處理的時候,一個任務的程式是順序執行的,而不同任務的程式卻是並行執行的。從應用程式的觀點來看,此處的並行處理只是一個假象。而實際上它是透過實時作業系統的核心控制任務之間的切換來實現的,也就是任務排程啦。
μCOS-Ⅱ總是執行進入就緒態任務中優先順序最高的那一個。當建立新任務時,或當前任務呼叫一些可能把自己掛起的系統函式(如OSMBoxPend)時,核心就要進行任務切換。在上述的場合,任務級的排程是由函式OSSched()完成的。
在一個多工的應用工程中,任務之間並不是完全獨立的,它們存在一些需相互配合的處理,這些相互配合是靠任務間的通訊或同步,訊號量、郵箱、訊息佇列可以實現這種任務與任務,任務與中斷服務函式間的通訊與同步。
郵箱可以使一個任務或者中斷服務子程式向另一個任務傳送一個指標型的變數。而訊號量不可以,其只能傳送訊號量。訊息佇列可以使一個任務或者中斷服務子程式向另一個任務傳送以指標方式定義的變數。因具體的應用有所不同,每個指標指向的資料結構變數也有所不同,實際上,我們可以將訊息佇列看作多個郵箱組成的陣列,只是它們共用一個等待任務列表。
我們實驗所用的ARM開發工具是ADS1.2。ARMADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM整合開發工具。現在ADS的最新版本是1.2,支援軟體除錯及JTAG硬體模擬除錯、支援彙編、C語言、C++源程式,具有編譯效率高、系統庫功能強等特點。在安裝ADS1.2的時候出現過小問題,當時我的電腦是64位的,安裝完之後顯示不了,後來百度查詢到原因,竟然是資料夾放錯地方,應該放在Program Files(x86)這個資料夾中。後來有同學問我這方面的問題,但是發現他們的ADS1.2安裝不了的原因是因為Licence弄錯了。在開啟CodeWarrior for ARM Developer Suite的時候,一定要記得選DebugInChipRAM,否則Make都出現很多error,而且那些幾乎都是未定義函式的錯誤。之後就進行Debug,除錯成功之後會跳出AXD的介面,選擇Options裡面的ConfigureTarget,再新增H-JTAG的檔案,之後點選GO,程式會跳出組合語言的介面,再點選下就跳到C語言程式入口地址,之後再點選下GO,程式就開始跑起來。前面所述的這些步驟是理想情況下程式自身沒有發生錯誤,當然在除錯過程中,還是有很多硬體上的問題,一方面是有些開發板可能用久了,用JTAG並口連線的時候接觸不良,很容易自動掉線,常出現未連線裝置的的Error,還有一方面是跑程式過程常會出現相容性的問題,導致程式AXD除錯時候會出現卡在某個部分一直進入死迴圈,這個後來是解決了,但是偶爾還是會出現這個BUG。
透過這學期對嵌入式的學習,我發現自己尚未掌握的知識點還是蠻多的,尤其是對μC/OS-II的移植方面,我只是理論上粗略瞭解,沒有經過實驗的操作。還有對儲存器加速模組(MAM)這方面不夠了解,主要一方面當初在做訊息佇列採集實驗(KeySem_SampdataQeue),這個模組被代替掉,不需要使用它,所以後來也沒有去掌握相關知識點。對於任務就緒演算法這部分,我只是上課的時候聽“懂”了,課後自己再看完全懵了。對於CAN匯流排除錯的部分,老師上課沒有講到這部分的介紹與應用,但是後來透過自己對實驗室師兄們所做的課題初步瞭解,發現我自己有必要去弄懂它的構造和原理。
“看書不要希望一次就會,一次就明白是什麼意思,也不要死記硬背,看不明白也沒關係,以後遇到了知道去哪裡去找就可以了,以後遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。”依然記得當初不懂怎麼解決某個問題的時候請教李碩師兄,師兄對我說的這番話。自己在μC/OS-II這部分內容掙扎了好久,現在想想,覺得當初不應該一上來就直接閱讀核心原始碼,看了一些自己把頭撞破也想不明白的事,這樣直接正面打擊我學習嵌入式的積極性。學習啊,還是得要循序漸進。如果你想學習嵌入式一定要有塊學習板。看再多的影片,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學到東西。記得我第一次仿寫led的驅動,想自己試一下,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
對於初學者,有一點小建議,我們拿到一個開發板,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然後又不知道從何下手,然後就去論壇中發一個貼,最後等著別人去回覆,當見沒人回覆就開始抱怨。這種做法是不可取的,有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識瞭解嗎?如果不瞭解就去google一下(最好別用百度,不太好用),瞭解了一些,也就大概知道要怎麼做了。如果再遇到問題,再去發貼問,這樣也顯得咱們有水平。比如自己連串列埠是什麼都不太清楚呢,就問串列埠通訊怎麼做啊,就是人家把程式碼給咱,咱也不明白是怎麼回事啊。見多識廣,熟能生巧。多看程式碼,要從程式碼中讀出程式碼的意思來。自己平時也要多寫程式碼,多練習(這一點我做的不好,寫的少)。
最後,我想說的是嵌入式系統的學習和研究一旦我們達到了一定的水平後,其實很簡單,就是如何去看CPU和相關晶片的Datasheet!
嵌入式學習心得體會 篇6
4月10號,為期一個階段的Linux開發基礎培訓課程圓滿結束,回首這些天所留下的點點滴滴,感觸深深,學習上知識點的積累,靈活運用的過程中感受到了Linux操作的快速高效效能,這也是我所追求的效率!
當初初涉培訓課程的第一門課程時,都說Linux操作很繁瑣複雜,心裡總有些顧忌,帶著種種不安與些許拼博的決心,開始了自我提升階段的“充電”,由徐海兵老師教授我們基礎課程的培訓,我們則像著小學生般認真的記著筆記,仔細聽著並學會如何去在實踐中運用所學的Linux下的各種強大的命令集。
在Unit 1中,徐老師詳細生動的為我們講述了有關Linux的誕生、初成長以及輝煌的發展至今,今後應用範圍則愈來愈廣泛,講解了為Linux這個偉大的OS做出巨大貢獻的一位位出色的、偉大的人物,他們那種學習鑽研的精神、鍥而不捨的信念、勇於把握住難得的機會,從小處著手,踏踏實實的創造出了對人類科技發展做出卓越貢獻的Linux(Unix)系統,他們的種種,都值得我們去深刻反省、刻苦學習、傳承並永遠發展下去。
檢視ip地址和重啟網路服務是我學的第一個命令: ifconfig eth0、ifconfig eth0 IP地址、service network restart。瞭解到遠端登入軟體可用xmanager。
secureCRT是我們常用的,安裝好後利用其登入到了Red hat Linux,需要知道Linux主機的ip 地址。徐老師為我們介紹了重要內容:SHELL,即執行程式的程式,如echo $$SHELL可檢視SHELL的環境變數是csh還是bash。指令pwd可檢視當前所在路徑,passwd:更改Linux下的密碼,僅限root使用者有此許可權,當然我們是利用虛擬機器VMware程式來執行Linux OS的,懂得了如何設定虛擬機器的網絡卡設定、暫停、恢復、全屏等。
簡單的學習後進入Unit 2,命令列的句法讓我懂得了用法規則,一系列的命令功能強大:
date 顯示當前年月時間星期之類的;
more指令與less重要但不常用;
cat用於檢視短小的檔案內容,常用!
mkdir命令用於在當前目錄下建立新的目錄;
ls 顯示當前目錄下所有檔案;cd更改檔案路徑,如cd、cd.當前目錄;
rmdir 刪除空資料夾;
rm指令很強大,用於刪除空目錄及非空目錄下的指定或全部檔案;
man 真男人,幫助手冊;
history指令用於顯示編寫過的命令集,以history序號可顯示序號所指命令;
echo回寫命令,很重要,我需要繼續學習;
exit 指從多重SHELL退出來。
嵌入式學習心得體會 篇7
從實習到現在搞嵌入式開發快一年了,驀然回首好像一年過得挺快,挺順利的。細細品味,發現這一年還是有很多值得回憶和總結的東西。至少這一年看書挺多,大概二十幾本,當然和那些一年看一百多本書的人沒法比,但是我已經超越了自己。這是我大學畢業的第一年,初次走上社會,很想一展身手,可是.....其實也不用可是了,和很多朋友一樣碰了很多釘子,現在我和老闆的關係就挺一般的,只是我性格還不錯。呵呵~~,做優秀員工看來還得慢慢學。
今年最大的收穫就是做了一個半專案,是在uClinux下面跑的。半個是SNMP-Agent的實現,因為我去的時候snmpd已經跑起來了,我只是實現部分管理功能;一個是基於Web的管理系統,使公司的主打產品微波通訊裝置上網。這個專案是我一手策劃,一手實現(介面設計是一位女同事,很優秀的程式設計師),從中學到的東西也最多,感情不可謂不深。
SNMP即簡單網路管理協議,其實一點都不簡單。在我所知的網路協議裡面,它僅僅比OSI的CMIP簡單一點,而CMIP直到現在還沒得到廣泛應用。我們能夠實現SNMP-Agent不能不感謝CarnegieMellon大學免費釋出的ucd-snmp軟體包。它使得開發人員專注於實現對特定裝置的管理功能。
我在專案中的工作主要是擴充套件MIB,實現相應的管理功能以及網路功能的擴充套件。我們公司的MIB庫比較龐大,但是程式執行還是挺快的。因為ucd-snmp軟體包中大量使用回撥函式,而且它將MIB樹以二叉樹形式表示,但是每個結點不是單個的MIB結點,而是一個表,包括了多個結點。回撥函式和兩層表示法的使用是操作快速的主要因素。
基於Web的管理系統我原本是打算在裝置外實現SNMP-Manager的功能,因為裝置中已經嵌入了Agent。這樣管理人員可以在世界各地透過WWW登入公司的管理平臺,實現對所有裝置的管理。但是老闆想在裝置中嵌入一個管理系統,可以透過www管理單個裝置就行。呵呵~~,這樣工作又輕鬆了一點,就按老闆的意思做了。
我用的http伺服器是BOA,它比現在市場佔有率第一的Apache速度要快。目前還只支援CGI,我就用C寫CGI程式,古老了點。但是在開發過程中感覺用CGI比用現在流行的ASP,JSP要爽,可以隨心所欲,哈哈~~,而且這也是用CC++語言的優點。CGI程式很簡單,它的輸入就是標準輸入,它的輸出就是標準輸出。BOA在uClinux上面跑總要出點問題的,出問題好,出了問題我就能找到問題,一來一往,我對socket程式設計,I/O多路等程式設計技術瞭解也就越來越深了。
在Linux下面搞了一年,不愛上Linux都難,個人認為軟體開發人員在Linux下面進步是最快的。那麼多優秀的開原始碼供我們研究,猶如每天與世界上最優秀的程式設計師打交道,進步於不經意間。哈哈~~。正所謂“熟讀唐詩三百首,不會作詩也會吟”。GCC編譯器的優秀不用多說,我覺得寫Makefile也是很件開心的事。不推薦程式設計師搞開發都用IDE,隔靴捎癢很不爽。但是Linux缺點也很明顯,聽歌、看碟、玩遊戲不如Windows。恰巧公司的電腦沒音箱,乾脆我就懶得用Windows了。
用Linux而不講開源是不道德的,我們程式設計師享受著開源的好處,自然也要為開源做點貢獻。我開發的所有軟體都開源,但是我也有個“怪癖”:不喜歡別人在我程式碼未完成的時候問我要原始碼。
做嵌入式開發一年,稍稍有點心得。總結了一下,有以下幾點經驗:
1.不要玩Linux。這一點主要是對像我這樣在Linux下面開發的程式設計師來說的。因為Linux對程式設計師的吸引力很大,但它下面可以直接用的軟體還是比較少。於是我們總想到網上找一些開源的軟體裝到我們的機器上,從無到有讓人很有成就感的,呵呵~~。要是裝上的不是最新版本的還不滿意,於是又開始忙升級。在Windows下這個過程大概沒什麼意思,全都next了。在Linux下就不一樣了,直接拿過來的原始碼很多編譯都不能透過,最新版本更是這樣,得我們自己改,而且往往時改了又改。這個過程很花時間,我就在這方面浪費了很多時間,本來有個月工作比較輕鬆,打算閱讀Linuxkernel程式碼(也想成高手,呵呵~~),當時我機子上沒有好的閱讀工具,於是先弄了個sourcenavigator,覺得不夠又裝了個openoffice,然後又找來了幾份不同版本的kernel程式碼。結果一個月過去了,一個資料夾還沒看完。後面工作緊了,只能把看kernel當休息,直到現在才粗略看完fs,mm兩個資料夾。
2.不要滿足於C語言。C語言很優秀,也很簡單。程式設計能力不等同於用C語言能力。嵌入式開發程式設計師要有紮實的資料結構基礎,要積極的學習作業系統,積極的學習網路程式設計,要是想進行驅動開發還需要積極的學習硬體知識。
3.瞭解幾種晶片體系結構。嵌入式不像PC領域x86一統天下,在嵌入式領域ARM、MIPS、M68k等各顯神通。例如ARM7是沒有MMU的,uClinux在它上面跑是最合適了,但是沒有MMU我們也必須實現簡單的MM功能,同時沒有MMU一些常用庫函式是不能實現的,這些嵌入式開發程式設計師必須要了解。
4.編寫無錯的C程式。關於這一點建議閱讀SteveMaguire的《WritingCleanCode》。我對MS沒有好感,但這不影響我對MS裡面大牛們的尊敬。嵌入式的除錯是非常麻煩的,很耗時。雖然有gdbserver這類工具,但是你用的開發工具鏈中不一定包括它,而且就算用上了除錯仍然是很花時間的。所以要是不想天天通宵調程式呢,那就要時時以編寫無錯程式為目標。
5.瞭解一點編譯知識。這對編寫高效能程式很有幫助。
6.學習設計模式。設計模式一般在高階語言中討論較多,但是好東西應該大家一起分享。學習設計模式對提高我們的設計能力非常有幫助。用C語言也可以實現一些模式思想,例如我們常用的回撥函式,就可看作是Command模式的C語言版本。
7.要有前瞻性,要積極學習新技術。目前的嵌入式開發一般都是將PC應用加以剪裁,移植到嵌入式系統中。但是隨著通訊技術的發展,IPv6的廣泛應用,裝置上網是大勢所趨。許多新技術有可能在嵌入式領域率先應用。把握住這個趨勢,嵌入式程式設計師大有可為。
現在很多公司招程式設計師要求有嵌入式開發經驗,其實本質上嵌入式開發和我們平常的開發沒什麼不同,只是要求嚴格一點。我寫下這些希望對學習嵌入式開發的朋友們有所幫助。
嵌入式ARM軟體開發設計流程
一、專案總體任務描述:
設計GPS/北斗接收顯示終端平臺,為資料的接收(NEMA格式),處理,圖形顯示等後端應用軟體提供平臺支援。
二、專案功能要求:
1.以PXA270微處理器配合LCD模組開發出獨立的接收顯示終端硬體平臺;
2.在該硬體平臺架構LINUX,
3.WINCE作業系統
三、嵌入式軟體開發上手知識儲備和開發流程
(注:由於我們開發時買了一個樣機,這樣可以節省我們專案開發中的許多時間和降低了開發的複雜度,我們在看資料的時候,作為學習時,可以認真仔細的看每個細節,但作為開發時,有時會碰到一些無關緊要的細節問題,這時可以採用黑匣子辦法,只要會用就行了,我的理解是做專案時並不一定需要知道每個具體細節,要學會分清“系統學習”和“實踐應用”的範疇。比方說,作業系統,我們只需要拿別人的一個樣板來修改達到自己需要的要求就可以,而沒必要自己去編作業系統,一般來講,一個人自己去編寫那東西是不大現實的。所以以下我都是從實用的角度出發,總節我這段時間ARM的學習體會,從而讓對嵌入式不瞭解的新手如何迅速掌握開發中的重點以及達到開發的能力。總之,我的理解是搞開發就是大量廣泛看好的資料,一份好的資料可以節省你開發中的好多時間。不必等資料都看完再動手,那樣時間不夠,可以一邊動手一邊學習資料,需要什麼方面的知識,不懂的當即查下看懂即可。)
嵌入式軟體開發整體流程:
Uboot啟動程式碼的編寫->各模組驅動程式的開發->作業系統的移植->應用程式的開發
以下是上手的一些基本知識儲備:
1)組合語言的學習可參見資料夾“我的ARM”->“ARM彙編指令”集,不需要都掌握,只要知道有哪些指令功能,用的時候查閱就可以了。這部分的學習對用匯編編寫的“uboot”啟動程式碼的理解比較重要,啟動程式碼的詳細介紹可參見“StudyARMboot”這本書,裡面講的非常詳細。(注:如沒特殊說明,資料指的是都是“我的ARM”資料夾裡的資料)
2)C語言只需我們本科學的就夠用了,大致過一遍應用時去查就可以了。沒必要再深入系統的學習。搞Wince作業系統移植的同學有必要把C++快速學一遍,掌握C++的三大特性(抽象性,繼承和派生,多型),因為作業系統Wince的程式程式碼都是按C++的程式設計格式組織起來的,如果不懂C++的那些特性,比較難看懂程式。這方面的資料請看見資料夾“VC++學習”,裡面資料相當詳細。
3)各模組驅動程式的開發。這方面首先要熟讀晶片資料,要理解軟體程式是怎樣控制硬體的。(簡單的理解就是往暫存器裡寫不同的值以驅使硬體實現不同的功能。)剛開始不必把晶片中的每個模組都搞透,只需熟悉一些常用的模組即可,比方說串列埠,I/O口,IIC匯流排,LCD驅動控制和顯示等等,這些跟我們當前的專案都是緊密聯絡的。看各個模組晶片資料的時候可以對照示例程式結合起來看,首先要理解這個模組的工作原理,然後看程式中每個暫存器所設的引數,邊看邊思考這些程式如果我用在其他的地方該如何修改。其他的模組的學習都是觸類旁通的,關鍵是思路,可以把本科我們所做的微控制器,DSP等實驗聯想結合起來。資料可參見資料夾“44b0實驗資料”和“實驗指導書”。
4)作業系統的移植。主要是理解作業系統的一些基本概念(如對訊號量,鎖,程序同步,程序間的通訊,臨界資源使用,驅動管理,檔案儲存等等),然後知道這些概念在程式中是如何反映出它們的功能的。我們以UCOS-II這個作業系統作為理解學習,具體資料參見資料夾“uCOSII-en”,裡面資料講得非常詳細。專案中要求的是用Wince和Linux兩套作業系統,由於我們買了成套開發板,程式碼都有,我們要做的工作就是對它們進行修改和移植,所以只有當你瞭解了作業系統的一些基本概念,你才可能對它們進行修改。Linux開發難度要大些,不僅操作複雜些,而且開發用的命令列的方式,這方面的資料可參考資料夾“linux學習”和“ucLinux核心(中文手冊)”,由於嵌入式大部分用的是嵌入式linux作業系統,從學習的角度來講,這方面要多下功夫。
至於應用程式的開發,那就要看具體的應用了,這個難度不是很大。
嵌入式學習心得體會 篇8
本人大學學的是電子資訊科學與技術專業,其實這個專業和嵌入式沒有多大的關係,要說有關係就是簡單的講了下C語言語法,學完之後還不知道什麼是C語言,只記住了,char,int,string等佔幾個位元組,if,for,while迴圈什麼的,感覺也就能算一些小學就會的題目,全國計算機等級二級也就糊塗的過了。我這個專業沒學過C++,一開始不知道什麼是向物件,什麼叫面向過程,這可能讓大家笑話了。不過這說的是實話,大學的時候比較喜歡動手,喜歡硬體方面的東西,也喜歡看書。在大一的時候就聽學長說,微控制器很難學,在沒事的時候就從圖書管借了本關於51的書,一開始還真是不怎麼懂,然後硬著頭皮去看,當我把51的結構看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結構圖默畫一遍,然後再把各個暫存器功能寫一下,各個功能口的結構也畫一遍,然後就不覺得51有什麼難了。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。我們學習51晶片,是為了以後的打基礎,知道是怎麼透過配置暫存器來實現功能。
大二下學期的時候,我們開了51的課,這個課幾乎就沒怎麼去,因為我認為沒有必要去聽自己會的東西了。後來聽別人說avr的資源會比51的豐富的很多,所以就想試試,看看有什麼難的,就從網上買了本馬潮老師《AVR微控制器嵌入式系統原理與應用實踐》,一邊看書,一邊想自己畫一個板了,一開始想實現一個點陣屏,實現滾動效果,後來想想做個板也花不少錢呢,為什麼不多加一些功能呢,還能多學到些知識,所以就加了溫感,紅外,鐵電儲存器等並把所有的擴充套件口都擴充套件了出來,備以後用,那時還挺自豪的呢,同學們都很羨慕,不過現在想想其實也沒什麼了。
大學也聽說過嵌入式這個詞,不過不太明白是什麼意思,20xx年的時候從網上找到中嵌影片,有四張DVD(大約13G),下載下來後,從頭到尾的看了一遍,沒什麼印象,只記得講一些不知所云的函式,然後莫名其妙的講怎麼使用那個44b0的開發板,不過聽完了,還是有很大收穫的,就有一種想裝一個linux的衝動,我是大二下學期才有的自己電腦,不過電腦的配置比較低,1g記憶體,跑虛擬機器就像個蝸牛,所以就想著怎麼才能裝個linux,自己用XP習慣了,如果全換了又捨不得,那時從書上知道linux的檔案系統和windows不一樣,只有一個根分割槽,所以也害怕一裝linux全盤就被格式化了,不過最後還是慾望戰勝了擔心,買了張redhat 9的光碟,小心的裝這個系統,裡邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最後裝到我的硬碟的最後空間,重新啟動,竟可以選擇進入哪一個系統了,從這之後,自己就不害怕怎麼裝系統了,應了那句言,紙上得來終覺淺,絕知此事要躬行。所以我認為,買一個開發板是完全有必要的,拿到實物操作一下就不會感覺太抽象了。後來也想學學arm,但不知道arm是什麼東西,所以就買了本《從51到arm》,講的是關於arm的大體結構,看完後感覺,原來arm就是一個速度更快,介面更豐富的微控制器埃如果想做linux裝置驅動的同學應該對arm硬體有一些瞭解。如果對驅動不感興趣,完全沒有必要去看。交叉編譯器會幫我們做好這些事情,他比我們更瞭解arm結構。
大三下學期開始準備考研了,所以自己這些興趣就先放下了,報的北郵的信通學院通訊專業,當時就是想一定要上個好學校好專業,也沒想太多,結果考了的成績差了點,沒有被錄取,也不想調劑一個二流的學校,然後就參加工作了,工作中每天都用的到開發板,當我看到一個小板上還可以跑系統的時候感覺很不可思議,以為要很大工程。後來邊工作邊學習,每天都要看電腦看到眼發疼,晚上也都差不多十二點時才睡覺。感覺到累,不過也感覺到自己在進步。
閒話有點多了,說了很多都是自己大學那點破事。
聽很多的初學者說不知道從哪裡開始,學習嵌入都要學哪些東西,從網上搜了一下,一大堆的東西要學,一下就推薦十幾本書,說看完這本書怎麼怎麼樣,看完那本書怎麼怎麼樣,一下子就給初學者給嚇住了,其實完全沒必要把網上的那些東西全部看一遍,那樣又費時,又感覺工程太大,讓初學者沒有信心去把每一種都看完。網上說的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個都知道一些,當然會的越多越好。今天學點這個明天學點那,換著樣來也不會覺得煩。而且還能感覺到每天都有收穫。
下面給嵌入式初學者一些自己的我個人建議。
1、嵌入式涉及到很多的基礎知識:
c語言,關於C語言要知道基本的語法,什麼是結構體,什麼是共用體,有什麼區別,不用強記一些二級考的東西,因在實際中用的很少。
c++要知道什麼是類,怎麼定義,繼承,介面,要深刻理解,當然基本語法也是必不可少的。
作業系統原理也應該知道基本的原理的,我記得我大學沒這個課還是去電信學院蹭別的專業的課呢,後來學習發現很多的東西都是在這個課上學到的。什麼時間片啊,任務排程啊,都是在那裡知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端改檔案的時候只能用這個),我們現在很多的人都習慣用滑鼠了,很少用到命令,我們學習嵌入linux可要改改這個習慣了,linux用命令操作一是效率高,二是功能非常強大,遠非圖形介面能比的了的,其實我們用圖形介面的操作都要轉化為命令傳給硬體的。
Linux檔案系統的管理要清楚,哪個目錄存放是什麼東西,有什麼用,檔案許可權管理等Shell程式設計也要了解一些,在這給大家推薦一個教程,周朝劍的shell程式設計,也就七八講吧,講的很全面。初學者看前4講就可以了。
Linux裝置驅動的架構要了解,初學者可以以飛凌的OK6410開發板上的led驅動分析一下,結合原理圖和linux裝置驅動相關書籍把每一行程式碼都分析明白。關於驅動給大家推薦一本書《LINUX社備驅動程式》中國電力出版社出版的,很經典的,初學者看可能看不太明白,不過要堅持看,最次也得把前6章看完了。
2、看書不要希望一次就會,一次就明白是什麼意思,也不要死記硬背,看不明白也沒關係,以後遇到了知道去哪裡去找就可以了,以後遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux核心原始碼,看一些自己把頭撞破也想不明白的事,會打擊初學者的積極性,要循序漸進,今天學個做個led,明天做個串列埠,後天說不定就做硬體編解碼了。
3、你可以不接受培訓,但是不能不買開發板。
如果你想學習嵌入式一定要買塊學習板,現在的開發板很便宜了,給我們初學者減輕了很多經濟負擔。看再多的影片,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學到東西,記得我第一次寫led的驅動,想自己試一下,網上也有人寫過相關的程式碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
還有關於培訓,現在的培訓機構很多,講的也不錯,老師也很好,但是有一個問題,太集中了,而且學生動手的機會也不太多,記得我們公司還招了一個在北京某個培訓機構培訓半年的員工呢,花了一萬多,來了之後也沒感覺有多高,問他都學了什麼,也就是我前邊說的那些基礎知識,很多的東西還是不知道的,照著書弄個helloworld模組驅動兩天沒搞定。不是培訓不好,但我個人見解效果並不是很好。記住:只有自己動手做過的東西才是自己的。
現在買一塊開發板很便宜,飛凌的OK6410的開發板就不錯,原始碼完全開放,而且資料也很豐富,完全能滿足初學者學習用,有人說友善的板子也不錯,我個人覺得友善的板子不錯,但是不適合初學者,因為他的很多的東西是不給程式碼的,用過友善的板子的同學經常有這樣的痛苦,想學一個東西,去找他的程式碼的時候,卻找不到,很多友善提供的程式碼中很多的都是封裝好的,只提供給客戶一個庫,初學者想要找程式碼的時候就不知道怎麼辦了。
4、不要好高騖遠,要腳踏實地
對於初學者,還有一點小建議,我們拿到一個開發板,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然後又不知道從何下手,然後就去論壇中發一個貼,“那個什麼什麼怎麼實現啊,哪位大俠能詳細說一下啊,跪求!1然後等著別人去回覆。見沒人回覆就抱怨。有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識瞭解嗎?如果不瞭解就去google一下(最好別用百度,不太好用),瞭解了一些,也就大概知道要怎麼做了。如果再遇到問題,再去發貼問,這樣也顯得咱們有水平。比如自己連串列埠是什麼都不太清楚呢,就問串列埠通訊怎麼做啊,就是人家把程式碼給咱,咱也不明白是怎麼回事埃。
5、多看程式碼,多寫程式碼
見多識廣,熟能生巧。多看程式碼,要從程式碼中讀出程式碼的意思來。自己平時也要多寫程式碼,多練習(這一點我做的不好,寫的少)。
寫完已經晚上兩點了,思路有些亂,有些也是個人的見解,在有些人看來可能是錯誤的,每個人有每個人的學習方法,但是我們的目的只有一個——希望我們學到更多的知識。