隨著智能手機(jī)的飛躍發(fā)展,特別是Android智能機(jī)的爆炸性發(fā)展,Android驅(qū)動工程師是越來越受歡迎的一個職位,而且是一個非常值得人期待的職位,因為可能你參與研發(fā)的一款手機(jī)就能改變了很多人的生活,所以,進(jìn)階吧,Android驅(qū)動程序猿,那怎樣成為一名優(yōu)秀的Android驅(qū)動程序猿,我來發(fā)表一下我的意見吧,希望各位網(wǎng)友不要輕易拍磚。
Android驅(qū)動的基礎(chǔ)知識
首先作為Android驅(qū)動程序猿,你必須清楚的了解你要做的是什么,平時需要用到的基礎(chǔ)知識,對Android的基本框架的了解還是非常的有必要,對linux下的編程基礎(chǔ)也需要了解,因為嚴(yán)格來說,Android驅(qū)動是基于Linux驅(qū)動,個人強(qiáng)烈推薦閱讀Linux Device Driver 3rd版,這本書講了Linux下設(shè)備驅(qū)動的基礎(chǔ)知識,作為Android驅(qū)動程序猿,你需要能最好讀懂這本書,而且是反復(fù)的閱讀這本書,因為我發(fā)現(xiàn)每次重新讀這本書,都有新的收獲,這本書很值得一讀,強(qiáng)烈五星級推薦;而且還要會基本的C編程,能很好的讀懂和編寫一些C程序,而且懂一些基礎(chǔ)的Java那就更好了,因為Framework層的代碼與驅(qū)動層的代碼聯(lián)系也比較緊密,稍微懂一些Java代碼,你會發(fā)現(xiàn)你對整個驅(qū)動框架的了解會更加的熟悉,相關(guān)的Linux編譯腳本和Linux編譯體系,因為商業(yè)開發(fā)的一些原因,Android本身的文件架構(gòu)體系可能會被一些編譯腳本而改變,加入新設(shè)備驅(qū)動,你需要了解整個的驅(qū)動編譯體系,那樣書寫驅(qū)動程序也會更加的清晰!
\
Android/Linux相關(guān)驅(qū)動框架知識
為詳細(xì)了解一下Android驅(qū)動程序員需要會的技術(shù),我特意百度了各家Android驅(qū)動程序員招聘需求對Android程序猿的要求,選擇哪幾家呢,國產(chǎn)手機(jī)的代表,中興,華為,酷派,聯(lián)想,小米,魅族,VIVO都是非常不錯的國產(chǎn)手機(jī)廠商,而且研發(fā)的Android智能手機(jī)越來越好,我甚至還專門去看了一下新興Android智能機(jī)公司,包括錘子手機(jī)官網(wǎng)的Android驅(qū)動工程師招聘需求,One Plus One的官網(wǎng)連個加入我們的鏈接都木有,創(chuàng)業(yè)型的公司不知道是人才暫時飽和,還是啥原因,居然沒有招聘信息,匯總發(fā)現(xiàn),這些公司要求差異不是特別大,出了需要基本的Android調(diào)試能力,你還需要對Android各模塊驅(qū)動框架的了解,比如,某錘科技的Android驅(qū)動工程師招聘需求,大伙可以去試試,錘子手機(jī)號稱是在做最好的手機(jī),比目前的旗艦手機(jī)都要好一點點,加入它,還蠻有期待的! \ 某米公司的Android驅(qū)動工程師也需要Android/Linux相關(guān)的知識,中興和聯(lián)想的Android招聘需求就比較籠統(tǒng)了,估計是大公司的緣故吧, \ 中興的官網(wǎng)居然開始找不到驅(qū)動工程師的招聘,我的個神,廢了我好大勁,才找到相關(guān)的招聘信息! \
相關(guān)的硬件知識和通信知識
Android驅(qū)動平時工作就是調(diào)試各種外圍設(shè)備,是直接跟硬件打交道的職位,需要你看的懂電路原理圖,了解基本的顯示原理和基本的攝像頭成像原理等等,這是跟你平時工作非常相關(guān)的基礎(chǔ)知識,做Android智能手機(jī),你也需要了解基本的通信相關(guān)知識,射頻原理和基本的Modem相關(guān)知識,只有懂相關(guān)的硬件知識和通訊設(shè)備相關(guān)的基礎(chǔ)知識,你才可以寫出更好的Android驅(qū)動程序,才能調(diào)試出更滿意的效果!
熱愛驅(qū)動開發(fā)和不斷學(xué)習(xí)
其實這點是非常的重要,應(yīng)該擺在第一位,首先是你必須喜歡這份工作,你才可以做的更好,興趣是最好的老師,這句話是真心的大實話,而目前的社會狀態(tài)是什么賺錢,就一窩蜂的沖去做那個,結(jié)果,最后可能做的很不開心,然后,錢也沒撈到;如今,我的大學(xué)同學(xué)很有一部分都放棄了所學(xué)的專業(yè)對口工作,有去賣保險的,有去工廠做普工的,有去做銷售的,有去吃鐵飯碗的,當(dāng)然職業(yè)肯定不分貴賤好壞,我說這一點,主要是建議大家去堅持最初的夢想!我的夢想就是做出一款可以改變?nèi)藗兩畹囊苿咏K端,讓這個世界因為我而有一點點的不同,童鞋們,一起堅持夢想吧! 此外,做Android驅(qū)動工程師需要的是不斷的學(xué)習(xí),時刻保持著一股激情,不斷的學(xué)習(xí)才能更好的完成日常的驅(qū)動開發(fā)任務(wù),并能保持對開發(fā)的的敏銳感覺,我覺得喬布斯的:Stay hungry,Stay foolish說的很好,一直被當(dāng)做是我的座右銘,來激勵我堅持做一個更好的Android驅(qū)動工程師,??寫這篇博客的目的就是分享我的一些小看法,日后我還是會不斷更新我的博客,分享一些驅(qū)動開發(fā)相關(guān)的文檔和博客,和廣大的驅(qū)動程序猿一起進(jìn)步!
1:硬件相關(guān):簡單的數(shù)字電路要懂,看的懂電路圖(這個很簡單),能根據(jù)電路找到相應(yīng)Camera硬件連接的GPIO,并根據(jù)芯片手冊配置GPIO為相應(yīng)的模式;比如GPIO模式,輸入IO或輸出IO;或配置成PWM模式;不同的模式這個GPIO的工作方式是不同的;
2:Camera驅(qū)動:比如ov5640;你要找本Linux驅(qū)動相關(guān)的書看看,比如《linux設(shè)備驅(qū)動程序》知道簡單的linux設(shè)備驅(qū)動寫法;當(dāng)然工作中Camera驅(qū)動不需要你寫的,有參考的可以使用,但是參考驅(qū)動一般支持實現(xiàn)錄像、拍照功能,別的白平衡、對焦等都需要你去自己調(diào)試;
3:你要學(xué)習(xí)V4L2協(xié)議,因為驅(qū)動導(dǎo)出/dev/video0接口是通過V4L2協(xié)議的;上層C的應(yīng)用也是通過V4L2協(xié)議訪問/dev/video0的;實際V4L2協(xié)議就是通過一些標(biāo)志linux ioctl()函數(shù)和底層驅(qū)動通信的;V4L2協(xié)議是為了屏蔽各種Camera驅(qū)動的不同(比如usb攝像頭,mipi接口攝像頭)而提供的統(tǒng)一和攝像頭驅(qū)動通信的規(guī)范;
4:你要知道C++的class的相關(guān)知識,最好能看到C++的代碼,既然你有C的知識,哪把C++的面相對象看懂,知道C++的class就可以了;為什么要懂C++呢?因為Android Camera HAL訪問/dev/video0都是用C++寫的,二十幾個個xxxx.cpp不同的類相互繼承實現(xiàn)的;而且你要懂Android HAL層的寫法,至少查查資料知道用哪里看;一般都是CameraModule.cpp或CameraHal.cpp;
5:JNI的寫法最好以知道一些,至少可以抄就可以,因為這些寫法都是固定的,因為調(diào)試的過程中有時候你一個人要從java層跟蹤代碼到HAL層再到驅(qū)動;
5:你要會用Linux,因為所有的Android源碼都是在Linux下編譯的;你要知道ARM架構(gòu),交叉編譯器;比如arm-linux-gcc;知道怎么編譯Android和kernel源碼;怎么刷機(jī);怎么調(diào)試;最好買塊帶Camera的Android開發(fā)板;
嵌入式驅(qū)動開發(fā)需要了解的知識大概有以下幾類: 1 嵌入式操作系統(tǒng)驅(qū)動框架。
每一個操作系統(tǒng)都有自己的構(gòu)架,應(yīng)該了解驅(qū)動在整個系統(tǒng)中的具體位置與構(gòu)建驅(qū)動程序的主要事項 2 總線知識,比如PCI、USB總線。 3 芯片知識。
驅(qū)動其實就是對設(shè)備上一些寄存器的配置、CPU與設(shè)備本身的通訊以及對不同命令的處理 4 要做好驅(qū)動,必須對所使用的CPU體系結(jié)構(gòu)有一個比較深刻的認(rèn)識 5 C++基本用不上,主要是C和匯編。 6 做驅(qū)動最好要懂內(nèi)核調(diào)試(比如說linux)。
java 并且必須掌握 JNI。
了解android應(yīng)用編程。
會 C ++ ,看android 源碼中 就是在 c C++ Java 三種語言中穿梭。
知道 android 系統(tǒng)的啟動流程。
會HAL(硬件抽象層)。
會Linux系統(tǒng)知識,及Linux-kernel、Linux驅(qū)動開發(fā)。因為HAL還是調(diào)用Linux驅(qū)動的。
android是在Linux-kernel上再建立了一個類似文件系統(tǒng)的系統(tǒng)。
首先作為Android驅(qū)動程序猿,你必須清楚的了解你要做的是什么,平時需要用到的基礎(chǔ)知識,對Android的基本框架的了解還是非常的有必要,對linux下的編程基礎(chǔ)也需要了解,因為嚴(yán)格來說,Android驅(qū)動是基于Linux驅(qū)動,個人強(qiáng)烈推薦閱讀Linux Device Driver 3rd版,這本書講了Linux下設(shè)備驅(qū)動的基礎(chǔ)知識,作為Android驅(qū)動程序猿,你需要能最好讀懂這本書,而且是反復(fù)的閱讀這本書,因為我發(fā)現(xiàn)每次重新讀這本書,都有新的收獲,這本書很值得一讀,強(qiáng)烈五星級推薦;而且還要會基本的C編程,能很好的讀懂和編寫一些C程序,而且懂一些基礎(chǔ)的Java那就更好了,因為Framework層的代碼與驅(qū)動層的代碼聯(lián)系也比較緊密,稍微懂一些Java代碼,你會發(fā)現(xiàn)你對整個驅(qū)動框架的了解會更加的熟悉,相關(guān)的Linux編譯腳本和Linux編譯體系,因為商業(yè)開發(fā)的一些原因,Android本身的文件架構(gòu)體系可能會被一些編譯腳本而改變,加入新設(shè)備驅(qū)動,你需要了解整個的驅(qū)動編譯體系,那樣書寫驅(qū)動程序也會更加的清晰。
Android操作系統(tǒng)快捷鍵及常用技巧
1.最常用的技巧,長按Home鍵可以調(diào)出最近使用的6個程序,并將當(dāng)前程序置入后臺運(yùn)行
2.調(diào)整音量至最低,就會依次進(jìn)入振動模式和電話鈴聲靜音
3.長按掛機(jī)鍵,在彈出的菜單中可以選擇飛行模式、靜音模式和關(guān)機(jī),
4.輸入英文時,刪除一個詞就可以同時按下Menu鍵和Del鍵,
5.在短信菜單中,長按某條短信會調(diào)出菜單,可將此短信轉(zhuǎn)發(fā)或回復(fù)。
6.長按接聽鍵,會自動激活系統(tǒng)的語音撥號功能,
7.將鈴聲文件轉(zhuǎn)移到SD卡,
在SD卡新建 "Ringtones" "Alarms" "Notifications" 等文件夾,
將鈴聲文件放進(jìn)去,系統(tǒng)選擇鈴聲的選項中就多出了這些音樂文件。
有電子通信的基礎(chǔ)應(yīng)該好很多~看看熟不熟悉現(xiàn)代計算機(jī)基礎(chǔ)吧~ 像中斷 MMU 內(nèi)存之類的作用要弄清楚~然后在一些小板子上不跑linux 裸跑一些測試代碼~ 像在ARM9上面寫一些裸板的LED控制代碼和按鈕的中斷處理代碼~可以之后嘗試在linux下面寫一個用中斷按鈕控制的led~再往上接觸一下input子系統(tǒng)和字符設(shè)備了解之后就能做各式各樣的驅(qū)動了~ 基本都是子系統(tǒng)加字符設(shè)備~ 不過其子系統(tǒng)比input要復(fù)雜很多很多而已 還要搭上協(xié)議之類的~再往后就是協(xié)議的學(xué)習(xí)了~書的話都差不多的~ 反正現(xiàn)在出書的內(nèi)容7 8分一樣的~ 隨便買本翻翻就好了。
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.676秒