嵌入式Linux驅動學習之引導篇——為什麼要選擇嵌入式Linux驅動這個方向?
醞釀了幾分鐘,依舊不知道如何開篇(這可能是工科男的一個通病吧)。索性隨意起來,想到哪寫到哪,這樣也許思維能變得更加活躍呢。
先交代一下背景,本人目前是國內某普通一本高校的一名大三學生,讀的專業是電氣工程及其自動化。轉程式猿也是目前大多數跨專業就業學生的首選,畢竟薪資福利擺在那裡,博主自然也是這股潮流中的一員。我也不知道當初在填報志願的時候為什麼要選擇這個專業,可能是覺得這個專業的名字比較高大上吧。雖然在填報志願的時候有稍微瞭解過這個專業,但是畢竟沒有真正去體驗過,所以並沒有對這個專業有清醒的認識。電氣工程這個專業屬於強電(直接理解為高壓就好),擺正心態認真學下去能學的好(數學基礎要打好)。這個專業雖然是工科裡比較注重實踐與理論相結合的專業,但由於其專業的特殊性,很難找到實踐的機會(場地與裝置都不太允許)。每學期基本上都有實驗課,但是基本上都是驗證性實驗,且這些實驗室基本都不對學生開放(只能是實驗課去摸摸,畢竟裝置都挺貴的)。順其自然,我大一大二基本上都是在搞自動化方向的東西,畢竟成本低,易入門,而且做出來東西后很有成就感(這點最關鍵),所以基本上就是按照現在大多數大學生一樣開始從微控制器入門了。轉折點是大二暑假,當時參加了全國大學生電子設計大賽,我發現周圍的同學都好強,動手能力和學習能力都超乎我的想象,這時候驚呼:原來周圍的同學都這麼努力呀!莫名感到壓力倍增...在長達1個月的集中訓練中,我也發現其中存在的一些問題(或者對我來說的疑惑):
1. 程式碼的創造能力不足:雖然周圍同學都有很強的自學和動手能力(比如調通一個四軸小飛行器或者倒立擺),但是真正需要自己創造的程式碼並不多,基本上就是搬運其他人的程式碼。這樣能夠快速實現作品的功能,但是也存在一些隱患。例如:對MCU各種介面的執行機制並不是很清楚,而STM32的庫函式的廣泛使用更是加深了這種隱患。萬丈高樓平地起,沒有打好地基外表再華麗也只是危樓。而且很多大公司在招應屆畢業生時也更注重基礎知識的考核。
2. 過於浮躁:這也是現代人的一個通病,基本上搬來的程式碼能用就行,也不去考慮是否能夠進一步去優化,沒有進行深入思考和實時總結。這樣以後在遇到相同的問題時又需要重新來過,其實是最沒有效率的做法。
3. 同質化嚴重:這裡說的同質化並不是作品的同質化(作品雖然有時也類似...),而是能力的同質化。感覺具備這方面能力的人實在太多,誰沒有在大學的時候玩過幾年微控制器?名校學生的能力會比你差?找工作在招聘網上這些微控制器開發的職位的薪資也比較低,因為太多人會了,能力相當的情況下公司肯定選擇省錢的方案咯。
以上就是我大學期間的一些思想變化,它也逐漸讓我清醒的認識自己,我想轉嵌入式Linux驅動開發的決心俞加強烈。因為這些問題能夠在嵌入式Linux驅動開發的學習過程中迎刃而解,畢竟環環相扣,若囫圇吞棗則寸步難行。囉嗦了這麼久,終於要轉入正題了。語言功底太差,各位請見諒(手動捂臉)。。。
有人說嵌入式是一個坑,是一個無底洞。其實他們說的也沒錯,因為嵌入式涉及的知識太廣泛了,需要花很多的時間去學習一些新的東西,而且還不一定能夠立刻有成效,這也讓很多想踏入嵌入式大門的初學者停下了腳步。然而,嵌入式的門檻固然較高,但是若學有所成,得到的薪資和發展空間也是純微控制器開發所不能及的。那來說說我為什麼要選擇嵌入式Linux驅動這個方向吧。
1. 具備一定理論與實踐基礎:我們的選擇是會受環境因素影響的,本身專業就是電類專業,自然對硬體知識的接受能力比較強,加之在大學期間也經常搗鼓微控制器,對各種硬體介面的基本原理還是比較熟悉的。相對於零基礎的初學者,我們依然有一些明顯的優勢。
2. 驅動方向的人才相對緊缺:比起純IT方向的程式猿,往嵌入式Linux驅動開發方向走的人就少很多了,這也導致驅動方向的人才相對緊缺。當然這其中也與開發難度大、學習週期長、涉及範圍廣、成本高等因素有關。這也就形成了待遇較高的局面。況且最近發生的“美國限制向中興出口晶片案”迫使我國加快晶片的自主研發,雖然晶片的研發還任重而道遠,但已經是基本趨勢,到那時嵌入式驅動工程師需求就更加大了。
3. 發展空間比較大和選擇多:嵌入式產品多種多樣,複雜多變,感覺只要與智慧電子相關的產品都能叫嵌入式產品,這也就在一定程度上拓寬了嵌入式驅動方向的發展空間。同時,選擇也變得相對較多。可以和志同道合的朋友一起創業,或者進入公司工作,總而言之,自己能力越強選擇越多。同時,若想轉IT上層業務軟體方向相對比較容易,至少比上層業務轉驅動方向容易很多。
4. 整體架構穩定:嵌入式驅動方向雖然入門難,但是整體架構比較穩定,並不會像IT上層軟體一樣需要根據客戶需求不斷更改自己的實施方案甚至完全推翻,可能就有更多的時間來提升自己的技術能力。
接下來我還會分享一些自己學習嵌入式Linux驅動方向的學習筆記和心得體會,盡請期待。。。
由於本人也是初學者,也有很多知識需要補充,可能有哪裡說的不對望各位大佬指教,共同進步!! !寫部落格的初衷是想自己鞏固一下所學知識,並且做一些知識輸出分享給大家,何樂而不為呢!
很喜歡下面的一段話:
“對於優秀的程式設計師,其最優秀的品質是能夠心平氣和地學習與思考問題,透析程式碼背後的架構、原理和設計思想。沒有思想的程式碼是垃圾程式碼,沒有思想的程式設計師,只是在完成低水平重複建設的體力活。很多程式設計師從不過問自己寫的程式碼最後在機器裡面是怎麼跑的,很多事情莫名其妙地發生了,很多bug莫名其妙地消失了......他們永遠都在得過且過。”