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