如果我是嵌入式初學者,我也許會這樣做
宣告:我絕非乙個高手,也不是老手,或許對於初學者,我只是起步的時間比你們早了一些罷了。
因此以下說的也談不上經驗之說,只是按照個人之見來建議性的對於初學者說點什麼,是否
完全適合你們,還請自己定奪,但我會本著責任對於以下的建議,若有爭議,請在qq群es參與討論。
——瘋子
一、到底是自學還是去培訓呢?
如果你覺得基礎不夠好,而又沒有乙份恆心去獨自做好一件事,自學能力不夠強,不能乙個人坐在空空的房間裡獨自呆上一天,不能承受那份寂寞與苦楚,或者說你時間短,而又
快面臨找工作,想在短時間內入門,那選擇培訓吧,培訓費是高,但是這種投資,會在你工作後得到回報(對於選擇哪個培訓機構,不做推薦)。
如果你覺得自己能夠管理好自己,能夠承受三點一線的生活,自學能力比較強,而且時間相對來說還算長,有著一顆要學好的決心和信心,還有乙份堅持,那麼可以選擇自學。本文件重點在於如何自學。
其實嵌入式不是乙個短暫的過程,而是長期的堅持和積累,才能達到一定境界,我始終相信,不是短期3.4個月能完全掌握的,請一定要相信這點。無論培訓還是自學,在最終的提高,都在於個人是否能夠繼續在嵌入式上花時間,下工夫,去專研。
二、學習的態度?
對於乙個東西,一定要有興趣,如果沒有興趣只靠單純的動力去堅持,很難堅持到最後,當面臨乙個接乙個問題的時候,就容易產生放棄的念頭,半途而廢,很多初學者倒在這裡,以至於最後無奈的和我們說再見,和嵌入式擦肩而過,但我們絕對不能完全憑藉興趣,畢竟這個世界吸引我們眼球的東西太多,否則又容易陷入這個也弄,那個也弄了,看似知識淵博,卻最後變得東不成西不就,就如有些人即想學好arm,又想玩好fpga,最後還想學會dsp呢,當然這不是不可能,只是在你工作之前,貌似沒什麼可能,這樣到最後,沒有一樣可以讓自己自信的去找工作。興趣之後我們需要的是乙份動力,因此我們得知道如何去發掘動力,支撐我們在旅途繼續前行,俗氣點說,我們可以沒有多少偉大的理想為了啥振興中華,簡單說為了高薪為了生活富有等等,讓他成為我們的動力,我們不得不提高自己的技術水平,如此之後,無形中去提高整個國內的技術水平吧,儘管社會很殘酷,可能最後你也不一定高薪,但是你技術不咋樣,肚子裡沒什麼貨,這種可能沒高薪將變成一定不高薪,當然這是對於嵌入式方面的研發人員來說,人生路各種有,咱不能說得那麼死板與絕對。
三、你還在徘徊嗎?
前些天有個人問我,如何選擇?我說,做什麼事,你都需要堅定下來,考研不考研,專業不專業,你應該在開始一件事前就決定好,否則,徘徊越久,越拿不定主意,那就是在浪費時間。好吧,假設能夠看到這個文件的你們,都應該是想好學嵌入式了,那麼有人問,我在上學,而課堂上好多要學的,那有如何選擇呢?我對他說,和嵌入式相關的,你就學,不相關的,你也用不到,你課堂上學了也是皮毛,對於你工作,或許沒半點用,只要應付考試過就行了,至少這個畢業證咱還是得拿到的,既然與自己將來要從事的沒有多少關係,咱幹嘛還花那時間去學習?青春短暫,時不待我。
四、對於arm9,arm11我如何選擇?
這個問題,也是我在群中遇到過很多次的問題,已經回答好多次了,以後真不想再費口舌。對於乙個初學者,不是越高階的東西越好,而是應該看使用者群和學習資料。目前來說,arm9,而且是s3c2440的學習資料比較多,對於開發板,應該是友善之臂的mini2440使用者群最廣,當然我沒做過調查,只是在幾個群中出現頻率高於其他開發板估計所得。而現在網路上的多數學習資源,也基本會有對mini2440的支援,所以當遇到問題也容易解決,也容易找到相關人員進行諮詢。
五、如何學習?
囉嗦了那麼多,終於到了如何開始嵌入式學習的地步了。分幾點來說吧。
1、什麼是嵌入式?
2、嵌入式到底要學些什麼?
俯視嵌入式,嵌入式是軟硬體的集合,那麼就是說軟體硬體都得學,這是個大的方向把握。站在嵌入式本身的角度,那麼軟體就是三個層次,上層應用,介面程式設計,比如qt,中間層的應用程式設計,比如linux程式設計,就是那些linux網路程式設計,程序控制,執行緒等,底層程式設計就是核心,驅動程式設計,比如如何控制乙個gpio,如何驅動乙個lcd讓其正常工作等等。至於硬體,那就是各種硬體電路,比如gpio電路,led電路,電源電路,lcd的控制電路等等。對於以上提到的名詞,這裡不做多的介紹,只是示範,暫時不懂沒關係,等學到一定程度,有些東西你自然而然就懂得如何去找資料去了解。
2.1、對於介面應用程式設計,那又需要哪些知識以及如何學習呢?
2.2、對於linux應用程式設計,需要哪些知識又得如何學習呢?
2.3、對於底層程式設計,核心,如何學習?
2.4、對於硬體,咱們該如何學習,要到什麼程度呢?
3、對於嵌入式,到底要哪些基礎?要學多少知識?
需要哪些基礎?如果認真看了以上介紹,那麼你應該懂得,c絕對是基礎的基礎,linux應用程式設計是用c,核心是用c,驅動更是用c,你說重要嗎?c++也是在c的基礎上有了類和物件,繼承等概念,這麼說,你不認為c是基礎的基礎了嗎?關於c學習,書籍太多了,但絕對不是譚浩強那本書做基礎就行了的,只能說,譚的書是基礎c的基礎,如果這都沒有,那你的路還太遙遠,c的三大著作,還是有必要的,《c專家程式設計》,《c和指標》,《c陷阱和缺陷》,有一本比較基礎也是以linux為背景寫的c書籍很不錯,入門挺容易,《一站式c程式設計》,強烈推薦c新手。c的重要性不多說,面試的時候你不要後悔對於c你了解的太少了。如果還要什麼基礎,那就是硬體方面了吧,除非你不搞驅動不搞底層,那就不算是需要的基礎了。
4、shell指令碼編寫很重要?
當然重要,linux系統的管理,基本上需要shell指令碼語言的,很多自動化工作,需要shell指令碼語言知識,在檔案系統中,也會看到shell指令碼語言,什麼makefile等等,都會牽涉到shell指令碼語言,還有configure檔案,build檔案等都會牽涉到,如果你沒有shell指令碼語言編寫知識,你就很頭疼,所以必須要了解,推薦《shell指令碼學習指南》,這是shell方面的權威著作。
5、最後,咱需要將所學知識融合一體,來幾個小專案練練手,你們覺得怎麼樣?
總結:
後記:
但願我們的es群更好的發展,但願這篇文件,對於初學者,是乙個指引方向的燈台,幫助迷茫中的你們,找到方向,觸動你們的神經,堅持自己的決定。也希望多支援es群,多參與到討論中,互幫互助,共同進去。一起在這個行業,打造屬於自己的天地。
——瘋子
2012.08.11 00:18
嵌入式Linux學前指導(初學者必讀)
近期,有許多面臨畢業 找工作的大學生來 諮詢了解 有關嵌入式linux方向的學習安排。在與他們交流溝通的過程中,被問到最多的幾個問題就是 如何做好嵌入式linux學習前的準備?學習嵌入式 linux需要補習哪些基礎課程?嵌入式linux開發跟普通軟體開發在學習方法上有什麼不同?專案實戰環節多嗎?有專...
寫給linux Shell程式初學者
在 nix系統啟動最後階段將呼叫乙個非互動的shell程式,然後在shell程式裡啟用圖形客戶端程式,如果選擇不啟用圖形客戶端,則在系統啟動最後階段將呼叫乙個 互動的shell程式。互動shell又包括登陸shell與非登陸shell,登陸shell指的是以bash login 以下所有shell程...
寫給C語言初學者的話
前些天我寫了一篇 unix c語言值得注意的地方 一貼,回貼中談到學習 國外的開源軟體 中的高質量 的問題,但是有朋友跟我說,在看 的過程中感覺難度很大,想想也是如此,動輒十幾萬行的程式如果沒有人指點的話是很難找到切入點的,所以我撰寫了此文希望能對廣大c語言愛好者有所幫助,在文章中有很多煽情的地方還...