基於ARM嵌入式Linux學習開始到入門

騰出手來,認認真真寫一篇嵌入式的文章,談談我的學習歷程。希望對你有所幫助。

介紹一下背景,我是學計算機的,還是專升本的。大一大二上的是軟件學院,然後專升本考了個二本,也就是說大一大二的時候學的是純面向應用的開發,學了一年半的Java,都是高層開發,對底層是毫無瞭解的。當時也沒有系統的學習過操作系統、組成原理的知識,好在我還算是上進,主要還是興趣所致,對計算機認識比較到位,所以平時也積累了不少操作系統的知識和編程思想。到了本科,有了操作系統和組成原理的相關課程,因爲之前自己的積累,學起來還是比較輕鬆的吧。在大三結束的這個暑假,大家都在忙着考研的時候,我感覺我嵌入式方面算是入門了吧。


      開始。

      萌芽:我是這麼萌芽的,首先我對智能手機非常感興趣,這也加深了我對操作系統的認識。高中就開始聽別人說智能手機牛逼,放電影不用轉碼,有後臺,當時我就充滿了幻想,時時關注着dopod的新款手機,當時大多數人還不知道多普達或者HTC是什麼牌子,我卻在默默地關注着。高三畢業,遍拿着積攢的2000多塊錢跑到鄭州百腦匯買了部dopod C730,也就是HTC E650,全球第一款搭載windows mobile6.0的手機,數字鍵盤+側滑QWERTY全鍵盤(當時智能機用戶比較少,雖然現在smartphone停產了,當時還是很high的),這手機算是給我攢足了面子,我也順道瞭解了什麼叫主頻、wifi、RAM、ROM、刷機、SPL、windows mobile ……等知識。當時我哥用的Nokia的變形金剛5700,順道也瞭解了Symbian沒有Mobile的系統強大。雖然有着這方面的愛好,但是隻是業餘的在積累相關知識,純屬興趣。學習方面還是並沒有涉及到相關知識,好在我選的專業是Java,接觸了點J2ME的知識,算是相關吧。


      衝動:真正決定要學這個還是受第一暑假的影響。大一暑假去學比較早,當時還沒有開學,閒着無聊和路子去老師辦公室轉了一圈,當時看到寬哥(我的的一個比較牛逼哄哄的數據結構老師)的辦公桌上放這個東西,電路板,有好多接口,還有好多線連在電腦上,我一下就被吸引了,問了老師才知道這東西叫ARM,然後的好多天,可以說從那以後我都在想這東西。離開辦公室開始就在查相關的資料,摸清了ARM是什麼東西,應用方向,及相關的簡要知識,我更是無法自拔了。我這人比較腦熱,也比較激動,也不是很戀財,當時就想着我也要買個板子,其實對於當時來說,2440的板子+Jlink是600多,不到700。是個不小的投資吧,對學單片機(其實當時我還不知道什麼是單片機)的來說,更是如此,因爲它較單片機來說是貴的太多了,好在那個學期我拿了3000元的獎學金,正好又碰到網上羣裏的夥計一塊兒團購板子,要比自己買便宜個二三十吧,於是果斷的買了。當時在買之前一直在看arm Linux的視頻,講的是Linux的進程創建、調度、內存管理了什麼的,可以聽懂但是記不住,因爲這東西用的話一次就刻骨銘心,當知識點去記憶的話,也就那麼一會兒。拿到板子時應該是到了大二的下學期了,當時我也沒帶電腦,就是用朋友電腦的超級終端連了一下板子,看了看串口輸出,然後趁着五一回家,就把板子放家裏了。因爲還要準備專升本考試,一直在學習英語和數學知識,同時還在自修操作系統,因爲只學兩門課很是乏味,天天自習自習。這半年我也開始接觸哲學,思想也在慢慢昇華。


      擱置:這板子一放家裏就是半年,到專升本考完試,到大二暑假。一直在放着,但是心裏邊沒把它忘了,畢竟六七百買的,沒事還是會進到,裏邊的QT界面下看看。當時可能選擇專升本就是想着給自己兩年的時間來學這個吧。


      繼續。

      到了大三,此時已經是換了學校,大專畢業,上的本科了(ps:我們專科兩年)。想着既然選擇了就必須走下去,所以買了本《嵌入式Linux應用開發完全手冊》盜版的,書+運費才35。除了平時上課,自己也會抽時間看看,但是說實話,書是看了,但是都是似懂非懂的那種。大三上半年過得很快,沒什麼成長,好在開的有C++、操作系統、組成原理的課,這對後來的學習很有幫助。


      到了大三下期,時間比較充裕,因爲寒假時看了一本電子版的好書《Linux 內核設計與實現》,看了幾張,很好理解。因爲我已經意識到ARM嵌入式與Linux的密不可分。正好開學後,我們學校圖書館有這本書,接了出來,看完了未看的章節。也有看《嵌入式Linux應用開發完全手冊》這本書,不過沒有微機接口的知識,看着還是很令人費解的。往開發板上燒過幾次系統,寫了一個點亮LED的程序,就這麼,下學期過去了,雖然沒有太多的長進,但是有些細節的成長,畢竟有些東西是在不經意間發生的。 “真正的速度是看不見的,就像風起雲湧日落月升,就像你不知道樹葉什麼時候變黃,嬰兒什麼時候長出第一顆牙,就像你不知道什麼時候會愛上她。”


      進化。

      大三暑假,對考研至關重要啊,糾結了好久,我還是沒有決定考研。這個暑假對不考研的人也是同等重要的。我用了大約20多天的把上邊提到的兩本書重新看了一遍——《嵌入式Linux應用開發完全手冊》、《Linux 內核設計與實現》,說來也神奇,這次一下子全明白了。可能是到了那個份上,該有的就有了吧。於是開始編譯內核,移植根文件系統。趕緊就像是在打紅警一樣,剛開始是黑的,一點一點在探路,什麼都是探到一點是一點,沒有連成一片,到後來,建了雷達,一下子就明朗,地圖連成了一片。並且還發現書裏學的知識和微機接口的東西基本一致,只不過是換了ARM爲8086.外設、總線、串口通信等其他的都差不多,這對這學期的微機接口課也有很大幫助,並且相互作用,對後續的驅動開發應該很有幫助的。

       

       入門。

       大四,已經對嵌入式Linux開發的相關知識都有了初步認識,及從網上友人那邊得到的開發流程的介紹,現在應該算是入門了。我認爲,入門不僅僅是知識體系的建立,還要有行業及行情的預估能力,還有就是對發展走向的思索。到目前,我的定位是移動智能終端的開發,因爲移動互聯網的時代已經到來,MID產業也開始“氾濫”,並且這方面對我的吸引要比做工控、監控、路由或者物聯方面要大得多。所以剛開始強化android開發方面的知識,和驅動開發。Java是我的強項,kernel也是我所愛,android把他們完美的集成到了一塊兒,並且順應着移動互聯網發展的潮流,似乎看到了什麼鍥機,你呢?


       從軟件到硬件是個漫長的過程,真正明白了才發現就是那麼回事,寫相應的控制寄存器就可以控制硬件的動作。主要是控制邏輯的編寫,這些控制邏輯的細節就是驅動程序了。如果不用跑OS,就是裸機驅動,只用提供單一接口;如果要跑OS,就按照OS的標準接口去實現相應的機構與方法就好了。原本以爲神奇而牛逼的驅動開發也開始日漸明朗,其實都一樣。


       學習建議:感覺這和考研一樣,看好多書固然重要,不過集中地喫透基本書更加重要,喫透了某方面的一本書,你會發現其他的書的知識基本類似,看起來會更加的得心應手。還有就是可能剛開始沒有頭緒,嵌入式是個交叉學科,知識體系卻是龐大,像我,剛開始是毫無一絲硬件知識的,現在也是沒有多少,要看芯片的data sheet,要看開發板配套電路圖,其實就是那麼回事,慢慢的就懂了。貴在堅持吧。還有就是興趣,興趣是學習的最大動力。

       前幾天和朋友聊天還在說學習這方面的事兒,他選擇的考研。是在我的影響下開始涉足這個領域的,當時他說的一句話很好:“現在這麼努力考研,你那麼努力的學,可能最大的動力就是嵌入式的發展前景了”。是啊,就是這個,如果你也預估到了這一點,堅持下去,絕對不會後悔的。


       另外,興趣絕對是學習的第一動力,要經常培養自己對該門課程的興趣,嘗試全方位的去了解它,一些漠不相關的信息都肯能會在後邊的學習中幫到你。還要保持你的好奇心,人老心不老,越具有好奇精神,你就會越具有探索精神。比如你拿着U盤去同學那裏考電影,一不小心發現優盤上印了個Flash,你會想Flash是什麼東西?和網頁動畫的Flash有關係麼?突然你又發現你手機的內存卡上也印着Flash標誌,甚至還有個class 2、或者class 4……你不淡定了。你有種搞不明白這個問題就睡不着覺的感覺,於是你上網搜索,然後你就積累了nand flash 、Nor flash 的知識,甚至幸運的話你還會看到RAM 、 SRAM 、ROM 、EPROM 、EEPROM……等的字眼。然後你甚至沒怎麼留意這些東西。但是到後來,當你看嵌入式或者組成原理、微機接口的課程時你發現這些名詞你貌似都見過,這樣你就沒有了別人的那種看到一大批名詞而產生的莫名的恐慌,然後你就是輕聲的回答了一下老師的問題:“這些好像都是不同技術實現的存儲器”……這一說可不得了,一羣不明真相的還摸不着頭腦的學生便以爲你就是那個沉溺多年的高手,開始在可下向你靠攏,哪天順便的問了你一道你前一天才看過的一個問題,你很輕鬆的給他講明白了……從此以後,他就以爲你很厲害,有問題就會第一個來找你,還把你的厲害告訴別人,更多的人來找你請教一些東西,你同時被動的學了很多新的知識(畢竟一個人遇到的問題要比10個人遇到的問題少得多,接觸的問題的多樣化程度也少很多)。。。從此,你被傳爲佳話……其實好學生就是這麼練成的,你學要做的就是比別人提前走那麼一小步,然後別人便會祝你成功。而同時,如果你足夠耐心、和善,你還會交到一大批知心的朋友。不瞞你,我就是這麼走過來的,到了大學我才知道怎樣學習,自發的去學習。現在非常感激當年的努力,呵呵,要謹記其實你也很厲害,你不比別人差。。。


       有問題可以一塊兒交流,學習的路上有個夥伴很重要。哈哈,這裏還要感謝李哥對我問題的耐心解答,和Tony神的多次交流,以及仰天長嘯兄還把我推薦給你老弟交流思想,十分感謝你們的幫助。。。。。


       這是我所經歷的過程,希望對您有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章