天天看點

外設适配-TI954 記錄1. 外設适配-TI954 記錄

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,這個過程中還是遇到了一些非預期的問題,導緻排查過程不是那麼的順利

外設适配-TI954 記錄1. 外設适配-TI954 記錄

1.3 實驗分析

1.3.1 SOC内部狀态确認

  1. 檢查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)!

    這裡vss控制器一直沒有取到buffer資料,需要确認mipi是否有拿到資料抑或是解析異常
  2. 檢視中斷狀态
    外設适配-TI954 記錄1. 外設适配-TI954 記錄
    則說明确實是mipi控制器沒有給出來資料,則進一步确認mipi控制器中具體是沒有接收到資料還是接收到資料後解析異常
  3. dump寄存器
    外設适配-TI954 記錄1. 外設适配-TI954 記錄
    這裡dump出來為控制寄存器,與demo平台完全一緻,是以這裡其實沒有看出什麼内容,但是這裡也沒有進一步确認的方法;

則這裡其實留下了一個坑:

  1. 無法确認目前SOC内部是否有接收到資料還是資料解析錯誤;
  2. 後續check其他部分時,如果實驗有遺漏或者異常,結合此部分則會得出錯誤的結論;

1.3.2 檢查硬體

  1. 檢查原理圖
    外設适配-TI954 記錄1. 外設适配-TI954 記錄
    這裡主要檢查data、clk、電源是否與參考設計保持一緻,确認無異常;
    外設适配-TI954 記錄1. 外設适配-TI954 記錄
    這裡對比所有pin基本正常連接配接到954,隻是存在一組電感,這個專門跟HW确認差分信号是可以添加共模電感的;
  2. 檢查PCB走線

擔心是否存在layout時走線與原理圖不一緻,特别找到此闆子的PCB,檢查一遍走線,确認順序以及對應mipi子產品無異常

至此,HW第一輪檢查完成,由于檢查原理圖和PCB均無異常,則初步認為該闆子硬體設計沒有問題:

  1. 接下來測量mipi波形确認是否符合标準;
  2. 由于這裡沒有實際測量闆子的電壓值是否與設計一緻,導緻後續思考方向完全偏離;

1.3.3 波形确認

上述實驗做完後,得到的結論是:

  1. 硬體基本無問題;
  2. SOC内部信号沒有解析出來;

是以接下來主要懷疑SOC與TI954之間mipi信号時序不比對問題,這裡由于前邊埋下的雷,以及一些其他的環境問題導緻這裡block了3天;

1.3.3.1 mipi标準

外設适配-TI954 記錄1. 外設适配-TI954 記錄

這裡需要滿足的條件是:

  1. data波形符合上述形狀;
  2. 時序滿足:TX-LP00 < RX-HS-SETTLE < TX-LP00 + TX-HS-ZERO

1.3.3.2 實際測量

1.3.3.2.1 第一輪測試,波形不符合上述标準
外設适配-TI954 記錄1. 外設适配-TI954 記錄

整體看下來是多幀資料,需放大來看:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

再放大:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

與上述标準的波形相差比較多,則這裡測量形狀一直不對,此部分由于影響因子比較多,是以逐漸做了如下排查:

  1. 預設設定為TI954出pattern測試,懷疑這裡是否為此部配置設定置出現異常,配置為攝像頭輸入測試;
  2. Linux系統目前版本僅支援AVM功能測試,懷疑這裡是否有其他幹擾項,打通RVC功能測試;
  3. 由于Linux系統仍在開發階段,避免軟體配置異常,基于Android版本移植954測試;
  4. 可能為HW幹擾,重新焊接測量點确認;

上述幾個實驗耗費了3天時間,主要是移植以及打通path過程耗費時間較多,最終請客戶多帶了兩塊闆子測試确認為HW問題;

這裡的經驗教訓:

  1. 調試外設需要至少提供2塊到3塊平台調試,避免可能存在的闆子不一緻性異常;
  2. 軟體基于穩定版本測試,從初期排除其他幹擾項,避免中間頻繁切換版本耗時;
1.3.3.2.2 第二輪測試,時序不滿足上述标準
外設适配-TI954 記錄1. 外設适配-TI954 記錄

data:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

LP00為143ns,HS00為322ns,而SOC端的HS-SETTLE配置為110ns+8ul=150ns,基本處于臨界值了,而TI datasheet中定義:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

則這裡沒有符合datasheet标準:

  1. 調整SOC RX-HS-SETTLE端滿足其時序要求,仍無資料輸出;
  2. 尋找TI FAE支援,回複為配置400M clk時,需要配置page0,0x40~0x48寄存器調整時序,調整後波形無變化;
  3. 懷疑共模電感問題,去除共模電感測量,時序有很大改善,SOC仍無資料解析出來;

回過頭來看,這裡遇到的坑蠻多:

  1. 手頭的闆子測量存在異常,波形形狀一直不對
  2. 測量到時序與TI标準存在差異,且根據上述時序調整了RX端的時序,仍無法接收到資料,此時應該開始懷疑其他部分了;

至此理論上我這邊所有檢查都無異常,則說明:

  1. 上述檢查過程有遺漏,導緻問題沒有被發現;
  2. 存在上述知識領域之外的内容,即資料進來SOC後存在其他異常,導緻無法解析出來;

則需要進一步證明;

1.3.4 飛線交叉測試确認

1.3.4.1 項目平台mipi信号輸出到其他平台測試

完全相同的配置,讓954輸出mipi信号,輸入到此前其他項目的SOC中解析,可以正常出圖;

說明954配置無異常:

  1. 954輸出波形無問題;
  2. 可能存在硬體問題資料沒有進SOC問題;
  3. 可能存在時序不比對問題;
  4. 可能存在SOC内部解析異常問題;

1.3.4.2 項目平台mipi信号輸出到demo平台測試

完全相同配置,讓954輸出mipi信号,輸入到demo平台測試:

  1. CMS 系統上954 power_off return掉,則輸出不關閉;
  2. 對應demo平台setup軟體,直接使用裸機程式測試;

測試有信号輸入到demo平台,但是無法解析出來;

基于上述兩個實驗,說明:

  1. 954配置無異常;
  2. SOC内部對信号解析存在問題(主要還是懷疑時序不比對)
  3. 項目平台硬體問題

1.3.4.3 項目平台作為954子闆,其他均使用EVB闆來操作

為排除兩種因素:

  1. I2C控制954與mipi IP enable部分時序;
  2. 飛線後闆子移動導緻資料受到影響;

請客戶HW将CMS底闆飛線到EVB闆測試,好處在于EVB闆支援各種排插(各組I2C連接配接/以及DS-5)

依次處理如下:

  1. 量取mipi波形,确認符合标準(開始飛線有問題,反複處理了幾次)
  2. 根據mipi波形調整時序,并且将所有err bypass功能都打開,即所有資料直接往後端送;

經過調整時序以及err bypass功能後,[email protected]可以出圖,存在噪點、偏色問題;

1.3.5 [email protected]出圖

基于上述飛線平台 + 裸機系統,720P @ 30fps可以出圖;

AVM盒子 -> 954 -> SOC -> panel

由于AVM盒子 -> 954飛線到其他SOC無問題,則主要懷疑是飛線、SOC配置、上屏等幾個環節的問題

  1. 使用DS-5 dump記憶體檢視
    1. 顯示OK,則說明為上屏問題;
    2. 首先排查硬體,替換另外的輸出口測試,可以正常顯示,說明該LVDS0存在異常;
    3. 裸機程式不存在其他軟體問題;

1.3.6 項目平台[email protected]出圖

上述排查完成後,軟體配置基本無問題,則繼續調試本項目平台

  1. 移植到Android os中,仍無資料顯示;
  2. 使用裸機系統在該平台上運作,仍無資料輸入;

基于此,基本确認為硬體問題,回頭來看之前的硬體排查過程,clk&data波形均無問題,則确認電壓:

  1. 1.8V電壓正常;
  2. 0.9V core電壓沒有!!!

檢查核心闆器件:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

R334這裡沒接,添加後運作Android軟體可以正常出圖,至此此問題第一步解決完成;

1.3.7 項目平台[email protected]

由于此項目使用為[email protected]幀的攝像頭,采用雙絞線輸入,是以這裡替換為項目需求HW繼續調試:

  1. 由于720P已經pass,說明HW部分已經調通;
  2. 後續需要調整:
    1. 954配置;
    2. 前端配置;

1.3.7.1 pattern輸出

将954配置為雙絞線輸入,無圖像出現,為排除前端影響,設定為pattern輸出:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

pattern同樣無資料輸出,954配置需要調整,檢查setting檢視,clk值得懷疑,将其設定為800M測試,可以正常顯示;

至此,後端配置已經pass;

1.3.7.2 攝像頭輸出不完整圖像

替換為攝像頭,可以看到有資料進來(有光暗變化),但是顯示看起來像是放大了幾百倍的樣子,請camera廠商調試焦距,可以輸出:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

左側100個像素點左右可以正常看到資料,還是蠻清晰的,每一行的後續1800個左右像素點都是維持錯誤的狀态,同時檢視SOC端log提示,data crc校驗錯誤,則與上述現象一緻,資料包中存在資料異常;

懷疑點如下:

  1. sensor與TI953之前配置需要調整;
  2. TI953與TI954之間配置需要調整;

基于此做如下實驗:

  1. 953出pattern在後端顯示:
    1. 配置方式與954相同;
    2. 可以正常顯示[email protected] ,但是從log看,幀率約30的樣子;
    3. 可以說明953端的分辨率、格式等配置正确;
  2. sensor飛線出來到SOC确認:
    1. 飛線時将攝像頭拆開導緻鏡頭無法安裝;
    2. 效果來看可以顯示出輪廓;
    3. 結合上述1、2可以說明sensor端分辨率格式配置無問題;

則經過上述實驗,說明sensor、953、954部配置設定置不比對,由于sensor部分隻需要配置格式輸出即可,主要懷疑953與954之間比對問題

1.7.3.3 TI953-TI954比對調試

  1. 檢查硬體配置是否一緻:
外設适配-TI954 記錄1. 外設适配-TI954 記錄

這個是TI953的mode select寄存器,目前被配置為CSI-2 Synchronous mode,而對應TI954被配置為Non sync mode:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

首先将其配置為相同的mode,同樣是硬體設定:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

這裡設定完成後,現象仍是一樣,而理論分析該現象比較像是資料傳輸過程中,隻有一部分資料傳輸完成,即開始下一次傳輸的樣子,而對端由于資料接收未完成,則自動補足最後一個像素點,基于此咨詢過往有此經驗的同學,可以調試line rate嘗試:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

此部配置設定置為50M也就是4Gbps測試,可以正常顯示:

外設适配-TI954 記錄1. 外設适配-TI954 記錄

也就是說明目前的line rate可以滿足720P的傳輸要求,而無法滿足1080P的傳輸要求;

外設适配-TI954 記錄1. 外設适配-TI954 記錄

1.4 問題處理

  1. mipi core 電壓,硬體貼上電阻;
  2. TI953 小闆上mode sel配置為non sync mode(硬體配置);
  3. TI953 軟體配置,設定clk rate;

1.5 總結

1.5.1 彎路總結

  1. SOC需要提供關鍵狀态寄存器的dump功能,避免有遺漏項模糊不清;
  2. 硬體檢查時,需要檢查原理圖、PCB、硬體闆子,對于可以測量的信号、電壓一定要確定與設計一緻;【大坑】
  3. 調試外設需要至少提供2塊到3塊平台調試,避免可能存在的闆子不一緻性異常;
  4. 軟體基于穩定版本測試,從初期排除其他幹擾項,避免中間頻繁切換版本耗時,最好是提供外設2~3套小闆,基于demo的條件調通;
  5. 調試過程中遇到問題,需要協調camera、sensor FAE支援;
  6. 飛線需要反複檢查,確定無誤;

1.5.2 知識點總結

  1. mipi時序要求:
外設适配-TI954 記錄1. 外設适配-TI954 記錄
  1. 連續clk與非連續clk的差別:

    連續clk需要要求工作時序,即RX端需要先enable,然後TX端再觸發clk送資料出來,保證觸發到RX端;

    非連續clk由于每一幀都有clk觸發動作,所有不需要先後時序要求

  2. Virtual Channel的概念了解:

    mipi協定,用于打包和恢複的作用,即可以輸入多路資料在RX端解析:

外設适配-TI954 記錄1. 外設适配-TI954 記錄
  1. TI IC 透傳是如何操作的:
外設适配-TI954 記錄1. 外設适配-TI954 記錄

這次調試,基本上能走的彎路都走了一遍,以後當吸取教訓