你成了請告訴我


沒有必要。你說的Linux程序開發指的是應用開發還是驅動開發呢?有相關硬體基礎還是轉驅動比較有優勢。下面推薦個學習路線吧。

建議先學下stm32,買個開發板,把基本的外設程序的編寫學下,理解下硬體原理(比如led如何點亮的,按鍵值如何讀取,LCD顯示原理是什麼,spi,iic協議是什麼)。有stm32基礎的話,上手Linux開發會快一點。

接著可以買個ARM-A開發板,ARM-A和stm32很多地方都是想通的,理解起來不難。學習ARM-A前可以先看下 ARM體系結構與編程,再去看視頻的話會理解快一點,視頻中講到的難理解的這裡基本都有。

主要可以從以下幾個方面準備吧:

1.Linux驅動開發的環境,比如Linux操作系統的使用,交叉編譯工具的使用,makefile文件的編寫(能看懂,簡單的會寫)等。

2.紮實的C語言功底,有了紮實的基礎,閱讀Linux內核源碼的框架的時候會更容易點,驅動開發的大多數工作就是拿內核寫好的源碼來做一個修改。建議先熟悉內核基本的框架和簡單外設驅動的編寫。比如字元設備框架,塊設備驅動框架,輸入子系統模型,匯流排設備驅動模型等。

3.內功的修鍊,基本的數據結構要會,比如,鏈表,二叉樹,堆棧等。要理解內核是如何使用鏈表,二叉樹等數據結構的。操作系統基本的概念要理解,比如自旋鎖,信號量,阻塞與非阻塞。彙編語言要求能看懂,其實就是要熟悉Arm指令集,在很多情況下看反彙編文件對於bug的調試會更方便。

4.對照視頻一點一點學習的過程中,剛開始第一遍看的話會有很多地方不明白,不要緊。如果在查閱了一些資料後還是不明白,可以先往後放放,不用深究。內核的許多東西一旦深究起來,越陷越深。作為初學者,了解框架就可以了(比如,內核輸入子系統模型常用的一個函數input_attach_handler()這個函數,剛開始我們只需要知道他是用來匹配dev設備和驅動軟體就可以,暫時可以不用知道這個函數內部是如何實現的)。有一定基礎之後,可以再去深究其中的某個點,思考他們為什麼這麼寫。

歡迎關注我的博客,主要分享Linux驅動學習,Arm體系與架構,Linux內核,C語言,數據結構與演算法相關文章。https://blog.csdn.net/qq_16933601

需要相關學習資料的可以在主頁找我QQ(備註知乎),一起交流學習。


正確的路徑是這樣的,先來虛的,在網上找培訓視頻看個大概夠面試,然後簡歷稍微吹一下,不要要求太高,無數公司老闆不肯大價錢又讓開發去招聘,無奈只能你來了,通常知道你水平都是給個小任務,這個時候來實的,拚命學,多問多討論,加班加點五千工資干一萬的事,毫無疑問你會失敗,但是毫無疑問公司有些事情不在乎,等你做好一個項目時候,你就功成了,後面就不要我啰嗦


當你沒有把握的時候,千萬不要辭職在家專心學習。

從硬體直接轉到Linux程序開發,需要一定的時間積累。

我看到過1個朋友,辭職了4個月想換個方向,辭職了4個月自學,技術能力沒有質的提高,現在找工作還是很尷尬。

可以去騰訊課堂,搜索 零聲學院 看看我們的課程,我們主要從事Linux伺服器開發的培訓,主要針對在校研究生、以及已經工作的的朋友。

這裡有我們部分學員的反饋: 學員offer · 語雀


我之前畢業剛開始就是搞硬體的,現在做驅動開發,可以先嘗試晚上學習一段時間,因為做硬體,如果已經工作很久了,一些相關知識有必要重新學習下,語言方面肯定要過關,還可以再看下深入理解計算機系統,計算機程序的構造與解釋,演算法方面也要學習下。

如果做linux驅動或內核方面,可以再看些驅動方面的知識,看下內核文檔,再深入點就是看深入理解linux內核,深入linux內核架構這些書,可能剛開始看的速度很慢,不過在這個過程中搭配內核源碼同時閱讀,效果還是比較好的。

同時可以下載linux-0.01的內核源碼,自己編譯調試下,它也包含了一個內核的必要模塊,可以從它開始了解,同時再買一些配套開發平台練習下,這些平台一般都配有教程及源碼的,看能不能堅持下來


沒有,你辭職了,也是玩


千萬不要辭職專門學習。親身經歷!

當沒有確定的【目標導向時】(即:具體項目),所有過去的時間全部都是【浪費掉】的。效率能有10%就不錯,除非你從小就是學霸,從小就非常自律。

要是真想轉,除了課外學一些外,最快的方式是:【降薪】去一個對【代碼成果要求不那麼高的公司】(不好找)。盡量多掌握些,【找到後,再離職】。


推薦閱讀:
相关文章