mtk平台在開機的時候你會發現camera上下電達6次之多,main和sub camera分別上下電了3次(以下簡稱main或sub來表示後攝或前攝),這麼多上下電過程都是用來做什麼的呢,今天我詳細研究了一下,大致總結如下:
mtk的camera驅動會先註冊兩個camera通道,即main和sub。通道包括mipi匯流排、i2c匯流排、rst、pwdn,這些註冊過程和camera模組的具體型號完全沒有關係。只有在開機時才會對映到具體的camera模組驅動上。這一步的相關**請參考
kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.c(main和sub的註冊)
kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_hw/kd_camera_hw.c(camera的電源控制)
開機時,系統會根據mk檔案中配置的main和sub去執行,首先系統需要驗證該main和sub是否存在,如何驗證的呢?
因為mtk註冊了2個camera通道,所以系統先讓idx=0,分別對配置的main和sub進行上電,然後讀其sensor id,這個過程中如果讀到的sensor id和系統中配置的id匹配上了,則idx0通道對映到該camera上,這個過程main和sub分別發生一次上下電;然後系統讓idx=1,再分別對配置的main和sub進行上電,然後讀其sensor id,這個過程中如果讀到的sensor id和系統中配置的id匹配上了,則idx1通道對映到該camera上,這個過程main和sub也會分別發生一次上下電。
上面的過程共發生了4次上下電,如果不出問題的話,則會配對完成;最後,系統會分別對main和sub進行一次初始化配置,這樣就再發生2次上下電。
另外,mtk系統是以idx0作為後攝的,idx1作為前攝,和mk檔案中配置的前後攝關係不大。而idx0和idx1在電路上最大的區別就是rst和pwdn,詳情請檢視dts中camera rst/pdn pin腳的定義。
驅動程式開機自動載入
將驅動程式編譯進核心的方法比較多,既可以進行靜態編譯,也可以動態載入。所以的靜態編譯,也就是在直接將驅動程式原始碼放入核心原始碼,在編譯核心原始碼時,就已經將驅動程式編譯進了核心。但是,我們也經常會遇到需要動態載入核心驅動。在編譯生成了驅動程式後,使用insmod命令載入即可,例如 insmod k...
linux 下開機自動載入驅動模組
呼呼,好久不見 前一段時間開發了乙個linux下的pci資料採集板卡的驅動,在驅動除錯時,一直使用insmod 動態的載入驅動模組 ko檔案 現在驅動基本開發結束,要提交給客戶,使用insmod載入時,對客戶來說不太好,比較麻煩,所以不能採用這種方法。由於 剛開始做驅動,還不知道如何在linux啟動...
linux開機時驅動的載入流程
linux開機載入驅動時,涉及到了initramfs檔案中包含的驅動以及硬碟中包含的驅動兩個部分 而系統啟動後手動載入驅動時只會用到硬碟中的驅動庫,與initramfs無關。首先介紹下initramfs檔案生成的原理及流程,然後在介紹下開機載入的流程及本地驗證步驟。一 initramfs檔案生成原理...