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.

[参考译文] TDA4VEN-Q1:RTOS 变换后的 bin 模型无法在板上运行

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1527549/tda4ven-q1-rtos-transformed-bin-model-can-not-run-in-board

器件型号:TDA4VEN-Q1

工具/软件:

我们使用自由空间分割 onnx 模型 导 入到 TI 模型。 我  通过仿真使用了 TI RTOS 11.0 入门级环境 、所有导入步骤似乎都正常、 结果的可视化也可以。   然后 我 通过 模拟输入模型,结果是好的,结果的可视化也是好的。  但是,当我们在板上测试 ti 时,它会出现 错误。  我们怎么能明白原因? 有人可以帮助我们?

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

    /home/invo/Desktop/to_huagong.zip

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

    e2e.ti.com/.../fisheye_5F00_seg_5F00_Import_5F00_config.txt

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

    e2e.ti.com/.../to_5F00_huagong.zip

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

    你(们)好

    从您的 onnx 导入模型时、我能够在 EVM 上运行模型。

    这是 EVM 上的日志:

    root@j722s-evm:/opt/fs# ./TI_DEVICE_armv8_test_dl_algo_host_rt.out s:fisheye_seg_inference_config.txt 
    
    Processing config file #0 : fisheye_seg_inference_config.txt 
    APP: Init ... !!!
     14065.439663 s: MEM: Init ... !!!
     14065.439740 s: MEM: Initialized DMA HEAP (fd=5) !!!
     14065.439951 s: MEM: Init ... Done !!!
     14065.439971 s: IPC: Init ... !!!
     14065.493476 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
     14065.500484 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
     14065.500665 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
     14065.500688 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
     14065.500700 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
     14065.501526 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-0 
     14065.501884 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-1 
     14065.502197 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-2 
     14065.502438 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-3 
     14065.502463 s:  VX_ZONE_INFO: [tivxInitLocal:202] Initialization Done !!!
     14065.502486 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    
    # NETWORK_INIT_TIME =   125.07 (in ms, c7x @1GHz)
     ----------------------- TIDL Process with TARGET DATA FLOW ------------------------
    
    # NETWORK_EXECUTION_TIME =    12.74 (in ms, c7x @1GHz) with DDR_BANDWIDTH (Read + Write) =    21.52,    28.43,    49.95 (in Mega Bytes/f!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
     14065.658703 s: IPC: Deinit ... !!!
     14065.660030 s: IPC: DeInit ... Done !!!
     14065.660099 s: MEM: Deinit ... !!!
     14065.660117 s: DDR_SHARED_MEM: Alloc's: 7 alloc's of 4356364 bytes 
     14065.660130 s: DDR_SHARED_MEM: Free's : 7 free's  of 4356364 bytes 
     14065.660139 s: DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
     14065.660162 s: MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!
    root@j722s-evm:/opt/fs# ls
    

    如果使用导入的模型并记录以下日志、我也会重现您的问题:

    rocessing config file #0 : fisheye_seg_inference_config.txt 
    Input : dataId=0, name=input.1_original, elementType 0, scale=1.000000, zero point=0, layout=0
    Ouput : dataId=91, name=815, elementType 0, scale=1.000000, zero point=0, layout=0 
          1915044,      1.826 0xffff58cd1010
    worstCaseDelay for Pre-emption is 2.8244629 
    Network File Read done
    APP: Init ... !!!
     14228.835130 s: MEM: Init ... !!!
     14228.835207 s: MEM: Initialized DMA HEAP (fd=5) !!!
     14228.835422 s: MEM: Init ... Done !!!
     14228.835442 s: IPC: Init ... !!!
     14228.889110 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
     14228.896353 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
     14228.896526 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
     14228.896546 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
     14228.896557 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
     14228.897438 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-0 
     14228.897728 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-1 
     14228.897956 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-2 
     14228.898155 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-3 
     14228.898182 s:  VX_ZONE_INFO: [tivxInitLocal:202] Initialization Done !!!
     14228.898204 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    [C7x_1 ]  14228.914383 s: PREEMPTION: Requesting memory of size 128 for targetPriority = 0
    [C7x_1 ]  14228.914410 s: 
    [C7x_1 ]  14228.914431 s: --------------------------------------------
    [C7x_1 ]  14228.914455 s: TIDL Memory size requiement (record wise):
    [C7x_1 ]  14228.914495 s: MemRecNum   , Space               , Attribute   , Alignment   , Size(KBytes), BasePtr     
    [C7x_1 ]  14228.914544 s: 0           , DDR Non-cacheable   , Persistent  ,  128, 19.41   , 0x00000000
    [C7x_1 ]  14228.914592 s: 1           , DDR Cacheable       , Persistent  ,  128, 0.66    , 0x00000000
    [C7x_1 ]  14228.914637 s: 2           , L1D                 , Scratch     ,  128, 16.00   , 0x00000000
    [C7x_1 ]  14228.914682 s: 3           , L2                  , Scratch     ,  128, 448.00  , 0x00000000
    [C7x_1 ]  14228.914725 s: 4           , L3/MSMC             , Scratch     ,  128, 2944.00 , 0x00000000
     14228.915866 s:  VX_ZONE_ERROR: [ownContextSendCmd:1001] Command ack message returned failure cmd_status: -1
    [C7x_1 ]  14228.914766 s: 5           , DDR Cacheable       , Persistent  ,  128, 936.38  , 0x00000000
     14228.915892 s:  VX_ZONE_ERROR: [ownNodeKernelInit:704] Target kernel, TIVX_CMD_NODE_CREATE failed for node node_83
     14228.915905 s:  VX_ZONE_ERROR: [ownNodeKernelInit:705] Please be sure the target callbacks have been registered for this core
    [C7x_1 ]  14228.914809 s: 6           , DDR Non-cacheable   , Scratch     ,  128, 11.63   , 0x00000000
     14228.915917 s:  VX_ZONE_ERROR: [ownNodeKernelInit:706] If the target callbacks have been registered, please ensure no errors are occurl
     14228.915932 s:  VX_ZONE_ERROR: [ownGraphNodeKernelInit:793] kernel init for node 0, kernel com.ti.tidl:1:1 ... failed !!!
    [C7x_1 ]  14228.914850 s: 7           , DDR Non-cacheable   , Persistent  ,  128, 13551.25, 0x00000000
    [C7x_1 ]  14228.914893 s: 8           , DDR Non-cacheable   , Scratch     ,  128, 0.13    , 0x00000000
     14228.915977 s:  VX_ZONE_ERROR: [ TIDL subgraph 815 ] Node kernel init failed
    [C7x_1 ]  14228.914935 s: 9           , DDR Non-cacheable   , Scratch     ,  128, 3.13    , 0x00000000
     14228.915989 s:  VX_ZONE_ERROR: [ TIDL subgraph 815 ] Graph verify failed
    [C7x_1 ]  14228.914978 s: 10          , DDR Cacheable       , Persistent  ,  128, 1107.78 , 0x00000000
    [C7x_1 ]  14228.915021 s: 11          , DDR Cacheable       , Scratch     ,  128, 4096.25 , 0x00000000
    [C7x_1 ]  14228.915062 s: 12          , DDR Non-cacheable   , Persistent  ,  128, 0.13    , 0x00000000
    [C7x_1 ]  14228.915105 s: 13          , DDR Cacheable       , Persistent  ,  128, 1562.47 , 0x00000000
    [C7x_1 ]  14228.915147 s: 14          , DDR Non-cacheable   , Persistent  ,  128, 0.00    , 0x00000000
    [C7x_1 ]  14228.915191 s: 15          , DDR Cacheable       , Persistent  ,  128, 376.88  , 0x00000000
    [C7x_1 ]  14228.915220 s: --------------------------------------------
    
    # NETWORK_INIT_TIME = 267252537.93 (in ms, c7x @1GHz)
    [C7x_1 ]  14228.915245 s: Total memory size requirement (space wise):
    Error at line:   551 : in file /scratch/edgeai/yocto/arago-tmp-default-glibc/work/aarch64-oe-linux/ti-tidl/1.0.0/git/arm-tidl/rt/test/ar 
    Invalid Error Type!
    [C7x_1 ]  14228.915266 s: Mem Space , Size(KBytes)
    [C7x_1 ]  14228.915287 s: L1D       , 16.00   
    [C7x_1 ]  14228.915308 s: L2        , 448.00  
    [C7x_1 ]  14228.915328 s: L3/MSMC   , 2944.00 
    [C7x_1 ]  14228.915350 s: DDR Cacheable, 8080.42 
    [C7x_1 ]  14228.915372 s: DDR Non-cacheable, 13585.66
    [C7x_1 ]  14228.915396 s: --------------------------------------------
    [C7x_1 ]  14228.915429 s: NOTE: Memory requirement in host emulation can be different from the same on EVM
    [C7x_1 ]  14228.915467 s:       To get the actual TIDL memory requirement make sure to run on EVM with 
    [C7x_1 ]  14228.915490 s:       debugTraceLevel = 2
    [C7x_1 ]  14228.915500 s: 
    [C7x_1 ]  14228.915519 s: --------------------------------------------
    [C7x_1 ]  14228.915554 s:  VX_ZONE_ERROR: [tivxAlgiVisionAllocMem:194] Failed to Allocate memory record 3 @ space = 1 and size = 458752  
    [C7x_1 ]  14228.915583 s:  VX_ZONE_ERROR: [tivxAlgiVisionCreate:358] tivxAlgiVisionAllocMem Failed
    [C7x_1 ]  14228.915610 s:  VX_ZONE_ERROR: [tivxKernelTIDLCreate:980] tivxAlgiVisionCreate returned NULL
    root@j722s-evm:/opt/fs# vi fisheye_seg_inference_config.txt
    
    

    很容易注意到、当尝试分配 448KB L2 时程序失败、这导致了此故障。

    但是、如果您检查原始导入工具、您可以看到 j722 的 L2 大小限制为 224。 我相信您在运行导入时使用了错误的设备。

    # Size of L2 Aux SRAM Memory in KB which can be used by TIDL, Recommended value is
    # 224KB considering that 32KB of L2 is used for other purpose.
    L2MEMSIZE_KB           = 224
    # Size of L2 main SRAM Memory in KB which can be used by TIDL
    MSMCSIZE_KB            = 2048
    #ID for a Device, TDA4VMID = 0, TIDL_TDA4AEP = 1,  TIDL_TDA4AM = 2, TIDL_TDA4AMPlus = 3, TIDL_AM62A = 4
    DEVICE_NAME            = 4
    ENABLE_PERSIT_WT_ALLOC = 1
    DDRFREQ_MHZ            = 3200
    MATPANELSIZE           = 32
    

    请检查您的 device_config.cfg。

    此致、

    Adam