• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            任我行

            一天一個腳印......
            每日一句:
            posts - 54, comments - 218, trackbacks - 1, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            調試5.0M sensor模組的筆記(轉載)

            Posted on 2010-09-15 16:58 任我行 閱讀(1497) 評論(0)  編輯 收藏 引用 所屬分類: MTK

            詳細出處:http://www.52rd.com/Blog/Detail_RD.Blog_bmw7_24676.html#41074

               在25平臺上調試了一款帶ISP處理器的5.0M sensor 模組,在25上實現了5.0M sensor的預覽拍照功能。下面是調試過程中的一些筆記:

            一.關于H-sync /V-Sync的知識:

            1. 分辨率:比如說640x480,就會有640 個pixel &480 line,那么每個V-sync的信號時間內就會有480個H-sync,而一個H-sync會有640個pixel。但是,每個pixel會有2 byte,所以我們會量到PCLK 在一個H-sync內的數量會有1280個。

            2. H-sync /V-Sync的極性polarity: polarity就是資料有效的準備,比方說V-sync上的H-sync有可能在V-sync的low,也有可能在high出現。

             

            二. 所使用的ISP處理器簡介:XXX838是一款isp(圖像信號處理器)ic,核心是一款arm7 process,提供自動對焦,人臉識別等功能。BB通過i2c與其進行命令類的數據通信,而sensor數據則通過CCIR總線傳輸給BB.

             

            三. 25平臺 camera處理流程學習

            1.       void cam_event_ind_hdlr(ilm_struct *ilm_ptr)// This function is to handle camera event indication.

                在該函數中,通過camera_capture_mem_process(&capture_mem_param)命令從lcd層獲取capture數據,然后通過jpeg_encode_process(&jpg_encode)命令將這些數據軟編碼成jpeg格式的數據。

              

            2.       void cam_capture_req_hdlr(ilm_struct *ilm_ptr)// This function is to handle camera capture request.

            (1)       該函數首先執行exit_camera_preview_process();命令退出preview流程;

            (2)       ./* copy preview data to MMI buffer */

            memcpy(

                            (kal_uint8*) cam_context_p->frame_buffer_p,

                            (kal_uint8*) cam_context_p->int_frame_buffer_p,

                            cam_context_p->frame_buffer_size);

            (3). /* release preview related memory */

                    cam_release_memory();

              

            3.cam_context_p->capture_buffer_p :所需存儲的拍照數據指針

              cam_context_p->file_size :所要存儲的數據大小

            4. 在cam_open_image_file函數中執行命令

            cam_context_p->capture_buffer_p = (kal_uint32) med_alloc_ext_mem(buffer_size);

            來分配內存。

            Capture數據存儲指針:capture_isp_param.target_buffer_start_address = (kal_uint32) cam_context_p->capture_buffer_p;

            camera_capture_jpeg_process(&capture_isp_param);

            isp_capture_jpeg_data.target_buffer_start_address=isp_data->target_buffer_start_address;

            sw_jpeg_encode_config_data.jpeg_file_start_address=isp_capture_jpeg_data.target_buffer_start_address;

             

             5. camera capture后的數據傳送流程:cam_context_p->intmem_start_address.

              (1).  capture_isp_param.intmem_start_address = cam_context_p->intmem_start_address =

                    (kal_uint32) med_alloc_int_mem(cam_capture_mem[0]);//只有45k

                capture_isp_param.intmem_size = cam_context_p->intmem_size = (kal_uint32) cam_capture_mem[0];

              (2). file_size = camera_capture_jpeg_process(&capture_isp_param); //jpeg編碼后的文件大小

              (3).isp_capture_jpeg_data.intmem_start_address=isp_data->intmem_start_address;

                   isp_capture_jpeg_data.intmem_size=isp_data->intmem_size;

              (4).    intmem_init((kal_uint32 *) isp_capture_jpeg_data.intmem_start_address,

                                               isp_capture_jpeg_data.intmem_size);

              (5).sw_jpeg_encode_config_data.intmem_start_address=isp_capture_jpeg_data.intmem_start_address; //將所獲取的capture原始數據地址指針賦給軟編碼的起始地址

             

             

            四.調試關鍵點

            1. 首先調通I2C通訊,必須確保BB與ISP的I2C通訊正常;

            2.  重新定義#define MAX_CAM_FILE_BUFFER_LEN   (3150*1024)    /* 2700kb for 5.0M */

             

            3.仿照camera_capture_jpeg_process函數,創建一個新函數,在該函數中對獲取的數據直接存儲,而不經過jpeg編碼流程(由于XXX838傳輸過來的已經是jpeg格式的數據)。

            注意:

            (1)       在該函數中,要設置:

            ENABLE_CAMERA_OUTPUT_TO_MEM;//ISP輸出至Memory,

            SET_CAMERA_CAPTURE_MODE

             /*** Capture,等待VSYNC中斷**/      

             (2).在capture完成后,要DISABLE_CMOS_SESNOR;//關閉sensor信號。

             (3).此時,獲取的capture的數據已經存儲在isp_data->target_buffer_start_address中;

            然后讀取這些數據,通過0xff ,0xd8判斷文件頭,0xff ,0xd9判斷jpeg文件尾及其長度。

            (4)最后,通過kal_int32 cam_close_image_file(kal_uint32 size)保存文件


             

            久久精品这里热有精品| 久久99国产精品尤物| 天天做夜夜做久久做狠狠| 亚洲人成电影网站久久| 999久久久无码国产精品| 久久亚洲AV永久无码精品| 久久亚洲AV成人出白浆无码国产| 国产精品热久久毛片| 性欧美大战久久久久久久久| 久久精品一区二区影院 | 久久国产精品免费一区二区三区| 天天影视色香欲综合久久| 久久久久四虎国产精品| 久久久久久伊人高潮影院| 99久久99久久精品国产| 精品无码久久久久国产| 囯产精品久久久久久久久蜜桃| 久久久99精品成人片中文字幕 | 色婷婷久久综合中文久久一本| 久久亚洲国产成人精品性色| 久久久久久精品成人免费图片| 国产成人精品久久一区二区三区av| 久久99国产综合精品免费| 午夜精品久久久久久影视riav| 国产精品丝袜久久久久久不卡| 97久久精品午夜一区二区| 精品久久久久久国产潘金莲| 亚洲国产美女精品久久久久∴| 久久综合亚洲鲁鲁五月天| 国产69精品久久久久APP下载| 欧美久久天天综合香蕉伊| 久久人人爽人人澡人人高潮AV| 久久午夜福利无码1000合集| 欧美日韩中文字幕久久久不卡 | 国产精品一区二区久久精品涩爱| 久久亚洲欧洲国产综合| 中文字幕无码久久久| 久久精品国产亚洲αv忘忧草| 久久99热这里只有精品国产| 亚洲狠狠婷婷综合久久久久| 久久99精品久久久久久hb无码|