① 搞嵌入式linux驅動開發面試應該做哪些准備
軟硬體的基礎知識一定要扎實,比方中斷的原理,串口通信的原理什麼的。。。
最重要的還是你自己在這一年中做過什麼,把你自己做過的東西講清楚的話,
一般人家HR就能判斷你這個人到底肚子里是不是有真材實貨,不要像很多
華而不實的人一樣,自己什麼代碼都沒寫過的項目也往簡歷裡面湊,這樣沒好處。
至於薪水,我們相信做驅動開發的工作永遠也不會差,關鍵還是得能在工作
中出成績才能對得起人家的高薪水。另外除了薪水之外,公司能具有的工作學習
氣氛更加重要,畢竟,你也只有一年的工作經驗,還是處於經驗的積累期。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
杭州巨立安技術(JulianTec),專注於提供Linux相關的項目研發和技術培訓服務。
② 做linux設備驅動的工作和前景如何
做驅動,環境跟公司大小並沒有什麼太大的關聯。比如有些公司主做vxworks, 招linux驅動工程師,則有可能你進去就是一個人做這塊。樓主在面試過程可向考官了解下公司的概況,再決定是否加入。
③ 請問做嵌入式linux驅動開發的工作需要對驅動熟練到什麼程度才行
你好,樓主:
我可以給出一些見解,我是通過培訓,然後在此行業工作了近一年。針對你的問題,不同的公司有不同的錄取規則,沒有一個定式。當時找第一份工作前,我也有你的這種困擾,我把我的想法說一下,希望能幫到你。
如果你作為初級驅動工程師去面試,你只需要熟悉一些重要的驅動,比如I2C、SPI,而且自己做過此類驅動的小項目,再針對公司供應職業的需求好好做足功課。這個階段是入職後更專業地學習驅動。
如果你作為資深工程師,有多年經驗,自然地對大部分驅動十分了解,比如USB、網卡、存儲設備等等。
對於驅動框架啊,你一定是要了解並十分熟悉框架的,這樣才可以對相應驅動程序進行填充實現其功能。在面試找工作時這個方面會更重要些,但是我認為只要你認真地研究驅動代碼,是很容易掌握的,關鍵是信心與毅力。
「還有對驅動編寫完後的配置和編譯需要到達什麼程度?」這個問題問的好,這是企業和公司都關心的問題,它關心著產品的市場,至於到什麼程度,基本的功能你一定要很好地實現,如果時間充裕,盡量優化你的代碼,使驅動佔用更少的資源、更省電、數據傳輸更好等等。
以上為個人見解,祝成功!
④ 怎麼達到linux驅動職位要求
我可以給出一些見解,我是通過培訓,然後在此行業工作了近一年。針對你的問題,不同的公司有不同的錄取規則,沒有一個定式。當時找第一份工作前,我也有你的這種困擾,我把我的想法說一下,希望能幫到你。
如果你作為初級驅動工程師去面試,你只需要熟悉一些重要的驅動,比如I2C、SPI,而且自己做過此類驅動的小項目,再針對公司供應職業的需求好好做足功課。這個階段是入職後更專業地學習驅動。
如果你作為資深工程師,有多年經驗,自然地對大部分驅動十分了解,比如USB、網卡、存儲設備等等。
對於驅動框架啊,你一定是要了解並十分熟悉框架的,這樣才可以對相應驅動程序進行填充實現其功能。在面試找工作時這個方面會更重要些,但是我認為只要你認真地研究驅動代碼,是很容易掌握的,關鍵是信心與毅力。
「還有對驅動編寫完後的配置和編譯需要到達什麼程度?」這個問題問的好,這是企業和公司都關心的問題,它關心著產品的市場,至於到什麼程度,基本的功能你一定要很好地實現,如果時間充裕,盡量優化你的代碼,使驅動佔用更少的資源、更省電、數據傳輸更好等等。
以上為個人見解,祝成功!
⑤ Linux 內核和驅動開發工程師的發展前景怎麼樣
或許這樣的標題,應該是由像Linus或Greg KH這樣的大師級的高手才有資格寫的吧。但是作為我來說,也許我更想把這個標題作為一個疑問句來使用,整理一下自己的認識,用來勉勵自己,和大家一起努力實現這個目標。認識膚淺的地方,還請大家見諒。
從事嵌入式開發是當下比較熱門的一個領域,做職業規劃的時候,比較清晰的是有三條路可以走:
C1、嵌入式軟體開發工程師
C2、嵌入式硬體開發工程師
C3、嵌入式驅動開發工程師。
其中
C1是計算機相關專業的同學可以選擇的,因為學習的課程相對偏軟,平時在PC上編程比較多,做軟體開發會相對輕松。
C2是學習電子電路的同學可以考慮,對模擬電路比較熟悉,可以設計出質量好的電路板。
C3的難度比較大,需要同時熟悉軟體和硬體,真正的做到軟、硬相結合,搭建軟體和硬體互通的橋梁,當然了在業界的待遇也是相對來說比較高的。
我們可以去一些招聘網站查看相關企業的崗位要求,這樣學習的時候就有了一個比較明確的目標。今天看到一位前輩的博文,談究竟應該如何成為優秀的驅動開發工程師,很受鼓舞,在此與大家分享共勉。
--------------------------------------------------------------
何謂優秀的驅動開發工程師
首先要定義,我所認為的一個優秀的驅動開發工程師,應該具備什麼樣的能力,這里列一下按照從易到難的順序,個人認為應該會有幾個方面的要求吧:
能夠獨立完成驅動的功能開發任務
能夠分析和優化驅動的性能,針對特定硬體揚長避短
能夠充分了解模塊相關軟硬體能力、發展方向,輔助應用工程師最大化利用硬體能力
能夠輔助硬體工程師規劃硬體設計,預防問題,謀求功能模塊的最佳方案
能夠協助定義系統架構,合理規劃軟硬體,謀求產品實現的最佳方案
作為一個驅動工程師,很多時候不是完全從頭開發一個完整的子系統,而是針對特定硬體和平台移植驅動,增加功能,解決Bug等等,如果從這方面外在的表現來看:
解決問題的境界,大概會有這么幾個階段:
不知道哪裡存在BUG
不知道如何解決BUG
知道如何解決BUG
知道如何發現BUG
知道如何規劃BUG
知道如何發現BUG(而不是撞上BUG)其實並不簡單,需要你對系統有足夠的了解,能夠察覺可能出問題的地方。 而規劃Bug更難,需要你能對問題的輕重緩急做出准確的判斷。沒有的完美的世界,只有適當的取捨,規避和預防。
而從解決問題過程的角度來看,我認可以分為幾個階段:
BUG發生 -> 大量跟蹤調試代碼 -> 終於發現並解決BUG
BUG發生 -> 理論推測可能原因 -> 迅速定位並解決BUG
閱讀代碼 -> 預測可能出現的BUG -> 證實並解決BUG
---------------------------------------------------------------
應該具備怎樣的素質
那麼要達到上訴最佳境界,需要具備和發展哪些素質和能力呢?
一、足夠的硬體知識
能看簡單的原理圖,能夠分析硬體異常的可能原因,能夠使用常見的硬體調試工具,我想這是做為優秀的驅動工程師,區別與其它軟體工程師,所不可避免、必須具備的專業素質。當然取決於你具體從事的工作,對這方面的要求不盡相同。
對於驅動開發者來說,不了解所開發驅動外設的硬體原理和相關背景知識,也許很多時候,也能夠完成一些移植,修補的工作任務,但這就好比無源之水,無根之木,我相信是很難走遠的。
二、多多益善的操作系統知識
做驅動開發,特別是純粹的外設的驅動移植工作,剛開始的時候,也許你並不需要了解很多操作系統本身的知識(像內存管理,進程調度,鎖,各種內核子系統的原理框架等等),也能順利完成手頭的一些工作。
但是,如果一但需要優化驅動,需要完善軟體框架,或者是遇上疑難問題需要跟蹤解決,對操作系統,內核本身的了解,就體現出它的價值了。
對於Linux內核驅動開發者,尤其如此,首先,代碼是完全開源的,你有條件去了解背後的運行機制,其次,Linux內核和各個組成子系統總是在迅速的進化發展中,不進則退,你也有必要跟上時代發展的腳步。
三、強烈的好奇心,持續的熱情
如果驅動開發不僅僅是你的愛好,更是你養家糊口的途徑,我想,很多時候,你大概不會有機會專注於一兩個你最有經驗的模塊的開發和維護。隨著能力的成長,勢必會要求你接觸和掌握越來越多的各式各樣的驅動模塊的開發。
對於這件事,包括我自己,有時候大概都會有如下幾種反應:
哇,原來的工作做太久了,太乏味了,很高興能做不同的工作。
啊?又要做別的模塊啊?我手頭的工作已經太多了!
這個模塊沒意思,我不想做。
相信多數有志青年們都是第一種表現了,不過,有些時候,我發覺,很多人的這種熱情其實並不持久,一個新的模塊沒做多久,就再次厭倦了,是已經爐火純青了么,未必,或許只是修改了幾個BUG以後不甚其煩。很多時候,我面試前來求職的工程師時,發現簡歷上這個也做過,那個也做過,但是一旦問到解決了什麼問題,所做過的驅動,框架、流程、原理之類的問題的時候,就一問三不知了。
我覺得如果自己的目標是優秀,那麼最起碼的標准應該是對具體驅動模塊相關的子系統的整體工作流程,框架,具備足夠的好奇心,樂於去了解和學習,而不僅僅是為了完成任務而工作,否則的話,很難積累下扎實的經驗和技術。
四、清晰的邏輯思維能力
這一點,也許是個軟體開發人員都應該具備吧,不過,做為驅動開發工程師來說,有時候,大多數情況下,工作的硬體環境並不是完美的,遇到問題需要分析判斷錯誤的原因是硬體問題還是驅動Bug,這時候,清晰的邏輯思維能力尤其重要。
五、良好的工作習慣
大多數人都不是天才,要成為優秀的開發工程師,其一需要持續努力,其二需要時間積累經驗,而這過程中,很重要的一點,就是要有良好的工作習慣。譬如,注意設計文檔的維護,對工作中遇到的問題的記錄,過往經驗的及時記錄,適當的軟體開發流程等等。文檔工作,可能很多人很不願意去做,它的確很花費時間。不過,唉。。。老啦,好記性不如爛筆頭啊 。當然,其實設計文檔更多的是為你提供思考的機會,而過往經驗的總結,也可以起到和大家交流技術,共同進步的目的。
六、英語
這個也是必須的啦,沒有辦法,郵件列表,技術文檔,社區,精通英語肯定是很大的優勢,做開源項目尤其如此。閱讀各種Spec標准文檔之類的速度還是很重要的。閱讀無障礙是一回事,能和母語一樣一目十行,那才爽呀,唉,人生苦短,效率啊!光讀文檔,就不知道要比老外多花多少時間。
⑥ 如何成為優秀的linux驅動工程師
首先要定義,我所認為的一個優秀的驅動開發工程師,應該具備什麼樣的能力,這里列一下按照從易到難的順序,個人認為應該會有幾個方面的要求吧:
能夠獨立完成驅動的功能開發任務
能夠分析和優化驅動的性能,針對特定硬體揚長避短
能夠充分了解模塊相關軟硬體能力、發展方向,輔助應用工程師最大化利用硬體能力
能夠輔助硬體工程師規劃硬體設計,預防問題,謀求功能模塊的最佳方案
能夠協助定義系統架構,合理規劃軟硬體,謀求產品實現的最佳方案
作為一個驅動工程師,很多時候不是完全從頭開發一個完整的子系統,而是針對特定硬體和平台移植驅動,增加功能,解決Bug等等,如果從這方面外在的表現來看:
解決問題的境界,大概會有這么幾個階段:
不知道哪裡存在BUG
不知道如何解決BUG
知道如何解決BUG
知道如何發現BUG
知道如何規劃BUG
知道如何發現BUG(而不是撞上BUG)其實並不簡單,需要你對系統有足夠的了解,能夠察覺可能出問題的地方。而規劃Bug更難,需要你能對問題的輕重緩急做出准確的判斷。沒有的完美的世界,只有適當的取捨,規避和預防。
而從解決問題過程的角度來看,我認可以分為幾個階段:
BUG發生 -> 大量跟蹤調試代碼 -> 終於發現並解決BUG
BUG發生 -> 理論推測可能原因 -> 迅速定位並解決BUG
閱讀代碼 -> 預測可能出現的BUG -> 證實並解決BUG
號稱能光憑瞄一遍代碼就找到問題的高手,我想我是沒希望了。
應該具備怎樣的素質
那麼要達到上訴最佳境界,需要具備和發展哪些素質和能力呢?
足夠的硬體知識
能看簡單的原理圖,能夠分析硬體異常的可能原因,能夠使用常見的硬體調試工具,我想這是做為優秀的驅動工程師,區別與其它軟體工程師,所不可避免、必須具備的專業素質。當然取決於你具體從事的工作,對這方面的要求不盡相同。
對於驅動開發者來說,不了解所開發驅動外設的硬體原理和相關背景知識,也許很多時候,也能夠完成一些移植,修補的工作任務,但這就好比無源之水,無根之木,我相信是很難走遠的。
多多益善的操作系統知識
做驅動開發,特別是純粹的外設的驅動移植工作,剛開始的時候,也許你並不需要了解很多操作系統本身的知識(像內存管理,進程調度,鎖,各種內核子系統的原理框架等等),也能順利完成手頭的一些工作。
但是,如果一但需要優化驅動,需要完善軟體框架,或者是遇上疑難問題需要跟蹤解決,對操作系統,內核本身的了解,就體現出它的價值了。
對於Linux內核驅動開發者,尤其如此,首先,代碼是完全開源的,你有條件去了解背後的運行機制,其次,Linux內核和各個組成子系統總是在迅速的進化發展中,不進則退,你也有必要跟上時代發展的腳步。
強烈的好奇心,持續的熱情
如果驅動開發不僅僅是你的愛好,更是你養家糊口的途徑,我想,很多時候,你大概不會有機會專注於一兩個你最有經驗的模塊的開發和維護。隨著能力的成長,勢必會要求你接觸和掌握越來越多的各式各樣的驅動模塊的開發。
對於這件事,包括我自己,有時候大概都會有如下幾種反應:
哇,原來的工作做太久了,太乏味了,很高興能做不同的工作。
啊?又要做別的模塊啊?我手頭的工作已經太多了!
這個模塊沒意思,我不想做。
相信多數有志青年們都是第一種表現了 8 )不過,有些時候,我發覺,很多人的這種熱情其實並不持久,一個新的模塊沒做多久,就再次厭倦了,是已經爐火純青了么,未必,或許只是修改了幾個BUG以後不甚其煩。很多時候,我面試前來求職的工程師時,發現簡歷上這個也做過,那個也做過,但是一但問到解決了什麼問題,所做過的驅動,框架、流程、原理之類的問題的時候,就一問三不知了。
我覺得如果自己的目標是優秀,那麼最起碼的標准應該是對具體驅動模塊相關的子系統的整體工作流程,框架,具備足夠的好奇心,樂於去了解和學習,而不僅僅是為了完成任務而工作,否則的話,很難積累下扎實的經驗和技術。
清晰的邏輯思維能力
這一點,也許是個軟體開發人員都應該具備吧,不過,做為驅動開發工程師來說,有時候,大多數情況下,工作的硬體環境並不是完美的,遇到問題需要分析判斷錯誤的原因是硬體問題還是驅動Bug,這時候,清晰的邏輯思維能力尤其重要。
良好的工作習慣
大多數人都不是天才,要成為優秀的開發工程師,一需要持續努力,二需要時間積累經驗,而這過程中,很重要的一點,就是要有良好的工作習慣。譬如,注意設計文檔的維護,對工作中遇到的問題的記錄,過往經驗的及時記錄,適當的軟體開發流程等等。文檔工作,可能很多人很不願意去做,它的確很花費時間。不過,唉。。。老啦,好記性不如爛筆頭啊 8 )。當然,其實設計文檔更多的是為你提供思考的機會,而過往經驗的總結,也可以起到和大家交流技術,共同進步的目的。
英語
這個也是必須的啦,沒有辦法,郵件列表,技術文檔,社區,精通英語肯定是很大的優勢,做開源項目尤其如此。閱讀各種Spec標准文檔之類的速度還是很重要的。閱讀無障礙是一回事,能和母語一樣一目十行,那才爽呀,唉,人生苦短,效率啊!光讀文檔,就不知道要比老外多花多少時間。。。。
了解更多開源相關,去LUPA社區看看吧
⑦ 手機linux驅動的流程是什麼主要想在手機驅動開發方面發展,請問我下一步怎麼學習
我現在是從事linux驅動這塊的,現跟你說說在公司我的主要工作內容吧。
驅動開發,就是去驅動一個設備,比如公司的一個產品,一個手機,公司老大說這個屏顯示不好,要換一個,找屏的廠家,屏提供硬體,軟體,這個軟體就是所謂的驅動代碼,當然這個在你的產品上是跑不起來的,你需要根據你的產品來修改驅動代碼,其實驅動開發就是大部分工作就是驅動移植,當然關鍵是你要知道怎麼移植,這個是重點。通常驅動代碼的分類:字元、塊、網路,這些分類是從軟體上來分類的,實際上應用最多的是硬體介面的分類:i2c 驅動,spi驅動,uart驅動,內核中有對應的子系統:比如說i2c系統。
想快速出去工作,我個你提供一條路,看i2c設備驅動:i2c協議(這個當面試的時候肯定會問你的,如果你說你會i2c驅動)、linux系統的i2c子系統,市面上很多設備都是i2c的,而且這部分設備也經常改動,因為硬體電路簡單。
⑧ 想學習Linux 驅動,需要什麼知識
首先,接觸linux操作系統,在你的電腦上裝一個linxu操作系統(建議ubuntu,比較友好),熟悉經常要用的命令,熟悉環境(建議看「鳥哥的linux私房菜」)。
其次,閱讀經典書籍是不可少的,建議先看ldd前四章,大概了解linux驅動的框架,驅動是做什麼的,該如何寫驅動,那本書上有一些例子,可以在你的電腦上編譯,執行看看。後面的章節在結合自己的情況而定。
第三,建議閱讀ulk(understanding the linux kernel)所有的內容,了解linux內核的一些基本知識,在心中建立一個框架,不必完全懂,深入了解就好,以後經常翻翻,受益無窮!
第四,別著急,這才是你真的進入linux驅動的第一步,花點錢買個開發板吧,然後了解代碼的編譯,下載,看看板子的datasheet,針對自己感興趣的深入研究。建議學習流程,led燈控制---tp---i2c匯流排-----lcd-----camera----flash----wifi/bt等。因為這個裡面牽涉了甚多內核的子系統(input,v4l2,fb等
),所以可能要多話時間看代碼,了解代碼的框架,設計的思想等,只要一步一個腳印,一定會有所成。
第五,因為現在的移動設備大多數都是android的了,所以你就要看看linux kernel在android的作用,然後往上看看,看看hal層的代碼,這些在調試中都是需要的,如果有興趣,更加可以看看framework的代碼了,學習android一些工作機制,類似於surfaceflinger,audioflinger等等。。
⑨ 從事linux 設備驅動開發工作.需要什麼樣的學歷和英語等級
您好,我個人估計學歷沒有也罷,但是要腦子好使,有一些編程的基礎,不是英語好就行的。是要專門學習的,專科學校里出來的人最好的。不過有的地方就是看重文憑,所以您必須要到正規的地方考一個文憑。
在我看來只要能編程就可以了,別的我還是不看重的。