1. 程式人生 > >Android車載camera的除錯-Bring up(1)

Android車載camera的除錯-Bring up(1)

來到新公司,各種不適應。跟老大和hr溝通後,最終決定留下。裡邊各中原因就不說了,留下後就得開始幹活啦:拿到的第一個case是車載環視camera的點亮,算是入門後的第一個小考驗吧:
我們認識實物的一個過程通常是從現象到本質,那第一個問題來了:
什麼是車載環視camera?各位看官們參考下圖:
車載環視系統
簡單來說:車載環視體統需要4顆camera分別安裝在汽車的前後左右採集影象,再將採集的影象傳輸到系統主機,主機通過演算法對4路影象進行同步、合成、拼接等,最終將處理好的影象送到汽車中控的液晶上。讓駕駛者可以在行進或者倒車過程中無盲區的觀察周圍情況,避免事故發生。

要求完成時間:
老大給2周。作為一個老兵,我給自己的時間是一週以內,不過最終3天搞定。
目標:


1.Bringup ti96x+isx016
2.ti96x+isx016 four channel ok
3.實現isx016暫存器讀寫,eeprom地址讀寫

手頭上資源:
硬體:
高通820a EVB板
820a 板載ti96x解串晶片x2
(ti913Q串列埠編碼晶片+ov10635)x1
(ti913A串列埠編碼晶片+isx016)x4
軟體:
針對820a android 平車載專案臺原始碼
ti96x_ov10635(1 channel)據說ok的原始碼
QCarCam Linux使用者區應用原始碼
參考文件(除TI文件其他的只能通過各自關係看看啦,都有版權:():
s820am_peripheral_module_reference_schematic.pdf
multimedia_driver_development_and_bringup_guide_-_camera.pdf
ISX016_ApplicationNote_ver1.5_E.pdf
ISX016_RegisterMap_V2.2.xlsx
OV10635-OV10135-Product-Specification-aCSP_Version-2-4_thundersoft.pdf
ds90ub964-q1.pdf
ds90ub913a-q1.pdf
TI_i2c_over_DS90UB913-4_FPD_Link_III_with_bidirectional_ctrl_channel.pdf

概念說明:
1.ti96x、ti913是TI開發的一套配套使用的,用於長距離視訊資料傳輸的晶片。有過camera除錯經驗的都知道不管是dvp介面還是mipi介面。傳輸距離只限於板載的距離,並且還不能太長,否則受到干擾。該套片就是為車載設計的,使用該套片在汽車內部佈線傳輸視訊是沒有問題的。
2.ti96x類似於hub,支援同時4 channel camera video input。
3.ti913和camera是封裝在一起的,具體之後說明。
4.ov10635,ixs016分別是OV 和Sony公司為車載設計的Camera sensor。

原理說明:
框圖:
純手繪


1.Bring up camera:
這個case和以往bring up camera不同,不同之處在於註冊到host端的不是camera而是ti96x。這個是除錯的一個關鍵點。所以除錯步驟:
1.針對ti96x在*.dtsi中設定相應的pin config
2.將ti96x作為Camera設定到系統當中,包括:
sensor_lib_ptr{
sensor_slave_info、power_setting_array、sensor_output、…
}//注意slave address是ti96x的,而不是isx016的,上電時序也是針對ti96x的….
3.初始化ti96x相關暫存器,包括:
配置gpio口,設定串列埠速率,配置埠及相應RX、TX,設定Camera上電,設定傳輸模式,remote slave ID及別名slave ID….
4.通過ti96x對camera 進行上電,reset
5.通過別名slave address對各路camera進行暫存器初始化(isx016不需要,原因:有eeprom,上電reset後自動將eeprom初始化引數,load到camera暫存器中)

由於之前有base專案ov10635據說是ok的,試了一下不行。原因是我們開啟camera的apk是不對的,而是要用一個叫QCarCam Linux使用者區應用。之後踏踏實實照著ov10635的驅動改了一份兒ixs016的驅動。不亮!!!困惑的時候需要大膽的假設,和小心的論證!
假設:
1.既然ov10635可以亮說明,ti96x和host端的pin config,slave address,ti96x上電,reset沒問題
2.問題可能出在ixs016輸出和isp的匹配,或者是isx016上電、reset。
3.問題可能出在ti96x與isx016的匹配。

論證:
1.不管
2.問題可能出在ixs016輸出和isp的匹配,或者是isx016上電、reset。
isx016輸出和isp輸出匹配,通過同事得到了:
這裡寫圖片描述
和程式裡邊setting對了一下,完全匹配。ov10635也是這個配置。
對於ixs016的上電reset一直比較困惑,因為我們這邊沒有模組那邊具體的原理圖。最終在網上找了一張圖,僅供參考:
這裡寫圖片描述
camera和ti913是通過對12v進行電壓轉換進行供電的,查了下手冊,isx016三路是可以同時供電的。所以包括供電 reset 懷疑是模組內部,或者ti96x完成的。
所以最終,焦點定格在ti96x的暫存器配置。

3.問題可能出在ti96x與isx016的匹配
ti96x涉及到的暫存器大概有30-40個,在TI網上有完整的手冊和一些關鍵點說明手冊。這裡贊一下TI的document!不管從文件水平和開放程度都很好。
之後比照程式碼,仔細閱讀的文件的相關暫存器說明。發現最終問題是出現在涉及到幀同步的一個暫存器。最終改了一筆,解決問題。
如果公司都以程式碼量來計算KPI的話,驅動絕對是特別吃虧的

Bring up ok了,之後有實現了一下四路視訊流顯示,和讀寫eeprom。這塊兒就是工作量的事兒,就不說了。

另外各位看官可能還會有一下疑問:
Q1.針對具有相同i2c slave id 的camera&serializer,host端是如何實現通訊的?
答案: 通過別名slave id,具體可參考TI_i2c_over_DS90UB913-4_FPD_Link_III_with_bidirectional_ctrl_channel.pdf,TI網站可以下到,說的很詳細。
Q2.four channels camera video 如何傳輸並且合成一路?
這個內容比較多,我現在也就知道個大概,之後有時間仔細研究下,再擼一篇了。

相關推薦

Android車載camera除錯-Bring up(1)

來到新公司,各種不適應。跟老大和hr溝通後,最終決定留下。裡邊各中原因就不說了,留下後就得開始幹活啦:拿到的第一個case是車載環視camera的點亮,算是入門後的第一個小考驗吧: 我們認識實物的一個過程通常是從現象到本質,那第一個問題來了: 什麼是車載環視

camera sensor bring up

camera sensor點亮準備工作: (1)模組原理圖(module spec) (2)sensor datasheet (3)平臺原理圖(camera部分) (4)初始化序列和需要支援的各解析度序列 (5)streamon/off序列 (6)絲印圖(點陣圖) cam

android串列埠除錯open返回-1 提示沒有許可權的問題

最近在做安卓串列埠除錯的過程中,主要出現裝置無法通訊的問題,程式中開啟埠 ,總是返回-1 : 首先,檢視環境是否存在問題 1.   執行-》cmd-》adb shell –》進入linux底層 2.   檢視selinux是否為關閉狀態,檢視命令為:getenforce

Android USB Camera(1) : 除錯記錄

1. 前言 前段時間除錯了一個uvc攝像頭,這裡做下記錄。硬體平臺為mt6735,軟體平臺為android 5.0 2. 底層配置 UVC全稱是usb video class,一種usb視訊規範。所有遵循uvc協議的攝像頭都不需要安裝額外的驅動

Android車載系統 News | Tech 1】News 谷歌開發車載Android系統 2014-12-19

據外國媒體報道,Android和iOS兩大作業系統在壟斷手機和平板之後,開始向智慧家居、智慧汽車、客廳娛樂、物聯網等領域擴張。谷歌和蘋果此 前均推出了連線智慧手機和車載資訊系統的平臺產品。2014年12月18日,谷歌正計劃開發一種汽車資訊系統使用的獨立Android作業系統,

基礎:高通bring up camera

bring UP 需要做的工作 1、kernelspace sensor driver : 驅動和裝置樹 2、userspace camera 對應的chromatix library 和sensor  library 準備工作 1、模組原理圖 2、sensor

ANDROID Porting系列六、Bring Up

    一旦你的程式碼是建立和您確認所有必要的目錄存在,如下所述實現上電測試您的裝置。Bring up tests通常強調你的系統某個方面,讓你來描述裝置的測試行為。 1。確認了一個基本的Linux核心全新安裝, 然後才考慮Android-specific修改Lin

基於qualcomm平臺的Camera Bring up

前言: 趁手頭有塊820板子(MSM8096)和一個攝像頭(信利16021),就自己嘗試bring up一下camera了,之前也沒弄過攝像頭方面的東西額,純粹是操作一步記錄一步的方式額,不喜勿噴,僅

高通camera bring up軟體流程

高通camera bring up分為兩種型別:YUV和bayer bring up yuv sensor1、kernel空間1) vim kernel/driver/media/platform/msm/camera_v2/sensor新增sensor驅動檔案-可參考其

高通Android平臺硬體除錯Camera

Camera工作流程圖Camera的成像原理可以簡單概括如下:景物(SCENE)通過鏡頭(LENS)生成的光學影象投射到影象感測器(Sensor)表面上,然後轉為電訊號,經過A/D(模數轉換)轉換後變為數字影象訊號,再送到數字訊號處理晶片(DSP)中加工處理,再通過IO介面傳輸到CPU中處理,通過DISPLA

Android Studio升級到0.8.1後怎樣設置字體大小?

class 兩個 設置 span 技術 ng- alt -s android 升級到0.8.1後。打開設置字體大小頁面。你會發現無論是Default還是Darcula,都不同意你改變字體的大小。事實上這個是由於這兩個模式是Android Studio自帶模式,所以不同意

Android平臺Camera實時濾鏡實現方法探討(十一)--實時美顏濾鏡

.net 兩個 其它 強人 突出 pad eight 地址 模式 上一章完畢了對圖片的磨皮處理。經過簡單算法流程優化,能夠達到非常快的速度。可是不能用於實時美顏。經實驗,若採用僅僅處理Y信號的方案。半徑極限大約是5-10,超過10則明顯感受到卡頓。但對於1920X1

Android平臺Camera實時濾鏡實現方法探討(十)--代碼地址以及簡單介紹(20160118更新)

div iss 將在 spa 方法 target 用途 net dsm 簡單做了個相機和圖片編輯模塊,時間原因非常多功能還沒有做。尚有BUG,見諒,將在以後抽時間改動 代碼地址 PS:請點個Star^-^ -----------------------

三種方法解決 Failed to start LSB: Bring up/down networking 問題

ble microsoft valid spa details 右上角 red cti margin 感謝朋友支持本博客。歡迎共同探討交流。因為能力和時間有限,錯誤之處在所難免。歡迎指正! 假設轉載。請保留作者信息。 博客地址:http://blog.csd

Android 設備兼容性(1)

spa 配置 pix 用戶 for store onf ide 丟失 引用: Android官網 > 開發 > API 指南 > Introduction > Device Compatibility 1. 基本概念 Andro

(轉)啟動網卡報錯(Failed to start LSB: Bring up/down networking )解決辦法總結

deb contain ade nag disabled dev nta container save 啟動網卡報錯(Failed to start LSB: Bring up/down networking )解決辦法總結 原文:http://blog.51cto.com

Centos7 網絡出錯(failed to start LSB: Bring up/down networking )

top n ger 連接 class 無法連接 無法 分享圖片 lsb 內存 這是我更換了VM虛擬機內存,重啟後無法連接網絡。 然後這是因為NetworkManager.service這個程序造成 解決方法: systemctl disable NetworkManag

Failed to start LSB: Bring up/down networking.

emctl and ips AI active sin psi with nag 由於我的虛擬機是從別的機器拷貝過來的,導入新機器後,沒有問題,第二天就網絡連接不上了,就出現下面的錯誤 [root@centos ~]# /etc/init.d/network rest

CentOS 7.2重啟網絡報錯 Failed to start LSB: Bring up/down

script 3.5 dhcp ifcfg ron centos str sys 日誌 CentOS 7.2重啟網絡報錯 Failed to start LSB: Bring up/down 我的虛擬機原本有兩塊網卡,一塊叫eno16777736,另一塊叫eno5033

Could not find com.android.tools.lint:lint-gradle:26.1.2.

tdi spa google andro jce -s repo jcenter android allprojects { repositories { flatDir { dirs ‘libs‘ }