1. 外設适配-TI954 記錄
1.1 問題描述
項目需要支援[email protected]攝像頭輸入,針對于這種分辨率的攝像頭一般都采用FPD link方式傳輸,這裡采用TI 953、954作為攝像頭輸入的媒介,整體path如下:
Camera(IMX290) -> ISP(5700) -> TI953 -> TI954 -> SOC
項目回報的狀态是:可以在TI954測量到标準mipi波形輸出,但是SOC無圖像顯示;
1.2 檢查思路
基本參照上圖逐漸check,這個過程中還是遇到了一些非預期的問題,導緻排查過程不是那麼的順利

1.3 實驗分析
1.3.1 SOC内部狀态确認
- 檢查log
[ 29.624154]<0>I[videoin][drv_if] [info]data_path_start(line:545)device_type(14)) is started successfully.
[ 29.624158]<0>I[videoin][drv_if] [info]mipi_kthread(line:876)enter
[ 29.624164]<0>I[videoin][drv_if] [info]mipi_kthread(line:880)mipi_kthread before wait
[ 29.627268]<0>I[videoin][v4l2_if] [info]videoin_start_streaming(line:668)leave, device_type(14), buffer num(1) state(3)
[ 29.629010]<0>I[videoin][v4l2_if] [info]videoin_set_fd_buffer_ext(line:1221)buf_fd is 67, buf_idx is 0, stream_id is 0
[ 29.630513]<2>I[zh_ti954_mipi1_yuv] [info]zh_ti954_mipi1_vendor_ch_signal_plug_detect(line:663)value=0xdf,signal_status = 1 0x6d:0x7f
[ 29.631434]<2>I[videoin][v4l2_if] [info]videoin_set_fd_buffer_ext(line:1240)device_type(14), out_width(1280), out_height(720), data_fmt(3), plane(3), y(0xfe800000), cb(0xfeb84000), cr(0xfec65000)
[ 29.631440]<2>Ivss_vis [info]vis_buffer_queue(line:1967)dp(1) ch_id(4) queue count(0)!
- 檢視中斷狀态 則說明确實是mipi控制器沒有給出來資料,則進一步确認mipi控制器中具體是沒有接收到資料還是接收到資料後解析異常
外設适配-TI954 記錄1. 外設适配-TI954 記錄 - dump寄存器 這裡dump出來為控制寄存器,與demo平台完全一緻,是以這裡其實沒有看出什麼内容,但是這裡也沒有進一步确認的方法;
外設适配-TI954 記錄1. 外設适配-TI954 記錄
則這裡其實留下了一個坑:
- 無法确認目前SOC内部是否有接收到資料還是資料解析錯誤;
- 後續check其他部分時,如果實驗有遺漏或者異常,結合此部分則會得出錯誤的結論;
1.3.2 檢查硬體
- 檢查原理圖 這裡主要檢查data、clk、電源是否與參考設計保持一緻,确認無異常;
外設适配-TI954 記錄1. 外設适配-TI954 記錄 這裡對比所有pin基本正常連接配接到954,隻是存在一組電感,這個專門跟HW确認差分信号是可以添加共模電感的;外設适配-TI954 記錄1. 外設适配-TI954 記錄 - 檢查PCB走線
擔心是否存在layout時走線與原理圖不一緻,特别找到此闆子的PCB,檢查一遍走線,确認順序以及對應mipi子產品無異常
至此,HW第一輪檢查完成,由于檢查原理圖和PCB均無異常,則初步認為該闆子硬體設計沒有問題:
- 接下來測量mipi波形确認是否符合标準;
- 由于這裡沒有實際測量闆子的電壓值是否與設計一緻,導緻後續思考方向完全偏離;
1.3.3 波形确認
上述實驗做完後,得到的結論是:
- 硬體基本無問題;
- SOC内部信号沒有解析出來;
是以接下來主要懷疑SOC與TI954之間mipi信号時序不比對問題,這裡由于前邊埋下的雷,以及一些其他的環境問題導緻這裡block了3天;
1.3.3.1 mipi标準
這裡需要滿足的條件是:
- data波形符合上述形狀;
- 時序滿足:TX-LP00 < RX-HS-SETTLE < TX-LP00 + TX-HS-ZERO
1.3.3.2 實際測量
1.3.3.2.1 第一輪測試,波形不符合上述标準
整體看下來是多幀資料,需放大來看:
再放大:
與上述标準的波形相差比較多,則這裡測量形狀一直不對,此部分由于影響因子比較多,是以逐漸做了如下排查:
- 預設設定為TI954出pattern測試,懷疑這裡是否為此部配置設定置出現異常,配置為攝像頭輸入測試;
- Linux系統目前版本僅支援AVM功能測試,懷疑這裡是否有其他幹擾項,打通RVC功能測試;
- 由于Linux系統仍在開發階段,避免軟體配置異常,基于Android版本移植954測試;
- 可能為HW幹擾,重新焊接測量點确認;
上述幾個實驗耗費了3天時間,主要是移植以及打通path過程耗費時間較多,最終請客戶多帶了兩塊闆子測試确認為HW問題;
這裡的經驗教訓:
- 調試外設需要至少提供2塊到3塊平台調試,避免可能存在的闆子不一緻性異常;
- 軟體基于穩定版本測試,從初期排除其他幹擾項,避免中間頻繁切換版本耗時;
1.3.3.2.2 第二輪測試,時序不滿足上述标準
data:
LP00為143ns,HS00為322ns,而SOC端的HS-SETTLE配置為110ns+8ul=150ns,基本處于臨界值了,而TI datasheet中定義:
則這裡沒有符合datasheet标準:
- 調整SOC RX-HS-SETTLE端滿足其時序要求,仍無資料輸出;
- 尋找TI FAE支援,回複為配置400M clk時,需要配置page0,0x40~0x48寄存器調整時序,調整後波形無變化;
- 懷疑共模電感問題,去除共模電感測量,時序有很大改善,SOC仍無資料解析出來;
回過頭來看,這裡遇到的坑蠻多:
- 手頭的闆子測量存在異常,波形形狀一直不對
- 測量到時序與TI标準存在差異,且根據上述時序調整了RX端的時序,仍無法接收到資料,此時應該開始懷疑其他部分了;
至此理論上我這邊所有檢查都無異常,則說明:
- 上述檢查過程有遺漏,導緻問題沒有被發現;
- 存在上述知識領域之外的内容,即資料進來SOC後存在其他異常,導緻無法解析出來;
則需要進一步證明;
1.3.4 飛線交叉測試确認
1.3.4.1 項目平台mipi信号輸出到其他平台測試
完全相同的配置,讓954輸出mipi信号,輸入到此前其他項目的SOC中解析,可以正常出圖;
說明954配置無異常:
- 954輸出波形無問題;
- 可能存在硬體問題資料沒有進SOC問題;
- 可能存在時序不比對問題;
- 可能存在SOC内部解析異常問題;
1.3.4.2 項目平台mipi信号輸出到demo平台測試
完全相同配置,讓954輸出mipi信号,輸入到demo平台測試:
- CMS 系統上954 power_off return掉,則輸出不關閉;
- 對應demo平台setup軟體,直接使用裸機程式測試;
測試有信号輸入到demo平台,但是無法解析出來;
基于上述兩個實驗,說明:
- 954配置無異常;
- SOC内部對信号解析存在問題(主要還是懷疑時序不比對)
- 項目平台硬體問題
1.3.4.3 項目平台作為954子闆,其他均使用EVB闆來操作
為排除兩種因素:
- I2C控制954與mipi IP enable部分時序;
- 飛線後闆子移動導緻資料受到影響;
請客戶HW将CMS底闆飛線到EVB闆測試,好處在于EVB闆支援各種排插(各組I2C連接配接/以及DS-5)
依次處理如下:
- 量取mipi波形,确認符合标準(開始飛線有問題,反複處理了幾次)
- 根據mipi波形調整時序,并且将所有err bypass功能都打開,即所有資料直接往後端送;
經過調整時序以及err bypass功能後,[email protected]可以出圖,存在噪點、偏色問題;
1.3.5 [email protected]出圖
基于上述飛線平台 + 裸機系統,720P @ 30fps可以出圖;
AVM盒子 -> 954 -> SOC -> panel
由于AVM盒子 -> 954飛線到其他SOC無問題,則主要懷疑是飛線、SOC配置、上屏等幾個環節的問題
- 使用DS-5 dump記憶體檢視
- 顯示OK,則說明為上屏問題;
- 首先排查硬體,替換另外的輸出口測試,可以正常顯示,說明該LVDS0存在異常;
- 裸機程式不存在其他軟體問題;
1.3.6 項目平台[email protected]出圖
上述排查完成後,軟體配置基本無問題,則繼續調試本項目平台
- 移植到Android os中,仍無資料顯示;
- 使用裸機系統在該平台上運作,仍無資料輸入;
基于此,基本确認為硬體問題,回頭來看之前的硬體排查過程,clk&data波形均無問題,則确認電壓:
- 1.8V電壓正常;
- 0.9V core電壓沒有!!!
檢查核心闆器件:
R334這裡沒接,添加後運作Android軟體可以正常出圖,至此此問題第一步解決完成;
1.3.7 項目平台[email protected]
由于此項目使用為[email protected]幀的攝像頭,采用雙絞線輸入,是以這裡替換為項目需求HW繼續調試:
- 由于720P已經pass,說明HW部分已經調通;
- 後續需要調整:
- 954配置;
- 前端配置;
1.3.7.1 pattern輸出
将954配置為雙絞線輸入,無圖像出現,為排除前端影響,設定為pattern輸出:
pattern同樣無資料輸出,954配置需要調整,檢查setting檢視,clk值得懷疑,将其設定為800M測試,可以正常顯示;
至此,後端配置已經pass;
1.3.7.2 攝像頭輸出不完整圖像
替換為攝像頭,可以看到有資料進來(有光暗變化),但是顯示看起來像是放大了幾百倍的樣子,請camera廠商調試焦距,可以輸出:
左側100個像素點左右可以正常看到資料,還是蠻清晰的,每一行的後續1800個左右像素點都是維持錯誤的狀态,同時檢視SOC端log提示,data crc校驗錯誤,則與上述現象一緻,資料包中存在資料異常;
懷疑點如下:
- sensor與TI953之前配置需要調整;
- TI953與TI954之間配置需要調整;
基于此做如下實驗:
- 953出pattern在後端顯示:
- 配置方式與954相同;
- 可以正常顯示[email protected] ,但是從log看,幀率約30的樣子;
- 可以說明953端的分辨率、格式等配置正确;
- sensor飛線出來到SOC确認:
- 飛線時将攝像頭拆開導緻鏡頭無法安裝;
- 效果來看可以顯示出輪廓;
- 結合上述1、2可以說明sensor端分辨率格式配置無問題;
則經過上述實驗,說明sensor、953、954部配置設定置不比對,由于sensor部分隻需要配置格式輸出即可,主要懷疑953與954之間比對問題
1.7.3.3 TI953-TI954比對調試
- 檢查硬體配置是否一緻:
這個是TI953的mode select寄存器,目前被配置為CSI-2 Synchronous mode,而對應TI954被配置為Non sync mode:
首先将其配置為相同的mode,同樣是硬體設定:
這裡設定完成後,現象仍是一樣,而理論分析該現象比較像是資料傳輸過程中,隻有一部分資料傳輸完成,即開始下一次傳輸的樣子,而對端由于資料接收未完成,則自動補足最後一個像素點,基于此咨詢過往有此經驗的同學,可以調試line rate嘗試:
此部配置設定置為50M也就是4Gbps測試,可以正常顯示:
也就是說明目前的line rate可以滿足720P的傳輸要求,而無法滿足1080P的傳輸要求;
1.4 問題處理
- mipi core 電壓,硬體貼上電阻;
- TI953 小闆上mode sel配置為non sync mode(硬體配置);
- TI953 軟體配置,設定clk rate;
1.5 總結
1.5.1 彎路總結
- SOC需要提供關鍵狀态寄存器的dump功能,避免有遺漏項模糊不清;
- 硬體檢查時,需要檢查原理圖、PCB、硬體闆子,對于可以測量的信号、電壓一定要確定與設計一緻;【大坑】
- 調試外設需要至少提供2塊到3塊平台調試,避免可能存在的闆子不一緻性異常;
- 軟體基于穩定版本測試,從初期排除其他幹擾項,避免中間頻繁切換版本耗時,最好是提供外設2~3套小闆,基于demo的條件調通;
- 調試過程中遇到問題,需要協調camera、sensor FAE支援;
- 飛線需要反複檢查,確定無誤;
1.5.2 知識點總結
- mipi時序要求:
-
連續clk與非連續clk的差別:
連續clk需要要求工作時序,即RX端需要先enable,然後TX端再觸發clk送資料出來,保證觸發到RX端;
非連續clk由于每一幀都有clk觸發動作,所有不需要先後時序要求
-
Virtual Channel的概念了解:
mipi協定,用于打包和恢複的作用,即可以輸入多路資料在RX端解析:
- TI IC 透傳是如何操作的:
這次調試,基本上能走的彎路都走了一遍,以後當吸取教訓