This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:LDC DCC.CONFIG

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1471811/tda4vm-ldc-dcc-config

器件型号:TDA4VM

工具与软件:

大家好、团队成员:

我使用的是 SDK v 08_02_00_05 (Linux+RTOS)。

我有一个可正常运行的单摄像头应用、它接受鱼眼摄像头输入、并在使用 LDC 节点的监视器上显示直线输出。

这是通过将生成的 LUT 作为网格图像传递至 LDC 参数来实现的。

我已经使用 DCC 调优工具生成了 XML 文件、并执行了以下代码来生成 C 头文件。

DCC_TOOL_PATH=../../../../../tools/dcc_tools/
OUT_PATH=../../../../include
DCC_BIN_DIR=../../dcc_bins
DCC_BIN_LINEAR_DIR=../../dcc_bins/linear

# Ensure required directories exist
mkdir -p "$DCC_BIN_DIR"
mkdir -p "$DCC_BIN_LINEAR_DIR"

# Remove old files
rm -f *.bin
rm -f $OUT_PATH/dcc_ldc_isx016.h

# Run DCC tool
$DCC_TOOL_PATH/dcc_gen_linux ISX016_mesh_ldc_dcc.xml

# Find the actual .bin file
BIN_FILE=$(ls cid42_*.bin 2>/dev/null | head -n 1)

if [ -z "$BIN_FILE" ]; then
    echo "Error: DCC binary not generated!"
    exit 1
fi

# Move and rename the binary file
cp "$BIN_FILE" "$DCC_BIN_DIR/isx016_dcc_ldc.bin"
cp "$BIN_FILE" "$DCC_BIN_LINEAR_DIR/"

# Convert to C header file
$DCC_TOOL_PATH/dcc_bin2c "$DCC_BIN_DIR/isx016_dcc_ldc.bin" "$OUT_PATH/dcc_ldc_isx016.h" dcc_ldc_isx016

# Cleanup
rm -f *.bin

您能告诉我如何使用没有网格图像的工具实现相同的功能吗?

另外、请确认是否仅在处于怠速位置的车辆(与摄像头集成)上使用 LDC)BJ->DCC.CONFIG、或者甚至在车辆也处于移动状态时使用?  

此致、

Chaitanya Prakash Uppala

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

      请参阅此文件来配置自定义 src 参数($PSDKRA)/imaging/utils/iss dpc/app_iss_common.c 还请参阅 app_ldc_module.c 中的此函数 configure_dcc_params ()
     生成头文件后、将其包含在 app_iss_common.c 中
     在应用中启用此标志 sensorObj->sensorObj_DCC_ENABLE=1、然后此函数 CONFIG_DCC_PARAMS (vx_context、LDCObj * ldcObj、SensorObj * sensorObj)将在 DCC_config 中加载参数。
     
     是的、您可以参考此函数 app_iss_common.c 内的 appDccUpdatefromFS()、以在运行时更新 DCC 参数。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    生成头文件后、将该文件包含在 app_iss_common.c 中
     在应用中启用此标志 sensorObj->sensorObj_DCC_ENABLE=1、然后此函数 CONFIG_DCC_PARAMS (vx_context、LDCObj * ldcObj、SensorObj * sensorObj)将在 DCC_config 中加载参数。[/QUOT]

    我已经处理了这些。 在运行应用时、我面临 SEG 故障。 请找到随附的日志。

    root@j7-evm:/opt/vision_apps# ./single_cam.out --cfg rci_od_cam.cfg 
    APP: Init ... !!!
    MEM: Init ... !!!
    MEM: Initialized DMA HEAP (fd=4) !!!
    MEM: Init ... Done !!!
    IPC: Init ... !!!
    IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
        47.145762 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
        47.152318 s:  VX_ZONE_INIT:Enabled
        47.152341 s:  VX_ZONE_ERROR:Enabled
        47.152352 s:  VX_ZONE_WARNING:Enabled
        47.158082 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
        47.158241 s:  VX_ZONE_INIT:[tivxHostInitLocal:86] Initialization Done for HOST !!!
    Default param set! 
    Parsed user params! 
        47.162344 s: ISS: Enumerating sensors ... !!!
    [MCU2_0]     47.162596 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_ENUMERATE 
    [MCU2_0]     47.162872 s: write 0xfe to TCA6408 register 0x3 
    [MCU2_0]     47.262471 s: UB960 config start 
    [MCU2_0]     49.758735 s: End of UB960 config 
    [MCU2_0]     49.758802 s: UB960 config start 
        49.958964 s: ISS: Enumerating sensors ... found 0 : IMX390-UB953_D3
        49.958976 s: ISS: Enumerating sensors ... found 1 : AR0233-UB953_MARS
        49.958996 s: ISS: Enumerating sensors ... found 2 : AR0820-UB953_LI
        49.959002 s: ISS: Enumerating sensors ... found 3 : UB9xxx_RAW12_TESTPATTERN
        49.959007 s: ISS: Enumerating sensors ... found 4 : UB96x_UYVY_TESTPATTERN
        49.959012 s: ISS: Enumerating sensors ... found 5 : GW_AR0233_UYVY
        49.959016 s: ISS: Enumerating sensors ... found 6 : ISX016_UB913A_Q1
    7 sensor(s) found 
    Supported sensor list: 
    a : IMX390-UB953_D3 
    b : AR0233-UB953_MARS 
    c : AR0820-UB953_LI 
    d : UB9xxx_RAW12_TESTPATTERN 
    e : UB96x_UYVY_TESTPATTERN 
    f : GW_AR0233_UYVY 
    g : ISX016_UB913A_Q1 
    Select a sensor above or press '0' to autodetect the sensor 
    [MCU2_0]     49.958731 s: End of UB960 config 
    g
    Sensor selected : ISX016_UB913A_Q1
    Querying ISX016_UB913A_Q1 
        50.738770 s: ISS: Querying sensor [ISX016_UB913A_Q1] ... !!!
        50.739235 s: ISS: Querying sensor [ISX016_UB913A_Q1] ... Done !!!
    LDC Selection Yes(1)/No(0)
    Invalid selection 
    . Try again 
    LDC Selection Yes(1)/No(0)
    [MCU2_0]     50.738977 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_QUERY 
    [MCU2_0]     50.739047 s: Received Query for ISX016_UB913A_Q1 
    1
    Max number of cameras supported by sensor ISX016_UB913A_Q1 = 4 
    Please enter number of cameras to be enabled 
    Invalid selection 
    . Try again 
    Max number of cameras supported by sensor ISX016_UB913A_Q1 = 4 
    Please enter number of cameras to be enabled 
    1
    Sensor params queried! 
    Updated user params! 
    Creating context done!
    Kernel loading done!
        52.178699 s: ISS: Initializing sensor [ISX016_UB913A_Q1], doing IM_SENSOR_CMD_PWRON ... !!!
        52.179223 s: ISS: Initializing sensor [ISX016_UB913A_Q1], doing IM_SENSOR_CMD_CONFIG ... !!!
    [MCU2_0]     52.178906 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_PWRON 
    [MCU2_0]     52.178981 s: IM_SENSOR_CMD_PWRON : channel_mask = 0x1 
    [MCU2_0]     52.179053 s: ISX016_PowerOn : chId = 0x0 
    [MCU2_0]     52.179419 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG 
    [MCU2_0]     52.179514 s: Application requested features = 0x158 
    [MCU2_0]  
    [MCU2_0]     52.179567 s: UB960 config start 
    [MCU2_0]     52.435565 s: End of UB960 config 
    [MCU2_0]     52.435631 s: UB960 config start 
    [MCU2_0]     52.691565 s: End of UB960 config 
    [MCU2_0]     52.691770 s: UB960 config start 
    [MCU2_0]     52.695564 s: End of UB960 config 
    [MCU2_0]     52.695613 s: ub953 config start : slaveAddr = 0xb0 
    [MCU2_0]     52.903601 s:  End of UB953 config 
    [MCU2_0]     52.904497 s: Configuring camera # 0 
    [MCU2_0]     52.904690 s: UB960 config start 
    [MCU2_0]     52.908563 s: End of UB960 config 
    [MCU2_0]     52.908616 s: ub953 config start : slaveAddr = 0xb0 
    [MCU2_0]     53.116610 s:  End of UB953 config 
    [MCU2_0]     53.116699 s:  Configuring ISX016 imager 0x50.. Please wait till it finishes 
        53.216704 s: ISS: Initializing sensor [ISX016_UB913A_Q1] ... Done !!!
    Sensor init done!
    Capture init done!
    app_init_color_conv() : ENTERING 
    app_init_color_conv() : EXITING 
    Color Conv init done!
    [LDC-MODULE] configure_dcc_params() : ENTERING
    sensorObj->sensor_dcc_enabled:1
    sensorObj->sensor_wdr_enabled:0
    [LDC-MODULE] configure_dcc_params() : dcc_buff_size = 22512 
    [LDC-MODULE] Error getting DCC buffer 
    [LDC-MODULE] configure_dcc_params() : Created DCC config object! 
    [LDC-MODULE] configure_dcc_params() : EXITING
    LDC init done!
    Display init done!
    [MCU2_0]     50.124751 s: IM_SENSOR_CMD_CONFIG returning status = 0 
    App Init Done! 
     app_create_graph() : ENTERING 
    Graph create done!
    Capture graph done!
    app_create_graph_color_conv() : ENTERING 
    Color convert node create started
    Color convert node create done 
    app_create_graph_color_conv() : EXITING 
    Color Conversion graph done!
    [LDC-MODULE] app_create_graph_ldc() : ENTERING 
    [LDC-MODULE] app_create_graph_ldc() : DCC config object is NOT NULL 
    after input_img
    Segmentation fault (core dumped)
    root@j7-evm:/opt/vision_apps#

    此外、还连接了 ldc_module.c 文件以供参考。 我不明白为什么检索 output_img 会导致 SEG 故障。

    e2e.ti.com/.../7360.rci_5F00_ldc_5F00_module.c

    谢谢。此致、

    Chaitanya Prakash Uppala

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

     我从日志中看到此错误 "[LDC-module] Error Geting DCC Buffer"

    您能否共享您的 app_iss_commom.c 文件和生成的头文件。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

    检查此错误"[MCU2_0]    76.255146 s: 摄像机 ID 390"某些参数错误、检查 sensor_dcc_id 参数。

    "[MCU2_0]    76.972220 s: vx_zone_error:[tivxVpacLdcProcess:232]无效描述符"这可能是由创建节点时错误地 ldcObj->config 或输入/输出映像给出的错误导致的。 检查一次

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gokul、

    。  

    [报价 userid="637485" url="~/support/processors-group/processors/f/processors-forum/1471811/tda4vm-ldc-dcc-config/5649392 #5649392"]

    "[MCU2_0]    76.972220 s: vx_zone_error:[tivxVpacLdcProcess:232]无效描述符"这可能是由创建节点时错误地 ldcObj->config 或输入/输出映像给出的错误导致的。 检查一次

    [报价]

    此错误也已解决。 感谢您的支持。

    请回答以下问题。

    void print_image_info (vx_image)

    Vx_SIZE 宽度= 0、高度= 0;
    vx_df_image 格式;
    vxQueryImage (image、vx_image_format、&format、sizeof (format));
    vxQueryImage (image、vx_image_width、&width、sizeof (width));
    vxQueryImage (image、vx_image_height、&height、sizeof (height));
    printf ("图像宽度:%zu、高度:%ZU\n"、宽度、高度);
    printf ("图像格式:0x%X\n"、format);
    }

    我已经在 LDC_MODULE.c 文件中添加了上述函数、并将 input_img 和 output_img 作为参数传递给该函数、如下所示。

    vx_image input_img =(vx_image) vxGetObjectArrayItem (input_arr、0);
    if (input_img == NULL){
    printf ("error:LDC input image is NULL\n");
    返回 vx_failure;
    }
    printf ("after input_img\n");
    print_image_info (input_img);

    注意:替换 output_img 的相同代码段用于替换 output_img。

    在电路板上运行时、日志如下所示。 此应用工作正常、除了这些之外没有观察到任何错误、并且在监视器上显示直线性输出。

    在 input_img 之后
    50.997287 s:vx_zone_error:[vxQueryImage:1560]查询图像宽度失败
    50.997296 s:vx_zone_error:[vxQueryImage:1571]查询图像高度失败
    图像宽度:0、高度:0
    图像格式:0x59565955
    作为符号引用
    50.997313 s:vx_zone_error:[vxQueryImage:1560]查询图像宽度失败
    50.997319 s:vx_zone_error:[vxQueryImage:1571]查询图像高度失败
    图像宽度:0、高度:0
    映像格式:0x3231564E

    如果查询图像属性失败、应用程序如何使用预期输出?

    此致、

    Chaitanya Prakash Uppala

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Chaitanya Prakash Uppala:

    图像属性查询失败

    git.ti.com/.../app_single_cam_common.c

    我看到 VX_UINT32适用于所有位置的宽度和高度。
    您也可以尝试一下。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Gang、您好!

    我发现 vx_uint32适用于所有地方的宽度和高度。
    您也可以尝试一下。

    感谢您提供的投入。

     已使用 DCC_CONFIG 实现单个摄像头的鱼眼至再线性转换。

    您能为我介绍一下如何为多摄像头实现相同的功能吗?

    由于成像中已经存在一个摄像头的 DCC_CONFIG Bin 和 XMLs、因此如何为多个摄像头添加?

    此致、

    Chaitanya Prakash Uppala

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Chaitanya:

    由于成像中已经存在一个摄像机的 DCC_CONFIG Bin 和 XMLs、如何为多个摄像机添加?

    多摄像头应用已支持具有 DCC 二进制输入的 LDC。
    请参考以下源代码供您参考。

    https://git.ti.com/cgit/processor-sdk/vision_apps/tree/apps/basic_demos/app_multi_cam?h=main

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Gang、您好!

    我已经完成了多摄像头应用。 在中、如果没有错、所有四个摄像头都使用单个 DCC_CONFIG。

    我的用例如下所述。

    有一辆车 (与摄像头集成)(右、左、前和后位置)、我已经使用 DCC 工具为每个摄像头生成了 BIN 和 XMLs 文件。

    我使用 generate_dcc.h 脚本为前置摄像头生成了 C 头文件、并使用 ldcObj->DCC_config 方法生成并验证了单摄像头应用。

    现在我的扩展是四个摄像头。 在运行时期间、左侧摄像头应采用具有左侧摄像头参数的相应生成 DCC。 同样、适用于其余摄像头。

    我想知道这是否可能实现。 如果是、如何实现这一点。

    谢谢。此致、

    Chaitanya Prakash Uppala  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Chaitanya:

    [报价 userid="554139" url="~/support/processors-group/processors/f/processors-forum/1471811/tda4vm-ldc-dcc-config/5653992 #5653992"]

    现在我的扩展是四个摄像头。 在运行时期间、左侧摄像头应采用具有左侧摄像头参数的相应生成 DCC。 同样、适用于其余摄像头。

    我想知道这是否可能实现。 如果是、如何实现这一点。

    [报价]

    这应该是可能的、例如、每个 VISS 内核都可以有自己的 DCC 输入。
    我的朋友 将能够帮助你,因为 我不熟悉这些 openvx S/W 细节。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。谢谢。

    将等待 Gokul 消息。

    此致、

    Chaitanya Prakash Uppala  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

     请参阅此功能 appDccUpdatefromFS()、它将位于 app_single_cam_main.c 中、以便在运行时更新 DCC 参数。

    请参考 app_iss_common.c 内这个函数 appDccUpdatefromFS()的定义

    此函数从文件加载 DCC 配置二进制文件并使用 TIvxNodeSendCommand () API 发送到节点

    传递 ldc_node_obj 以更新 LDC 配置、并针对休息传递 NULL。 参数 LDC_NODE_INDEX 是用于更新 DCC 配置的节点索引

    使用4个摄像头、因此会创建4个 LDC 节点、每个摄像头都将映射到一个 node_index、使用该 node_index 来更新该特定摄像头的配置

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    进行实时更新。 我已按如下所述修改了应用程序。  

    停止  

    1) app_update_dcc_params (obj->context、& obj->ldcObj、& obj->sensorObj、dcc_filenames、obj->sensorObj.num_cameras_enabled);//在 app_init_LDC 函数调用下的 app_init 函数中添加了此函数。

    2) const char *DCC_filename[]={
    "/opt/vision_apps/dcc/ISX016/linear/front_camera_dcc.bin、
    "/opt/vision_apps/dcc/ISX016/linear/left_camera_dcc.bin、
    "/opt/vision_apps/dcc/ISX016/linear/right_camera_dcc.bin、
    "/opt/vision_apps/dcc/ISX016/linear/rear_camera_dcc.bin
    };//声明为全局

    创建了一个循环

    1) 1)添加了以下函数定义。

    void app_update_DCC_params (vx_context、LDCObj * ldcObj、SensorObj * sensorObj、const char * DCC_filenames[]、vx_Int32 num_camers){

    对于(int i = 0;i < num_cameras;i++)

    vx_status = appDccUpdatefromFS (sensorObj->sensor_name、sensorObj->sensor_WDR_enabled、
    null、0、
    null、0、
    ldcObj->node、i、
    环境);
    if (status == vx_SUCCESS)

    printf ("摄像机%d\n"DCC 参数已从%s 成功更新"、DCC_FILENAMEs[i]、i);
    }
    设计

    printf ("错误:无法从%s 更新摄像机%d\n"、DCC_FILENAMEs[i]、i)的 DCC 参数;
    }
    }
    }

    2) 2)在 app_ldc_module.h 中添加了函数声明

    void app_update_DCC_params (vx_context、LDCObj * ldcObj、SensorObj * sensorObj、const char * DCC_filenames[]、vx_Int32 num_camers);

    请告诉我、这种方法是否符合我的要求输出。  

    此外、请确认我是否需要在更新 APP_UPDATE_DCC_params 函数中的 DCC 时注释掉 APP_INIT_LDC 函数中的 CONFIG_DCC_PARAMS。

    此致、

    Chaitanya Prakash Uppala

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

    查看 appDccUpdatefromFS()的定义内部、它根据您传递的 sensor_name 加载 DCC 二进制文件、因此相应地给出传感器名称。

    您的代码将更新所有 LDC 节点的相同 DCC config 二进制文件。

    [报价 userid="554139" url="~/support/processors-group/processors/f/processors-forum/1471811/tda4vm-ldc-dcc-config/5656524 #5656524"]此外、请确认我是否需要在更新 app_update_DCC_params 函数中的 DCC 时注释掉 APP_INIT_LDC 函数中的 CONFIG_DCC_PARAMS。

    无需注释掉 CONFIG_DCC_PARAMS。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    [报价 userid="637485" url="~/support/processors-group/processors/f/processors-forum/1471811/tda4vm-ldc-dcc-config/5663641 #5663641"]

    您的代码将更新所有 LDC 节点的相同 DCC config 二进制文件。

    [报价]

    但这不是我的用例。

    现在我的分机号码是四台摄像机。 在运行时期间、左侧摄像头应采用具有左侧摄像头参数的相应生成 DCC。 同样、对于其余的摄像机。

    由于每个摄像头(左、右、前和后)与车辆以不同角度安装、因此 LUT 文件对于每个摄像头(左、右、前和后)都是唯一的。 因此、将生成4个不同的 bin 文件。

    使用单个 bin 文件可能导致所有四个摄像头的转换、但由于 LUT 值会变化、因此准确度不高。

    希望我的用例是清楚的,你。 如果没有、请告诉我。 请提供您对此用例的见解。

    此致、

    Chaitanya Prakash Uppala  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prakash:

    您的代码将为所有 LDC 节点更新相同的 DCC 配置二进制文件。

    我已经告诉你的代码做什么,是的,它不匹配你的用例(你发送的代码)。

    查看 appDccUpdatefromFS 的定义内部()它根据您传递的 sensor_name 加载 DCC 二进制文件、因此相应地给出传感器名称。

    我要求使用 appDccUpdatefromFS()的 sensor_name 参数、将不同的二进制文件传递给不同的摄像机、以便使用不同的二进制文件更新每个节点。 将 DCC_FILES (如"FRONT_CAMER_DCC")中的传感器名称作为 SENSOR_NAME 传递、每次迭代时、都会将相应的文件名作为 SENSOR_NAME 传递。
    查看此函数 appDccUpdatefromFS()的定义、了解如何从基于 sensnor_name 输入的文件中加载二进制文件。
    根据、修改 DCC_FILENAMEs 中的文件名。

    希望这可以澄清您的问题

    此致、
    Gokul