栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Android 12 Camera ITS 测试与修改

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 12 Camera ITS 测试与修改

目录

引入config.yml

测试命令

新增测试项


        Android 12 Camera ITS所需的环境配置如下,测试包中的 CameraITS.pdf 的 2.2. Host machine setup 小节已有陈述,不再赘述。请先确认环境配置OK后再看具体测试细节

Python 3.7.9 or Python 3.7.10
OpenCV 3.4.2
Numpy 1.19.2
Matplotlib 3.3.2
Scipy 1.5.2
pySerial 3.5
Pillow 8.1.0
PyYAML 5.3.1

引入config.yml

        参考Android 12以前直接输入测试命令,有如下报错

Command '['adb', '-s', '', 'shell', 'appops', 'set', 'com.android.cts.verifier', 'MANAGE_EXTERNAL_STORAGE', 'allow']' returned non-zero exit status 1.

        问题定位:测试脚本找不到这个设备。

        Android 12以后,ITS测试包中增加了config.yml配置文件,需在其中填写待测机器序列号,若使用打印图纸进行测试的话,还需将测试模式改为TEST_BED_MANUAL并删掉两行代码。(与之对应的另一个测试模式为TEST_BED_TABLET_SCENES,使用平板辅助测试,暂未试过)

        修改demo如下,需改动的位置已由中文注释出。

TestBeds:
  - Name: TEST_BED_MANUAL  # 使用打印图片测试的话,将这里改为TEST_BED_MANUAL
    # Use TEST_BED_MANUAL for manual testing and remove below lines:
    #     - serial 
    #       label: tablet
    # Test configuration for scenes[0:4, 6, _change]
    Controllers:
        AndroidDevice:
          - serial: 0123456789ABCDEF # 在这里填入待测机器序列号(注意将<>括号去掉)
            label: dut
          # 使用打印图片测试的话,将以下两行删除或注释
          #- serial:  # 使用打印图片测试的话,将这两行删除或注释
          #  label: tablet
    TestParams:
      brightness: 96
      chart_distance: 31.0
      debug_mode: "False"  # quotes are needed here
      chart_loc_arg: ""
      camera:   # 若不修改需要在测试命令中添加camera=0(或1,…等)命令才能测试
      scene:   # 若不修改可默认跑全部scenes

  - Name: TEST_BED_SENSOR_FUSION  # Need 'sensor_fusion' in name for SF tests
    # Test configuration for sensor_fusion/test_sensor_fusion.py
    Controllers:
        AndroidDevice:
          - serial: 0123456789ABCDEF # 在这里填入待测机器序列号
            label: dut
    TestParams:
      fps: 30
      img_size: 640,480
      test_length: 7
      debug_mode: "False"  # quotes are needed here
      chart_distance: 25
      rotator_cntl:   # arduino, canakit, or as-is for manual
      rotator_ch: 
      camera: 

        如果已填写序列号仍有前述报错,检查:

        1.序列号是否填写正确?(默认demo中的<>括号需去掉)

        2.测试机器是否已adb连接到测试电脑上?(使用命令adb devices查看连接列表)

测试命令
$ cd CameraITS/
$ source build/envsetup.sh
$ python tools/run_all_tests.py camera=0 scenes=0

        与Android 12之前不同,在Android 12之前可通过 python tools/run_all_tests.py 不添加任何参数一次性全跑所有camera id的所有scenes,但Android 12需添加 camera=0(1,…等camera id)才能开始测试,或者直接在yml文件中填写:

      camera: 0,1

        scenes= 一项依旧可加可不加,默认测试全部scenes。

新增测试项

        在Android 12的 Camera ITS scene0 新增了一个测试项 test_solid_color_test_pattern,以下以MTK平台为例修复该项fail。

AssertionError: neither SOLID_COLOR or BLACK are in android.sensor.availableTestPatternModes.

        首先检查对应sensor的metadata是否配置SOLID_COLOR或者BLACK

CONFIG_METADATA_BEGIN(MTK_SENSOR_AVAILABLE_TEST_PATTERN_MODES)
    CONFIG_ENTRY_VALUE(MTK_SENSOR_TEST_PATTERN_MODE_OFF, MINT32)
    CONFIG_ENTRY_VALUE(MTK_SENSOR_TEST_PATTERN_MODE_BLACK, MINT32)
    CONFIG_ENTRY_VALUE(MTK_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR, MINT32)
CONFIG_METADATA_END()

        添加后若有更新其他报错内容,根据你所填写的模式及报错内容去修改对应驱动的内容。这里贴上我配置MTK_SENSOR_TEST_PATTERN_MODE_BLACK后对驱动的修改供参考。

        注意:MTK_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR传下来的mode是1,MTK_SENSOR_TEST_PATTERN_MODE_BLACK传下来的的mode是5。

diff ov8856mipiraw_Sensor.c
@@ -161,7 +161,7 @@ static struct imgsensor_struct imgsensor = {
        .current_fps = 30,
        .autoflicker_en = KAL_FALSE,
-       .test_pattern = KAL_FALSE,
+       .test_pattern = 0,
        .current_scenario_id = MSDK_SCENARIO_ID_CAMERA_PREVIEW,
        .ihdr_en = 0, 
@@ -1433,7 +1433,7 @@ static kal_uint32 open(void)
        imgsensor.dummy_pixel = 0;
        imgsensor.dummy_line = 0;
        imgsensor.ihdr_en = 0;
-       imgsensor.test_pattern = KAL_FALSE;
+       imgsensor.test_pattern = 0;
        imgsensor.current_fps = imgsensor_info.pre.max_framerate;
        spin_unlock(&imgsensor_drv_lock);
 
@@ -1916,0 +1916,0 @@ static kal_uint32 get_default_framerate_by_scenario(
-static kal_uint32 set_test_pattern_mode(kal_bool enable)
+static kal_uint32 set_test_pattern_mode(kal_uint32 modes, struct SET_SENSOR_PATTERN_SOLID_COLOR *pdata)
 {
-       LOG_INF("enable: %dn", enable);
+       LOG_INF("set_test_pattern modes: %dn", modes);
-
-       if (enable) {
+       if (modes){
                write_cmos_sensor(0x5000, 0x57);
                write_cmos_sensor(0x5001, 0x02);
-               write_cmos_sensor(0x5e00, 0x80);
-       } else {
+               write_cmos_sensor(0x5e00, 0x80);    //default color bar
+               if (modes == 5 && (pdata != NULL)) {    //BLACK对应mode 5,SOLID_COLOR对应mode 1
+                       write_cmos_sensor(0x5e00, 0x83);    //从sensor端输出black image
+               }
+       } else {    
                write_cmos_sensor(0x5000, 0x77);
                write_cmos_sensor(0x5001, 0x0a);
                write_cmos_sensor(0x5e00, 0x00);
        }
        spin_lock(&imgsensor_drv_lock);
-       imgsensor.test_pattern = enable;
+       imgsensor.test_pattern = modes;
        spin_unlock(&imgsensor_drv_lock);
+       LOG_INF("final set_test_pattern modes: %dn", modes);
        return ERROR_NONE;
 }
 
@@ -2009,7 +2013,7 @@ static kal_uint32 feature_control(MSDK_SENSOR_FEATURE_ENUM feature_id,
                        (MUINT32 *)(uintptr_t)(*(feature_data+1)));
                break;
        case SENSOR_FEATURE_SET_TEST_PATTERN:
-               set_test_pattern_mode((BOOL)*feature_data);
+               set_test_pattern_mode((UINT32)*feature_data, (struct SET_SENSOR_PATTERN_SOLID_COLOR *)(feature_data+1));
                break;
        case SENSOR_FEATURE_GET_TEST_PATTERN_CHECKSUM_VALUE: 
                *feature_return_para_32 = imgsensor_info.checksum_value;
                
diff ov8856mipiraw_Sensor.h
@@ -70,7 +70,7 @@ struct imgsensor_struct {
 
        kal_uint16 current_fps;  
        kal_bool autoflicker_en; 
-       kal_bool test_pattern;   
+       kal_uint8 test_pattern;   
        enum MSDK_SCENARIO_ID_ENUM current_scenario_id; 
        kal_uint8 ihdr_en;                         

PS:该项不能跳过,其他GMS测试也会用到相应配置。

PSS:推荐配置成BLACK,报错简单易懂,修改简单易行,且可以通过所有GMS测试。

PSSS:后续bring up工作中发现,在Android 12中,若MTK_SENSOR_AVAILABLE_TEST_PATTERN_MODES没有填写MTK_SENSOR_TEST_PATTERN_MODE_OFF,会导致sensor一直处于test pattern状态,调试点亮时若发现黑屏花屏注意考虑这一点。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号