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.

[参考译文] RTOS/TDA2EVM5777:不能像-&quot 那样增加堆大小;程序不能放入可用内存"

Guru**** 2905430 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663868/rtos-tda2evm5777-cannot-increase-heap-size-much-as---program-will-not-fit-into-available-memory

器件型号:TDA2EVM5777
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我正在使用基于 TDA2xx 的 VAYU 视觉应用板、并尝试增加堆大小、因为我的应用需要更多的堆:

(TI.sysbios.堆.HeapMem:第221行:TI.sysbios.堆.HeapMem:第221行:内存不足:handle=0x86b884f0、size=7642640)

如您所见、创建一个类的实例时、它询问大约7 MB 的 RAM。

为了解决此问题、我尝试通过更改中的默认最大堆来增加堆 /links_fw/src/rtos/BIOS_app_common/tda2xx/ipu1_0/Ipu1_0.cfg

/*创建默认堆*/
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var heapMemParams = new HeapMem.Params ();
heapMemParams.size = 0x300000; 

但我不能超过2 MB。 我收到错误-  

"F:/obj/vision_sdk/tda2xx-evm/ipu1_0/debug/vision_sdk_configuro/linker_mod.cmd、第295行:错误:
程序将不能放入可用的内存中。 带对齐的照射行程放置
".bss:taskStackSection"大小为0x224000时失败。 可用内存
范围:
IPU1_0_DATA_MEM 大小:0xb00000未使用:0x1901a8最大孔:0x190194
错误:链接过程中遇到错误;


我阅读了有关移动 linker_mod.cmd 中的段以利用可用内存的内容、但无法理解如何使用。

我将使用 VISION SDK 3.1、并且仅将 ipu1_0用于我的应用。

因此、我在这里有多个问题:

看起来我无法增加堆、因为代码存储器等其他段占用更多的存储器。 我按照其中一个论坛中的建议从所有文件中删除了所有 printf、但这并没有太大帮助。

我想、虽然源代码传递给编译单元、并且优化标志设置为 O3、但所有未使用的函数都会自动删除。

我的最终调试二进制文件大小也更接近480 MB、我收到警告:  

警告:已溢出重定位到符号"__TI_exidx_linkTO_scn_start_14216";
33位重定位地址0x7946c194太大、无法在31位中编码
带符号的 PC 相关字段(类型='R_ARM_PREL31'(42)、文件=" "、
偏移= 0x00000000、段=
".arm.exidx.ducatiBoot:sysbios.aem4. ")
警告:输出文件
无法加载"f:/vision_sdk/bin/tda2xx-evm/vision_sdk_ipu1_0_debug.xem4"
并在目标系统上运行

是否有任何有关减小代码大小和分配更多堆内存的指针? 最多可以分配多少堆?

请检查所附的映射文件 linker_mod.cmd 和 cfg 文件。

e2e.ti.com/.../3487.attachment.zip

谢谢、

Shailesh

 

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

    附加查询:

    当我的应用程序不使用其他内核时、为什么其他内核代码和数据段出现在 linker_mod.cmd 中?

    我的应用视觉 SDK 配置文件具有以下配置:

    proc_IPU1_0_include=yes
    PROC_IPU1_include=no
    PROC_IPU2_include=no
    PROC_A15_0_include=no
    PROC_DSP1_include=no
    PROC_DSP2_include=no
    PROC_EVE1_include=no PROC_EVE1_include=no
    PROC_EVE2_include=no PROC_EVE2_include
    
    

    谢谢、

    Shailesh

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

    您能否尝试针对您的内存分配要求修改 vision_sdk/apps/build/tda2xx/mem_segure_define_BIOS.xs。
    另请查看 vision_sdk/docs/FeatureSpecificUserGuides/VisionSDK_UserGuide_MemoryMap.pdf 以了解更多详细信息。

    此致、
    Yordan