1. 程式人生 > >第十四章:sensor驅動原始碼解析與實戰

第十四章:sensor驅動原始碼解析與實戰

       海思的sensor驅動大部分工作在應用層,即應用層驅動(非ko形式存在),這樣一來在對sensor改動時,就不需要重新編譯核心了。

       缺點是,不穩定,效率會比較低。純應用層驅動是沒辦法操作硬體的,所以需要呼叫底層i2c驅動。

1、驅動原始碼路徑

       Hi3518E_SDK_V1.0.3.0\package\mpp\mpp\component\isp\sensor目錄下。

2、sensor驅動呼叫

       sensor驅動編譯完之後會生成xxx.a和xxx.so兩個庫,一個是靜態連結用的,一個是動態連結用的。

       這兩個檔案會被放到Hi3518E_SDK_V1.0.3.0\package\mpp\mpp\lib目錄下。

3、sensor驅動檔案命名規則

       xxxx_cmos.c中定義回撥和上層函式。

       xxxx_sensor_ctl.c中定義底層硬體相關的暫存器值配置函式。

4、sensor驅動在哪被呼叫

       從之前的sample_venc開始看,在第三部分step 3: start vi dev & chn to capture

       SAMPLE_COMM_VI_StartVi()

           SAMPLE_COMM_VI_StartIspAndVi()

                   SAMPLE_COMM_ISP_Init()

                           sensor_register_callback()

       sensor_register_callback這個函式就在sensor驅動裡面,這裡會呼叫到kernel內的i2c驅動對sensor進行硬體操作。


5、sensor_register_callback

       這個函式就是對整個sensor初始化,內部封裝了操作sensor所需要的函式,(ISP、AE(自動曝光)、AWB(白平衡))

       其中的cmos_init_sensor_exp_function函式將sensor操作時所需要的函式一一掛接起來,例如初始化呼叫的sensor_init。

6、sensor_init

       初始化sensor,初始化的方式就是呼叫i2c函式介面來實現操作sensor內部暫存器。
                    

7、黑電平

       黑電平(Black Level Correction)也就是黑色的最低點,以8bit資料來說,指在經過一定校準的顯示裝置上,沒有一行光亮輸出的視訊訊號電平。定義影象資料為0時對應的訊號電平。

       sensor中的黑電平是可以調節的,就相當於標準值,就像零攝氏度這種概念。

8、sensor驅動編譯實戰

       (1)修改驅動原始碼

       以AR0130為例,修改mpp\component\isp\sensor\ar0130目錄下的應用驅動原始碼。

       如果是調整黑電平,就修改ar0130目錄下的ar0130_coms.c檔案裡面的cmos_get_isp_black_level函式中的au16BlackLevel陣列。                

       (2)清除,並重新編譯

       首次編譯需要在mpp\component\isp目錄下將整個isp進行編譯。

       執行make clean指令。

       再執行make

       (3)確認mpp中lib目錄下的libsnsxxx.a/so已經被更新。

       (4)重新編譯sample並執行檢視效果。

9、AR0130sensor暫存器

       參考AR0130_RR_C.pdf文件的Register Behavior暫存器章節,瞭解各暫存器用途。 

相關推薦

sensor驅動原始碼解析實戰

       海思的sensor驅動大部分工作在應用層,即應用層驅動(非ko形式存在),這樣一來在對sensor改動時,就不需要重新編譯核心了。       缺點是,不穩定,效率會比較低。純應用層驅動是沒辦法操作硬體的,所以需要呼叫底層i2c驅動。1、驅動原始碼路徑     

“全棧2019”Java二進位制、八進位制、六進位制

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第十四章:二進位制、八進位制、十六進位制 下一章 “全棧2019”Java第十五章:Unic

Java程式設計思想 型別資訊

執行時型別資訊使得你可以在程式執行時發現和使用型別資訊 Java是如何讓我們在執行時識別物件和類的資訊的。主要有兩種方式: 一種使用傳統的“RTTI”,它假定我們在編譯時就已經知道了所有的型別資訊。另 一種是“反射”機制,它允許我們在執行時發現和使用型別資訊。

演算法導論 區間樹

區間樹是一種對動態集合進行維護的紅黑樹,具體設計如下: step1:基礎資料結構    我們選擇的基礎資料結構式紅黑樹,其中每個節點x包含一個區間域x.int,x的關鍵字為區間的低端點 x.int.low. step2:附加資訊     每個節點x除了區間資訊外,還包含一個

從零開始Desire HD刷機指南——利用第三方recovery備份還原系統

原文地址:http://blog.sina.com.cn/s/blog_722b43a60100q5jf.html 本教程由symen 原創,轉載請註明出處。 上一章我們介紹瞭如何把第三方recovery 刷進手機,本章來介紹如何利用它來備份與還原系統。 先來看一下

Python編程從入門到實踐——【作業】——(記分)

wid ont elif pac rom ext splay 添加 能夠 第十四章 14-1 按P開始新遊戲 : 鑒於遊戲《外星人入侵》 使用鍵盤來控制飛船, 最好讓玩家也能夠通過按鍵來開始遊戲。 請添加讓玩家在按P時開始遊戲的代碼。 也許這樣做會有所幫助: 將check_

Filter過濾器

作者:java_wxid Filter,什麼是過濾器? 1.Filter過濾器是javaWeb的三大元件之一, 2.三大元件分別是:Servlet程式,Filter過濾器,Listener監聽器。 3.Filter是介面。 4.Filter的作用是:攔截請求,過濾響應。 Filter

“全棧2019”Java可變引數列表

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第三十四章:可變引數列表 下一章 “全棧2

“全棧2019”Java繼承

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第四十四章:繼承 下一章 “全棧2019”

“全棧2019”Java多型詳解

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十四章:多型詳解 下一章 “全棧2019”Java第五十五章:方法的靜態繫結與動態繫結

“全棧2019”Java接口靜態方法詳解

分享圖片 java 回復 開發語言 java學習 dea 接口 了解 學習計劃 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Java第六十四章:

SpringBoot | CXF構建WebService服務

前言 上一章節,講解了如何使用Spring-WS構建WebService服務。其實,建立WebService的方式有很多的,今天來看看如何使用apache cxf來構建及呼叫WebService服務。 一點知識 何為Apache-CXF Apache C

Dubbo分散式服務框架

Dubbo官網 什麼是Dubbo? 它有什麼特點?它的優點是什麼? 為什麼要使用它?有什麼功能?Dubbo能做什麼?   什麼是Dubbo? 1.Dubbo是一個分散式服務框架。 說明:如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有dubbo這

單一(偽分散式)架構SSM整合02

單一(偽分散式)架構之使用Maven建立各個工程之間的依賴、繼承、聚合關係 SSM jar包依賴統一管理 工程:parent pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w

“全棧2019”Java介面中巢狀介面詳解

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第八十四章:介面中巢狀介面詳解 下一章 “

“全棧2019”Java內部類靜態內部類相互巢狀

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第七十四章:內部類與靜態內部類相互巢狀 下一章

STA模式USB WIFI驅動移植

1、下載原始碼 首先將原始碼複製到ubuntu中實驗目錄,並解壓開,這裡我們用到的是sta模式,所以解壓MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2這個檔案。 我們這裡解壓之後放在了以下目錄中.             2、修改

“全棧2019”Java區域性內部類詳解

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第九十四章:區域性內部類詳解 下一章 “全棧2019”Java第九十五章:方法中可以定義靜態

【無私分享ASP.NET CORE 專案實戰)】圖形驗證碼的實現

1 public class VierificationCodeServices 2 { 3 /// <summary> 4 /// 該方法用於生成指定位數的隨機數 5 /// </summary> 6

JAVA程式設計思想學習總結型別資訊

import java.util.*; interface Factory<T>{T create();} class Part{ public String toString(){ return getClass().getSimpleName(); } static List<