大學剛畢業,初來駕到,很多時候因為自身能力限制,找一份合適的工作和合適自己的工作並不是這麼容易,這也許就是經常聽到長輩們說的“找工難”的一個意境吧!最近由於工作需要,開始自學了嵌入驅動開發,成效不高,不知道對於項目開發幫助如何呢?
工具/原料
相關驅動開發基礎視頻+相關文檔
開發板+程序調試
開發環境:ubuntu12.04
方法/步驟
第一部分我把它比作緣分: 在大學的學習中,本人有玩過51單片機,ARM9,ARM11這三塊板。說實在的,剛開始接觸51時,還真有些莫名的喜歡,感覺終於有可以用來“裝大神”的基本東西了,當然,這也是因為大學期間,只對C語言有感覺,其他基本都是60分萬歲的心態,哈哈。
迴歸正題,說實在,51單片機的確是一個步入嵌入式開發的一個很好的敲門磚,對於簡單的寄存器操作,程序調試和成熟的開發技術的支持,這些都是我們很好利用的資源,也正是因此,讓我認識到,科技改變生活原來可以這麼的簡單;有了基本對模塊控制的認識和基礎加上自身把握C語言流的基礎,我開始挑戰上了操作系統的嵌入式開發;
第二部分我把它比作磨合:
終於,在磕磕碰碰中,終於有了自己的一塊ARM9開發板,開始了“逗比”的自學生活,讓我很感動的是,那時我們班有了嵌入式開發三劍客這個名詞,然而就在今天,孤獨的路上,每每想起,心中還是那麼溫暖,也就這樣又磕磕碰碰的繼續下去;
在我看來,對於學習新的東西,有2個非常期,一個是剛開始入門,一個便是開始深入研究的這2個節點吧。
在接觸ARM9後,我終於在嵌入式開發的路上,對於LINUX操作系統和嵌入式硬件有了基本的架構,當然遺憾的是,我的語言開發能力遠遠沒有達到我預期的目標,雖然現在也還在努力;
第三部分我把它比作實戰:
如今開始工作了,可以自由學習的時間越來越來少,工作中,任務大於你的計劃,雖然這都是可調度的,但是這就要求你是否有過硬的硬件基礎,不然只能“奔潰”的節奏了;對於開發的我們加班也許成了習以為常的事情,但是,我們應該捫心自問,加班是否在獲取我們白天無法獲得的能力呢?還是說只是為了完成工作上的任務。
所以在這裡,我有幾個建議給大家:
1)請合理安排你的工作和學習計劃,並竭盡全力去實現它,因為你的生命是有限的;
2)請愛上你的工作,因為快樂的工作也是這樣,不快樂工作,有可能你會失業並且時間和效率不成理想的比例,還有因為你父母的生命是有限的;
3)知道你工作的目的是為了什麼?請將你未來的路給看清楚,沒有人會比你自己更加清楚,也不會有任何人比你更加能超越現在的自己,還有的是,也許你的身體也再這麼的年輕,因為你的精力也是有限的;
在囉嗦了這麼多的感悟,開始說說這段時間我對驅動開發的一些學習情況吧。因為一開始是從IIC總線開始入手的,所以從網上獲得了這張驅動的一個基本的架構,在這裡我就不具體講述驅動開發的知識點了,以後我會陸續將經驗發佈出來。
剛開始接觸驅動的時候,我們會有個疑惑,為什麼有了應用層開發,為什麼還需要驅動層這個架構呢?又或許在沒有一個對為什麼要用操作系統這個清晰想法之前,會想為什麼不直接裸機好了呢?
之所以為什麼,就是因為一個管理和一個開發的理由,當然這也是我的基本理解。人總是有惰性的,不然我們還在洞裡住著,時不時用大棒子敲暈幾個野生雌性人類回來生猴子呢,o(∩_∩)o 哈哈
所以,我們應該先把握好整個嵌入式系統架構,然後再進入驅動架構的認識,當然學習方法人各有一。在我的認識中,由於之前接觸比較多應用層的程序開發,明白當我們需要調用底層硬件驅動時,必須找到對應設備的設備節點,然後通過基本的文件操作,將參數通過設備節點傳遞給底層。
然而,由於應用層和驅動層所處的內存空間並不是一致的,所以從用戶空間傳遞下來的緩衝數據必須經過相應的轉換才能夠使驅動程序進行調用。
當然這也是一種合作機制,畢竟在這個大數據時代,任何機制離開了合作和統一這微妙的關係都是空中樓閣那般脆弱的。
作為感想的開頭,我將驅動層和應用層之間的關係理解成一種特殊的API組織形式,之所以這麼特殊,在一次感想中我再來簡述我的理解吧。
注意事項
孤單的路上尋找方向,快樂也許就並不那麼難獲取了吧