請把Camera hold住 - Android高通平台調試Camera驅動全紀錄

來源:互聯網
上載者:User

標籤:android   http   io   ar   os   sp   資料   on   2014   

項目比較緊,3周內把一個帶有外置ISP,MIPI資料通訊,800萬像素的camera從無驅動到實現客戶全部需求。


1日 搭平台,建環境,編譯核心,燒寫代碼。

我是一直在Window下搭個虛擬機器登伺服器搞開發的,對Linux系統內容實在無愛,每每一到項目剛開始要搭環境了,內心總有點排斥,過程就比較糾結,看來以後還是要搞個linux真機玩玩。


2日 編寫camera驅動大致架構,配置GPIO,I2C,MIPI,電壓,時鐘等。
很少能碰到FAE只給硬體手冊,沒有Linux和Android驅動的。因為是camera sensor外接ISP晶片,杯具就發生了。整個系統是這樣,高通平台的開發板,自己寫驅動來控制ISP晶片,ISP晶片與camera sensor封裝在一起,ISP控制sensor,實質就是sensor寫寄存器。

            
  開始寫驅動了,說好聽的那是站在巨人的肩膀上借鑒別的驅動,說難聽的就是照葫蘆畫瓢,反正再改下Kconfig, Makefile,這驅動架構就算是有了。
  對驅動開發而言,前期的主要工作應該就是配置GPIO口和晶片上電時序了。

        
每個特定平台在操作GPIO,電壓,時鐘上都會有自己的一套核心API封裝實現,只要能看懂會用這些API即可。配置完後,須在驅動初始化函數裡,正確設定晶片的上電時序,確保晶片硬體上能正常工作起來。

 

3日 編寫I2C通訊的封裝函數,調試CPU與ISP間的I2C通訊

對於一些成熟方案,上面的工作完成順利的話,驅動就差不多了。。很可惜,這塊ISP晶片在提升800萬camera效能的同時,並沒有給我帶來足夠多的支援人員,只能說,成也ISP,敗也ISP,解決方案全都自己來吧。萬裡長征第一道坎便是I2C。

I2C通訊本身要注意兩點,

1) SDA第9位ACK位為低時說明從裝置有響應。

2) Slave address

晶片手冊對這個從裝置地址沒有統一的寫法,有的給出8位地址,有的給出7位地址,一開始容易混淆。如果給出的是8位地址,那第8位是指Write- 0或者Read-1,實際的I2C晶片地址是7位的。Linux源碼裡struct i2c_board_info的板基資訊應填寫7位I2C地址,另外,I2C晶片地址可以通過開發板shell環境下$ ls /sys/bus/i2c/devices/ 查看。舉個例子,

static struct i2c_board_info msm_camera_boardinfo[] __initdata = {
 {
  I2C_BOARD_INFO("ov8820", 0x78 >> 1),
 },

 

4日 FAE現場支援

FAE過來了,就確認了一件事,沒有現成驅動了,我徹底死心了。後來還發現一個規律,只要FAE來現場那就意味著啥都搞不出來了。。幾個人匯聚思想還不如一個人靜下心來研究。不過他們此行至少留下一份重要的資料-ISP晶片指令序列,camera所有功能的實現就靠它了。

 

5日 調通I2C

I2C的調通具有裡程碑式的意義,它不僅標誌著硬體效能正常開啟,更為後來璀璨絢爛的camera世界奠定了堅實的基礎。。

有段時間卡在I2C 通訊上,給ISP晶片0x3c寫入開啟晶片命令0xf0成功,但是再發送其他命令全部失敗。

分析現象,I2C匯流排已經可以通訊了,問題只能是在ISP晶片上,於是,查電路圖,抄傢伙起來把電路板上的電和時鐘全部再量一遍。。

    

結果發現,有一路來自自動對焦馬達的電壓只有1.7V,沒有達到要求,驅動裡沒有把它的GPIO拉高,導致晶片無法正常開啟工作。

 

6日 編寫預覽驅動,測量MIPI資料

根據葵花寶典裡的ISP指令序列,在Linux驅動裡和Android高通抽象層裡填寫相關代碼,便可實現預覽功能。不過很不幸,光靠那兩下子預覽 還是出不來的。開啟預覽程式時,用示波器量MIPI匯流排上的映像資料,能夠得到理想的MIPI波形,說明底層驅動的預覽功能OK,問題在於高通平台的 CAMIF VFE上,於是,翻閱高通的技術資料,學習添加VFE的一些配置。

 

7日 配置VFE,點亮預覽

預覽的成功具有劃時代的意義,它不僅標誌著camera模組在整個Android系統架構中的成型,更為後來的拍照,錄影,映像效果等功能奠定了堅 實的基礎。預覽的出現,意味著我不用再回答那些類似像“camera亮沒”之類的只注重表面現象的問題,從那一刻起,我彷彿站上了另一個高度,有種夢回漢 唐的感覺。。      

     

 

8日 健壯代碼,編寫拍照功能,對焦功能

至此,整個camera模組從上層應用到底層驅動已全部打通,接下來就可以見神殺神,見佛殺佛了。。

 

 

9日 編寫白平衡,色彩效果,情境模式,ISO,防震,閃光燈等功能

這年頭碼農傷不起啊!就按葵花寶典上的ISP指令序列往裡使勁填充。

 

10日 登陸伺服器提交代碼


請把Camera hold住 - Android高通平台調試Camera驅動全紀錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.