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:使用 TVM 导出 TIDL 模型、使用 DLR 推理显示无法加载 DLR 模型

Guru**** 2539500 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1130638/tda4vm-using-tvm-for-tidl-model-export-and-using-dlr-inference-shows-could-not-load-dlr-model

器件型号:TDA4VM

我尝试使用 TVM 将点云模型导出到 TIDL 模型中、并成功导出、然后生成了 eDeploy_lib.so 等。

然后、我使用 edgeeai-tidl-tools 示例 DLR 来运行模型推理、并遇到错误。

root@tda4vm-sk:/workspace/TI/awesome_tda4/tvm_import/runtime/edgeai-tidl-tools# ./bin/Release/dlr_runtime -f /workspace/TI/awesome_tda4/tvm_import/panolidar_export/ -i /workspace/TI/awesome_tda4/pytorch_tidl/images/0_3.bmp -v 1 -c 1

***** Display run Config: start *****
verbose level set to: 1
accelerated mode set to: 1
device mem set to: 1
loop count set to: 1
model path set to:
model artifacts path set to: /workspace/TI/awesome_tda4/tvm_import/panolidar_export/
image path set to: /workspace/TI/awesome_tda4/pytorch_tidl/images/0_3.bmp
device_type set to: cpu
labels path set to: test_data/labels.txt
num of threads set to: 4
num of results set to: 5
num of warmup runs set to: 2

***** Display run Config: end *****
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 !!!
  2413.533403 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
  2413.533529 s:  VX_ZONE_INIT:Enabled
  2413.533540 s:  VX_ZONE_ERROR:Enabled
  2413.533587 s:  VX_ZONE_WARNING:Enabled
  2413.534158 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
  2413.534458 s:  VX_ZONE_INIT:[tivxHostInitLocal:86] Initialization Done for HOST !!!
  2413.559158 s:  VX_ZONE_ERROR:[ownContextSendCmd:815] Command ack message returned failure cmd_status: -1
  2413.559178 s:  VX_ZONE_ERROR:[ownContextSendCmd:851] tivxEventWait() failed.
  2413.559274 s:  VX_ZONE_ERROR:[ownNodeKernelInit:538] Target kernel, TIVX_CMD_NODE_CREATE failed for node TVMNode
  2413.559288 s:  VX_ZONE_ERROR:[ownNodeKernelInit:539] Please be sure the target callbacks have been registered for this core
  2413.559335 s:  VX_ZONE_ERROR:[ownNodeKernelInit:540] If the target callbacks have been registered, please ensure no errors are occurring within the create callback of this kernel
  2413.559371 s:  VX_ZONE_ERROR:[ownGraphNodeKernelInit:583] kernel init for node 0, kernel com.ti.tvm ... failed !!!
  2413.559445 s:  VX_ZONE_ERROR:[vxVerifyGraph:2055] Node kernel init failed
  2413.559456 s:  VX_ZONE_ERROR:[vxVerifyGraph:2109] Graph verify failed
TVM_RT_OVX: ERROR: Verifying TVM graph ... Failed !!!
TVM_RT_OVX: ERROR: Verify OpenVX graph failed
  2413.561191 s:  VX_ZONE_INIT:[tivxHostDeInitLocal:100] De-Initialization Done for HOST !!!
  2413.565665 s:  VX_ZONE_INIT:[tivxDeInitLocal:193] De-Initialization Done !!!
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
IPC: Deinit ... !!!
IPC: DeInit ... Done !!!
MEM: Deinit ... !!!
MEM: Alloc's: 10 alloc's of 26024488 bytes
MEM: Free's : 10 free's  of 26024488 bytes
MEM: Open's : 0 allocs  of 0 bytes
MEM: Deinit ... Done !!!
APP: Deinit ... Done !!!
[03:06:56] ../src/dlr.cc:343: Error: [03:06:56] ../3rdparty/tvm/src/runtime/contrib/tidl/tidl_runtime.cc:639: Failed to initialize TVMRT for c7xgraph 0

Stack trace:
  [bt] (0) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0xfcf84) [0xffffa006cf84]
  [bt] (1) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0x2bbf0) [0xffff9ff9bbf0]
  [bt] (2) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0xc39e8) [0xffffa00339e8]
  [bt] (3) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0xfd694) [0xffffa006d694]
  [bt] (4) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0x6ad98) [0xffff9ffdad98]
  [bt] (5) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0xfd694) [0xffffa006d694]
  [bt] (6) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0x141b58) [0xffffa00b1b58]
  [bt] (7) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0x145eb0) [0xffffa00b5eb0]
  [bt] (8) /usr/lib/python3.8/site-packages/dlr/libdlr.so(+0x147be0) [0xffffa00b7be0]


[03:06:56.000.000000]:ERROR:[runInference:0101] Could not load DLR Model
[03:06:56.000.000028]:ERROR:[main:0409] Failed to run runInference

我使用/opt/vx_app_arm_remote_log 获取详细信息错误、我得到了  

[C7x_1 ]   2413.558809 s: << D L O A D >> ERROR: relocation overflow at vaddr 42fc9b4, rtype=28 reloc_value=fffffffffc665fc0
[C7x_1 ]   2413.558965 s:  VX_ZONE_ERROR:[tivxKernelTVMCreate:271] ERROR: Dsp dynamic loader failed.

如果我按如下方式生成模型的一部分、并且我可以成功生成模型和推理模型。

我想知道 DLR 不能加载整个模型的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有时、,错误消息是

    [C7x_1 ]  17278.755664 s: Could not Allocate memory for memtab 7 of size 330552060 in 17
    [C7x_1 ]  17278.755694 s: init_tidl_subgraph: alloc_mem_records failed

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

    有关"export TIDL_RT_DEBUG=3"的更多详细错误信息:

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

    您好、Yongchao、

      您尝试运行的模型超出了 C7x 的可用内存。  在 J721E 上、默认的 C7x_1本地堆大小为256MB。  您可以在 PSDK RTOS vision_apps/platform/j721e/rtos/app_mem_map.h 中查找此值  在其他 J7变体上、默认 C7x 堆大小可能为128MB。

    -Yuan

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

    /* DDR for c7x_1 for local heap [ size 256.00 MB ] */
    #define DDR_C7X_1_LOCAL_HEAP_ADDR (0x100000000u)
    #define DDR_C7X_1_LOCAL_HEAP_SIZE (0x10000000u)
    

    在 File、 vision_apps/platform/j721e/rtos/app_mem_map.h 中、我看到"DDR for c7x_1 for local heap [大小为256.00 MB ]"。 那么、我可以将其修改为1024MB 以部署我的模型吗? 或者还有其他方法可以部署我的模型?

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

    可以、可以修改存储器映射。  以下是 PSDK RTOS 中有关此主题的开发人员手册:https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/psdk_rtos/docs/user_guide/developer_notes_memory_map.html 

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

    我修改了相关文件、但仍然无法为超过256MB 的内存分配内存、我的步骤如下:

    1.修改 文件 gen_linker_mem_map.py 中的 DDR_mem_size_hi =1*GB

    2. Python  gen_linker_mem_map.py、将生成 K3-j721e-rtos-memory-map.dtsi 和 c7x_1

    3. 重建 DTB 并安装到 SD 卡中

    4.修改 My project 中包含 linker_mem_map.cmd、 j721e_linker_freertos.cmd、 main.c、 app_mem_map.h 的相关文件

    然后编译我的项目并在 TDA4VM 中运行。

    那么、我想知道是否有更详细的步骤要遵循? 在 c7x_1文件中、生成了其他文件。 有必要的话?

    将上载编译器所需的文件和 dtsi。

    e2e.ti.com/.../vision_5F00_app_5F00_1g.zip

    e2e.ti.com/.../k3_2D00_j721e_2D00_rtos_2D00_memory_2D00_map.dtsi.zip

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

    Yongchao、
    不能分配内存时是否有相同的日志?

    我使用此 SDK ti-processor-sdk-rtos-j721e-evm-08_02_00_05进行尝试、似乎是正常的

    首先、您需要在 RTOS SDK 上进行修改

    From af9fc787f6619d2214c69bd25048c4a78239b0d7 Mon Sep 17 00:00:00 2001
    From: Dongkangjia <dongkangjia@ti.com>
    Date: Wed, 7 Sep 2022 21:18:07 +0800
    Subject: [PATCH] add c7 local heap
    
    ---
     vision_apps/platform/j721e/rtos/app_mem_map.h |   4 +-
     .../j721e/rtos/c7x_1/linker_mem_map.cmd       |   4 +-
     .../platform/j721e/rtos/gen_linker_mem_map.py |   8 +-
     .../j721e/rtos/k3-j721e-rtos-memory-map.dtsi  | 296 ++++++++++--------
     .../j721e/rtos/system_memory_map.html         |   4 +-
     5 files changed, 174 insertions(+), 142 deletions(-)
    
    diff --git a/vision_apps/platform/j721e/rtos/app_mem_map.h b/vision_apps/platform/j721e/rtos/app_mem_map.h
    index eec5c15a..993c9e00 100755
    --- a/vision_apps/platform/j721e/rtos/app_mem_map.h
    +++ b/vision_apps/platform/j721e/rtos/app_mem_map.h
    @@ -247,9 +247,9 @@
     #define INTERCORE_ETH_DATA_MEM_ADDR (0xFB800000u)
     #define INTERCORE_ETH_DATA_MEM_SIZE (0x01800000u)
     
    -/* DDR for c7x_1 for local heap [ size 256.00 MB ] */
    +/* DDR for c7x_1 for local heap [ size 512.00 MB ] */
     #define DDR_C7X_1_LOCAL_HEAP_ADDR (0x100000000u)
    -#define DDR_C7X_1_LOCAL_HEAP_SIZE (0x10000000u)
    +#define DDR_C7X_1_LOCAL_HEAP_SIZE (0x20000000u)
     
     
     #endif /* APP_MEM_MAP_H */
    diff --git a/vision_apps/platform/j721e/rtos/c7x_1/linker_mem_map.cmd b/vision_apps/platform/j721e/rtos/c7x_1/linker_mem_map.cmd
    index b86e9ae0..36fd7be3 100644
    --- a/vision_apps/platform/j721e/rtos/c7x_1/linker_mem_map.cmd
    +++ b/vision_apps/platform/j721e/rtos/c7x_1/linker_mem_map.cmd
    @@ -94,6 +94,6 @@ MEMORY
         DDR_SHARED_MEM                    : ORIGIN = 0xB8000000 , LENGTH = 0x20000000
         /* DDR for c7x_1 for Scratch Memory [ size 368.00 MB ] */
         DDR_C7X_1_SCRATCH        ( RWIX ) : ORIGIN = 0xE4000000 , LENGTH = 0x17000000
    -    /* DDR for c7x_1 for local heap [ size 256.00 MB ] */
    -    DDR_C7X_1_LOCAL_HEAP     ( RWIX ) : ORIGIN = 0x100000000 , LENGTH = 0x10000000
    +    /* DDR for c7x_1 for local heap [ size 512.00 MB ] */
    +    DDR_C7X_1_LOCAL_HEAP     ( RWIX ) : ORIGIN = 0x100000000 , LENGTH = 0x20000000
     }
    diff --git a/vision_apps/platform/j721e/rtos/gen_linker_mem_map.py b/vision_apps/platform/j721e/rtos/gen_linker_mem_map.py
    index fc73b4f6..56189e8c 100755
    --- a/vision_apps/platform/j721e/rtos/gen_linker_mem_map.py
    +++ b/vision_apps/platform/j721e/rtos/gen_linker_mem_map.py
    @@ -118,7 +118,7 @@ ddr_mem_size  = 1*GB + 432*MB; # Last 64MB is used by Linux
     
     ddr_mem_addr_hi_phy = 0x880000000;
     ddr_mem_addr_hi = 0x100000000;
    -ddr_mem_size_hi = 256*MB;
    +ddr_mem_size_hi = 512*MB;
     
     msmc_mem_addr = 0x70000000;
     main_ocram_mem_addr = 0x03600000;
    @@ -434,9 +434,7 @@ tiovx_log_rt_mem     = MemSection("TIOVX_LOG_RT_MEM" , "", tiovx_log_rt_mem_addr
     
     ipc_vring_mem      = MemSection("IPC_VRING_MEM"     , "", ipc_vring_mem_addr     , ipc_vring_mem_size     , "Memory for IPC Vring's. MUST be non-cached or cache-coherent");
     ipc_vring_mem.setDtsName("vision_apps_rtos_ipc_memory_region", "vision-apps-rtos-ipc-memory-region");
    -ipc_vring_mem.setAlignment(True)
    -ipc_vring_mem.setPrintCompatibility(False)
    -ipc_vring_mem.setOriginTag(False);
    +
     
     vision_apps_ddr_total  = MemSection("DDR_VISION_APPS_DTS", "", 0                      , 0                      , "DDR for Vision Apps for all sections, used for reserving memory in DTS file");
     vision_apps_ddr_total.concat(app_log_mem);
    @@ -472,7 +470,7 @@ c7x_1_ddr_local_heap_phy  = MemSection("DDR_C7X_1_LOCAL_HEAP", "RWIX", ddr_mem_a
     vision_apps_core_heaps_hi = MemSection("DDR_VISION_APPS_CORE_HEAPS_HI_DTS", "", 0, 0, "Vision Apps Core Heaps in 40bit address range of DDR");
     vision_apps_core_heaps_hi.concat(c7x_1_ddr_local_heap_phy);
     vision_apps_core_heaps_hi.setDtsName("vision_apps_core_heaps_hi", "vision-apps-core-heap-memory-hi");
    -vision_apps_core_heaps_hi.splitOrigin(True)
    +
     
     # This region is for ethernet firmware, multi-core, multi-cast feature
     intercore_eth_desc_mem = MemSection("INTERCORE_ETH_DESC_MEM", "", mcu2_1_ddr_intercore_eth_desc_addr, mcu2_1_ddr_intercore_eth_desc_size, "Inter-core ethernet shared desc queues. MUST be non-cached or cache-coherent");
    diff --git a/vision_apps/platform/j721e/rtos/k3-j721e-rtos-memory-map.dtsi b/vision_apps/platform/j721e/rtos/k3-j721e-rtos-memory-map.dtsi
    index 0f793ebb..d5f61def 100644
    --- a/vision_apps/platform/j721e/rtos/k3-j721e-rtos-memory-map.dtsi
    +++ b/vision_apps/platform/j721e/rtos/k3-j721e-rtos-memory-map.dtsi
    @@ -1,142 +1,176 @@
     
      
      /* 
    -  * IMPORTANT NOTE: Follow below instructions to apply the updated memory map to linux dtsi file, 
    +  * IMPORTANT NOTE: Follow below instructions to apply the updated memory map to linux dts/dtso/dtsi files, 
       * 
       * 1. Copy the memory sections, from the generated dts file, to the file shown below under reserved_memory: reserved-memory { ... } 
    -  *     ${LINUX_KERNEL_PATH}/arch/arm64/boot/dts/ti/k3-j721e-rtos-memory-map.dtsi
    +  *     ${LINUX_KERNEL_PATH}/arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi
       * 
    -  * 2. Rebuild the dtb, dtbo from PSDK Linux install directory 
    -  *      make linux-dtbs 
    +  * 2. In file ${LINUX_KERNEL_PATH}/arch/arm64/boot/dts/ti/k3-j721e-vision-apps.dtso
    +  *   - Remove the references to the associated sections.  These sections will have "vision_apps-" appended
    +  *   - For example, if you are updating the section "mcu_r5fss0_core1_dma_memory_region", you will need to remove the following:
    +  *      1. &mcu_r5fss0_core1_dma_memory_region section disabled
    +  *      2. Reserving vision_apps_mcu_r5fss0_core1_dma_memory_region memory
    +  *      3. Setting vision_apps_mcu_r5fss0_core1_dma_memory_region memory region to mcu_r5fss0_core1 node
       * 
    -  * 3. Install the dtb, dtbo to the rootfs/boot folder on SD card 
    -  *      sudo make linux-dtbs_intall; sync 
    +  * 3. The entries are removed since the same are updated in k3-j721e-som-p0.dtsi, hence we should not have duplicate outdated one's 
       * 
    -   */
    +  * 4. Rebuild the dtb, dtbo and use the updated dtb, dtbo files 
    +  *    - In PSDK Linux install directory, doing below should build the dtb and dtbo 
    +  *         make linux-dtbs 
    +  *    - Copy the below updated dtb, dtbo files to "boot/" folder in your target linux SD card filesystem 
    +  *         arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
    +  *         arch/arm64/boot/dts/ti/k3-j721e-vision-apps.dtbo
    +  */
     
     
    -	vision_apps_mcu_r5fss0_core0_dma_memory_region: vision-apps-r5f-dma-memory@a0000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa0000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_mcu_r5fss0_core0_memory_region: vision-apps-r5f-memory@a0100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa0100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_mcu_r5fss0_core1_dma_memory_region: vision-apps-r5f-dma-memory@a1000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa1000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_mcu_r5fss0_core1_memory_region: vision-apps-r5f-memory@a1100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa1100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core0_dma_memory_region: vision-apps-r5f-dma-memory@a2000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa2000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core0_memory_region: vision-apps-r5f-memory@a2100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa2100000 0x00 0x01f00000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core1_dma_memory_region: vision-apps-r5f-dma-memory@a4000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa4000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core1_memory_region: vision-apps-r5f-memory@a4100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa4100000 0x00 0x01f00000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss1_core0_dma_memory_region: vision-apps-r5f-dma-memory@a6000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa6000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss1_core0_memory_region: vision-apps-r5f-memory@a6100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa6100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss1_core1_dma_memory_region: vision-apps-r5f-dma-memory@a7000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa7000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss1_core1_memory_region: vision-apps-r5f-memory@a7100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa7100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_c66_1_dma_memory_region: vision-apps-c66-dma-memory@a8000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa8000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_c66_0_memory_region: vision-apps-c66-memory@a8100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa8100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_c66_0_dma_memory_region: vision-apps-c66-dma-memory@a9000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa9000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_c66_1_memory_region: vision-apps-c66-memory@a9100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xa9100000 0x00 0x00f00000>;
    -		no-map;
    -	};
    -	vision_apps_c71_0_dma_memory_region: vision-apps-c71-dma-memory@aa000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xaa000000 0x00 0x00100000>;
    -		no-map;
    -	};
    -	vision_apps_c71_0_memory_region: vision-apps-c71-memory@aa100000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xaa100000 0x00 0x04f00000>;
    -		no-map;
    -	};
    -	vision_apps_rtos_ipc_memory_region: vision-apps-rtos-ipc-memory-region {
    -		reg = <0x00 0xb0000000 0x00 0x02000000>;
    -		alignment = <0x1000>;
    -		no-map;
    -	};
    -	vision_apps_memory_region: vision-apps-dma-memory@b2000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xb2000000 0x00 0x06000000>;
    -		no-map;
    -	};
    -	vision_apps_shared_region: vision_apps_shared-memories {
    -		compatible = "dma-heap-carveout";
    -		reg = <0x00 0xb8000000 0x00 0x20000000>;
    -	};
    -	vision_apps_core_heaps_lo: vision-apps-core-heap-memory-lo@d8000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xd8000000 0x00 0x23000000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core0_shared_memory_queue_region: vision-apps-r5f-virtual-eth-queues@fb000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xfb000000 0x00 0x00800000>;
    -		no-map;
    -	};
    -	vision_apps_main_r5fss0_core0_shared_memory_bufpool_region: vision-apps-r5f-virtual-eth-buffers@fb800000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x00 0xfb800000 0x00 0x01800000>;
    -		no-map;
    -	};
    -	vision_apps_core_heaps_hi: vision-apps-core-heap-memory-hi@880000000 {
    -		compatible = "shared-dma-pool";
    -		reg = <0x08 0x80000000 0x00 0x10000000>;
    -		no-map;
    -	};
    +        vision_apps_mcu_r5fss0_core0_dma_memory_region: vision-apps-r5f-dma-memory@a0000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa0000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_mcu_r5fss0_core0_memory_region: vision-apps-r5f-memory@a0100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa0100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_mcu_r5fss0_core1_dma_memory_region: vision-apps-r5f-dma-memory@a1000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa1000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_mcu_r5fss0_core1_memory_region: vision-apps-r5f-memory@a1100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa1100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core0_dma_memory_region: vision-apps-r5f-dma-memory@a2000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa2000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core0_memory_region: vision-apps-r5f-memory@a2100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa2100000 0x00 0x01f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core1_dma_memory_region: vision-apps-r5f-dma-memory@a4000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa4000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core1_memory_region: vision-apps-r5f-memory@a4100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa4100000 0x00 0x01f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss1_core0_dma_memory_region: vision-apps-r5f-dma-memory@a6000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa6000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss1_core0_memory_region: vision-apps-r5f-memory@a6100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa6100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss1_core1_dma_memory_region: vision-apps-r5f-dma-memory@a7000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa7000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss1_core1_memory_region: vision-apps-r5f-memory@a7100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa7100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c66_1_dma_memory_region: vision-apps-c66-dma-memory@a8000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa8000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c66_0_memory_region: vision-apps-c66-memory@a8100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa8100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c66_0_dma_memory_region: vision-apps-c66-dma-memory@a9000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa9000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c66_1_memory_region: vision-apps-c66-memory@a9100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xa9100000 0x00 0x00f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c71_0_dma_memory_region: vision-apps-c71-dma-memory@aa000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xaa000000 0x00 0x00100000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_c71_0_memory_region: vision-apps-c71-memory@aa100000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xaa100000 0x00 0x04f00000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_rtos_ipc_memory_region: vision-apps-rtos-ipc-memory-region@b0000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xb0000000 0x00 0x02000000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_memory_region: vision-apps-dma-memory@b2000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xb2000000 0x00 0x06000000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_shared_region: vision_apps_shared-memories {
    +            compatible = "dma-heap-carveout";
    +            reg = <0x00 0xb8000000 0x00 0x20000000>;
    +        };
    +        
    +        vision_apps_core_heaps_lo: vision-apps-core-heap-memory-lo@d8000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xd8000000 0x00 0x23000000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core0_shared_memory_queue_region: vision-apps-r5f-virtual-eth-queues@fb000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xfb000000 0x00 0x00800000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_main_r5fss0_core0_shared_memory_bufpool_region: vision-apps-r5f-virtual-eth-buffers@fb800000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0xfb800000 0x00 0x01800000>;
    +            no-map;
    +        };
    +        
    +        vision_apps_core_heaps_hi: vision-apps-core-heap-memory-hi@880000000 {
    +            compatible = "shared-dma-pool";
    +            reg = <0x00 0x880000000 0x00 0x20000000>;
    +            no-map;
    +        };
    +        
     
    diff --git a/vision_apps/platform/j721e/rtos/system_memory_map.html b/vision_apps/platform/j721e/rtos/system_memory_map.html
    index 7a7101d1..703bfe1c 100644
    --- a/vision_apps/platform/j721e/rtos/system_memory_map.html
    +++ b/vision_apps/platform/j721e/rtos/system_memory_map.html
    @@ -515,8 +515,8 @@
                 <tr>
                     <td class="tg-6sgx">DDR_C7X_1_LOCAL_HEAP</td>
                     <td class="tg-6sgx">0x100000000</td>
    -                <td class="tg-6sgx">0x10FFFFFFF</td>
    -                <td class="tg-6sgx">256.00 MB</td>
    +                <td class="tg-6sgx">0x11FFFFFFF</td>
    +                <td class="tg-6sgx">512.00 MB</td>
                     <td class="tg-6sgx">RWIX</td>
                     <td class="tg-6sgx">DDR for c7x_1 for local heap</td>
                 </tr>
    -- 
    2.17.1
    

    cd vision_apps

    创建 SDK -J8

    使 linux_fs_install_sd 成为文件

    然后、您需要按照此操作来修改 Linux SDK DTS

    ti-processor-sdk-linux-j7-evm-08_02_00_03/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/boot/dts/ti$ git diff k3-j721e-rtos-memory-map.dtsi
    diff --git a/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/boot/dts/ti/k3-j721e-rtos-memory-map.dtsi b/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/boot/dts/ti/k3-j721e-rtos-memory-map.dtsi
    index 3f5b7c4ca..8d026ee0b 100644
    --- a/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/boot/dts/ti/k3-j721e-rtos-memory-map.dtsi
    +++ b/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/boot/dts/ti/k3-j721e-rtos-memory-map.dtsi
    @@ -232,7 +232,7 @@
            };
            vision_apps_core_heaps_hi: vision-apps-core-heap-memory-hi@880000000 {
                    compatible = "shared-dma-pool";
    -               reg = <0x08 0x80000000 0x00 0x10000000>;
    +               reg = <0x08 0x80000000 0x00 0x20000000>;
                    no-map;
            };
     };

    Linux SDK 执行  

    全部使用-J24

    进行安装

    cp ./targetNFS/boot /*/media/$USER/ROOFTS/BOOT

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

    您好、Yongchao、

      只是想给你另一个数据点,除了康佳所说的。

      我针对 C7x 测试了以下存储器映射、将暂存堆从368MB 缩小到112MB、将本地堆从256MB 增加到512MB、以便我保持"DDR_mem_size_hi"不变。  "DDR_mem_size_hi"需要反映暂存堆和本地堆的总大小。  请参见差动。

    --- gen_linker_mem_map.py.orig	2022-09-06 17:27:52.348303742 -0500
    +++ gen_linker_mem_map.py	2022-09-07 10:29:31.448580699 -0500
    @@ -118,7 +118,7 @@
     
     ddr_mem_addr_hi_phy = 0x880000000;
     ddr_mem_addr_hi = 0x100000000;
    -ddr_mem_size_hi = 624*MB;
    +ddr_mem_size_hi = 624*MB; # now 112+512, previously 368+256
     
     msmc_mem_addr = 0x70000000;
     main_ocram_mem_addr = 0x03600000;
    @@ -284,10 +284,10 @@
     ddr_intercore_eth_data_size = 24*MB;
     
     c7x_1_ddr_scratch_addr     = ddr_mem_addr_hi;
    -c7x_1_ddr_scratch_size     = 368*MB;
    +c7x_1_ddr_scratch_size     = 112*MB;  #368*MB;
     
     c7x_1_ddr_local_heap_addr  = c7x_1_ddr_scratch_addr + c7x_1_ddr_scratch_size;
    -c7x_1_ddr_local_heap_size  = 256*MB;
    +c7x_1_ddr_local_heap_size  = 512*MB;  # 256*MB;
     
     #
     # Create memory section based on addr and size defined above, including
    

      然后在 vision_apps 中重建 SDK 并安装更新的 Linux 文件系统。

      您可以验证 c7x 固件映射文件中的更新更改:

    vision_apps$ head -n 30 out/J7/C71/FREERTOS/release/vx_app_rtos_linux_c7x_1.out.map | tail -n 5
      DDR_SHARED_MEM        0000b8000000   20000000  00000000  20000000  RWIX
      DDR_C7X_1_SCRATCH     000100000000   07000000  07000000  00000000  RWIX
      DDR_C7X_1_LOCAL_HEAP  000107000000   20000000  20000000  00000000  RWIX
    

      "DDR_mem_size_hi"需要反映在器件树中的整个系统映射中。  请注意"shared-dma-pool"中的大小"0x27000000"、起始地址为0x8_8000_0000。  因此、有关重新编译 dtbs 的说明。

            vision_apps_core_heaps_hi: vision-apps-core-heap-memory-hi@880000000 {
                    compatible = "shared-dma-pool";
                    reg = <0x08 0x80000000 0x00 0x27000000>;
                    no-map;
            };
    

      由于我保持"DDR_mem_size_hi"的整体不变、因此我不需要更新 EVM 目标文件系统上的现有 dtbs。  如果修改了总大小、请在 dtsi 文件中进行相应更改、重新生成 dtbs、然后复制到您的 EVM。  重新启动。

      您可以通过查看/proc/iomem 来验证 EVM 上刻出的"共享 DAM-POOL "区域。  如果您修改了 C7x 的总"DDR_mem_size_hi"、则应在重建 dtbs 后在此处反映。

    # cat /proc/iomem | grep 880000000
    880000000-8a6ffffff : reserved
    

      希望这对您有所帮助。

    -Yuan

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

    在修改 dtsi 并重新构建 visionapp 后、我仍然无法分配1G 内存、并且我使用 vision_app basic_demo app_mem 进行 alloc mem 测试 ,错误消息如下,每次在 APP_MEM_HEAP_DDR 中执行350MB 的 alloc 操作。 它只成功了一次。

    root@tda4vm-sk:/opt/out/J7/A72/LINUX/release# ./vx_app_arm_mem.out
    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 !!!
      1488.796528 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
    APP_MEM: 0: Allocated memory @ 0xffff73960000 of size 367001600 bytes
    APP_MEM: 0: Translated virtual addr = 0xffff73960000 -> phyical addr = b8000000
    APP_MEM: 0: Exported dmaBufId 16 with offset 0
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 1: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 2: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 3: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 4: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 5: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 6: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 7: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 8: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 9: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 10: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 11: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 12: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 13: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 14: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 15: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 16: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 17: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 18: ERROR: Unable to allocate memory size 367001600 bytes
    MEM: ERROR: Alloc failed with status = 12 !!!
    APP_MEM: 19: ERROR: Unable to allocate memory size 367001600 bytes
    APP_MEM: elasped time for data processing is 204243 usecs
    APP_MEM: 0: Free'ed memory @ 0xffff73960000 of size 367001600 bytes
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
    IPC: Deinit ... !!!
    IPC: DeInit ... Done !!!
    MEM: Deinit ... !!!
    MEM: Alloc's: 1 alloc's of 367001600 bytes
    MEM: Free's : 1 free's  of 367001600 bytes
    MEM: Open's : 0 allocs  of 0 bytes
    MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!

    ddr_mem_addr_hi_phy = 0x880000000;
    ddr_mem_addr_hi = 0x100000000;
    #ddr_mem_size_hi = 256*MB;
    ddr_mem_size_hi = 1*GB;

    我将其修改为1GB、然后运行 python gen_linker_mem_map.py、然后更新 dtsi

    在我的器件中、我检查 DDR_LOCAL_HEAP 是否已由更新  

    root@tda4vm-sk:/opt/out/J7/A72/LINUX/release# hexdump /proc/device-tree/reserved-memory/vision-apps-core-heap-memory-hi@880000000/reg
    0000000 0000 0800 0080 0000 0000 0000 0040 0000
    0000010

    40xxxxxx 意味着1G 用于 DDR 本地堆。

    然后、我使用 make vision_apps -J4构建 vision_apps、它将生成 ./vx_app_arm_mem.out 文件。

    然后、我在 TDA4VM 器件中对输出文件执行 Coye 操作并运行 ./vx_app_arm_mem.out 、该消息如上所示。

    我堆叠文件 .../../../FreeRTOS/release/vx_app_rtos_linux_c7x_1.out.map

    root@tda4vm-sk:/opt/out/J7/A72/LINUX/release# head -n 30 ../../../C71/FREERTOS/release/vx_app_rtos_linux_c7x_1.out.map
    ******************************************************************************
                         C7x Linker Unix v2.1.1
    ******************************************************************************
    >> Linked Fri Sep  9 09:12:15 2022
    
    OUTPUT FILE NAME:   </workspace/ti-processor-sdk-rtos-j721e-evm-08_02_00_05/vision_apps/out/J7/C71/FREERTOS/release/vx_app_rtos_linux_c7x_1.out>
    ENTRY POINT SYMBOL: "_c_int00_secure"  address: 0000aa200000
    
    
    MEMORY CONFIGURATION
    
             name            origin         length     used     unused   attr    fill
    ----------------------  ------------   --------  --------  --------  ----  --------
      L2RAM_C7x_1           000064800000   00070000  00070000  00000000  RWIX
      L1RAM_C7x_1           000064e00000   00004000  00004000  00000000  RWIX
      MSMC_C7x_1            000070020000   007c8000  007c8000  00000000  RWIX
      DDR_C7x_1_IPC         0000aa000000   00100000  00000000  00100000  RWIX
      DDR_C7x_1_RESOURCE_TA 0000aa100000   00000400  00000098  00000368  RWIX
      DDR_C7x_1_BOOT        0000aa200000   00000400  00000080  00000380  RWIX
      DDR_C7x_1_VECS        0000aa400000   00004000  00000880  00003780  RWIX
      DDR_C7x_1_SECURE_VECS 0000aa600000   00004000  00000880  00003780  RWIX
      DDR_C7x_1             0000aa604000   049fc000  00ff1092  03a0af6e  RWIX
      IPC_VRING_MEM         0000b0000000   02000000  02000000  00000000  RWIX
      APP_LOG_MEM           0000b2000000   00040000  00040000  00000000  RWIX
      TIOVX_OBJ_DESC_MEM    0000b2040000   03fa0000  00fc0000  02fe0000  RWIX
      DDR_SHARED_MEM        0000b8000000   20000000  00000000  20000000  RWIX
      DDR_C7X_1_SCRATCH     0000e4000000   17000000  17000000  00000000  RWIX
      DDR_C7X_1_LOCAL_HEAP  000100000000   40000000  40000000  00000000  RWIX

    那么、为什么我不能分配更多内存呢?

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

     gen_linker_mem_map.py 与我的看起来不同。

    同时 、您的 DDR_C7X_1_Scratch 来自  000100000000。但是、我 的 DDR_C7X_1_LOCAL 堆从 000100000000开始

    root@tda4vm-sk:/opt/out/J7/A72/LINUX/release# head -n 30 ../../../C71/FREERTOS/release/vx_app_rtos_linux_c7x_1.out.map
    ******************************************************************************
                         C7x Linker Unix v2.1.1
    ******************************************************************************
    >> Linked Fri Sep  9 09:12:15 2022
    
    OUTPUT FILE NAME:   </workspace/ti-processor-sdk-rtos-j721e-evm-08_02_00_05/vision_apps/out/J7/C71/FREERTOS/release/vx_app_rtos_linux_c7x_1.out>
    ENTRY POINT SYMBOL: "_c_int00_secure"  address: 0000aa200000
    
    
    MEMORY CONFIGURATION
    
             name            origin         length     used     unused   attr    fill
    ----------------------  ------------   --------  --------  --------  ----  --------
      L2RAM_C7x_1           000064800000   00070000  00070000  00000000  RWIX
      L1RAM_C7x_1           000064e00000   00004000  00004000  00000000  RWIX
      MSMC_C7x_1            000070020000   007c8000  007c8000  00000000  RWIX
      DDR_C7x_1_IPC         0000aa000000   00100000  00000000  00100000  RWIX
      DDR_C7x_1_RESOURCE_TA 0000aa100000   00000400  00000098  00000368  RWIX
      DDR_C7x_1_BOOT        0000aa200000   00000400  00000080  00000380  RWIX
      DDR_C7x_1_VECS        0000aa400000   00004000  00000880  00003780  RWIX
      DDR_C7x_1_SECURE_VECS 0000aa600000   00004000  00000880  00003780  RWIX
      DDR_C7x_1             0000aa604000   049fc000  00ff1092  03a0af6e  RWIX
      IPC_VRING_MEM         0000b0000000   02000000  02000000  00000000  RWIX
      APP_LOG_MEM           0000b2000000   00040000  00040000  00000000  RWIX
      TIOVX_OBJ_DESC_MEM    0000b2040000   03fa0000  00fc0000  02fe0000  RWIX
      DDR_SHARED_MEM        0000b8000000   20000000  00000000  20000000  RWIX
      DDR_C7X_1_SCRATCH     0000e4000000   17000000  17000000  00000000  RWIX
      DDR_C7X_1_LOCAL_HEAP  000100000000   40000000  40000000  00000000  RWIX

    因此、它似乎不起作用

    e2e.ti.com/.../gen_5F00_linker_5F00_mem_5F00_map.py.zip

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

    我明白了。  我正在研究开发分支、似乎自 PSDK 8.2发布以来、内存映射发生了变化。

    但更改存储器映射的机制应该起作用。  您可能已经启动并运行了更新的1GB C7x_1_local_heap。

    Vx_app_arm_mem.out 从"DDR_shared_mem"(默认为512MB)分配内存、而不是从"c7x_1_DDR_local_heap "分配内存。  这就是您分配的第一个350MB 成功但第二个350MB 失败的原因。

    原始帖子中的错误消息是"c7x_1_DDR_local_heap "中的分配失败。  现在、您可以再次尝试您的应用。

    简单回顾一下:

    -更新内存映射、重新构建 SDK

    -选中 vx_app_rtos_linux_c7x_1.out.map、确保更新的 vx_app_rtos_linux_c7x_1.out 作为新的 C7x 固件复制到 EVM

    -重建 dtB/dtbo、复制到 evm/boot

    -重新启动 EVM、确保新的保留存储器就位(请访问/proc/iomem)

    -测试您的应用程序

    -Yuan