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.

[参考译文] 编译器:链接时出现 malloc 警告

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/662300/compiler-malloc-warning-while-linking

工具/软件:TI C/C++编译器

大家好、

我面临一些链接问题、需要您的帮助才能解决。 我的步骤如下。 使用 CCS 7、4进行编译、并将 ccs5.4用于仿真器(我认为 CCS 版本不是问题)

我正在为 EVE 创建简单的项目、它在仿真器上编译和运行良好(由于某些原因、我正在使用仿真器而不是实际的硬件)。

现在、如果我在同一个项目中使用 malloc 进行图像处理、我会收到以下警告(这里的好处是它会创建.out 文件)、并且当我运行程序时、我会看到一些警告、并且无法获得预期的输出。
我想、如果编译警告我可以删除所有内容、一切都可以正常运行、但无法幸运地摆脱这种情况。

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

编译警告

'生成文件:"../src_kernelC/vcop_array_add_uns_char.c"
'调用:EVE 编译器'
"d:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/bin/cl-arp32 -v210 -g -include_path="D:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/include/vcop --include_path="D:/TI-Automotive/for_CCS_7.3/workspace_eve/array_add_uns_char --include_path="D:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/include --diag_warning=225 --display_error_number --diag_char=off --preobj_with_compile --preproc_dependence="d_kernel_crue_c_content_cranagons/v_cranag_zh_c_content_file_content_zh-cn/microcontrollers_zh-cn/microcontrollers/c_cran.c.h 。
'完成构建:"../src_kernelC/vcop_array_add_uns_char.c"
 
'构建目标:"array_add_uns_char.out"
'调用:EVE 链接器'
"d:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/bin/cl-arp32 "-v210 -g -diag_warning=225 --display_error_number --diag_wrap=off -z -m"array_add_uns_char.map"-"D:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/lib -"D:/TI-Automotive/for_CCS_7.3/ccs7.4/ccsv7/tools/compiler/arp32_1.0.9/include --reread_libs --warn_sections --xml_link_info="linkg_line_linkg_rom_line_linkg_rom_linkg_zh_linker "_linkg_rom_line_linkg_zh_rom_linkg_rom_linker .cn/linkg_zh_rom_linkg_rom_rom_linker  

警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemha"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemhb"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemla"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemlb"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".wmim"

'已完成的构建目标:"array_add_uns_char.out"

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

在仿真器上运行输出时发出警告

EVE_1:警告:MULTI_EVE_SUBSYSTEM.EVE_0.MEM_SWITCH:对保留空间的无效访问 MULTI_EVE_SUBSYSTEM.EVE_0.MEM_SWITCH:对保留空间的无效访问 MULTI_EVE_SUBSYSTEM.EVE_0.ME_RESERVE_ME_ME_SWITCH:对 RESERVE_ME_ME_ME_RESERVE_ME_ME.EVE_ME_SUBSYSTEM.REP.0.RESERVE_ME_RESERVE_ME_RESER.EVE_ME_ME_ME_RESERVE_ME_ME_RESER.REP.EVE_ME_RESER.ME_ME_RESERVE_ME_RESER.REP.0.ME_ME_ME_ME_ME_RESERVE_ME_ME_RESERVE_ME_RESER 对保留空间 multi_eve_subsystem.eve_0.MEM_switch 的访问无效:对保留空间 multi_eve_subsystem.eve_0.MEM_switch 的访问无效:对保留空间 multi_eve_subsystem.eve_0.mem_switch 的访问无效:对保留空间 multi_eve_subsystem.eve_0.MEM_switch 的访问无效:对保留空间 multi_eve_subsystem .eve_switch.eve_reserve.

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

谢谢、

穆罕默德

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

    您需要从...开始

    [引用 user="Mohammed Zakariya Ansari"]警告#10247-D:创建不带 SECTIONS 规范的输出段".imemha"
    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemhb"
    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemla"
    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".imemlb"
    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".wmim"

    您永远不应该看到它。  这是由链接器命令文件中缺少条目导致的。  在您的情况 下、它是文件"../src_kernelC/linker.cmd"。  另一种不太可能的可能性是您缺少链接器命令文件。  此链接器命令文件来自哪里?  如果你写了它、我可以直接与你一起处理细节。  如果您是从 TI 的其他团队那里获得的、那么最好与他们一起解决这个问题。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的提示、

    我用于此项目的更新链接器文件随 SDK 安装(EVE 软件版本包)一起提供。 当我编译代码时(例如、针对 sobre el 算法)、代码会编译、运行并提供预期的输出、但一旦我修改同一程序(例如、我是用于矢量处理的 malloc)、我在编译时会看到此警告。

    感谢您的任何帮助。

    谢谢、

    穆罕默德

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

    我已将您的问题转交给 EVE 专家。

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

    谢谢 Yordan、

    正在等待更新...

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

    Yordan、

    我正在附加应用程序、内核和链接器文件以供参考、看看它是否对大家有所帮助。 在使用之前、请按如下所示更改扩展名

    app.txt 至 app.c

    gradient.txt 更改为梯度

    link.vcop.txt 至 link.vcop.cmd

    gradient.h 中的内容如下所示

    void vcop_vec_deladiveladive.
    (
    __vptr_uint8 in_ptr,
    _vptr_uint8 out_ptr、
    无符号短宽度、
    无符号短高度
    );

    如果需要更多详细信息、请附加项目.rar 文件。

    感谢您的帮助。

    谢谢、

    穆罕默德

    e2e.ti.com/.../eve_5F00_sample_5F00_kernel.rar

    e2e.ti.com/.../gradient.txte2e.ti.com/.../app.txte2e.ti.com/.../link.vcop.txt

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

    您好、Mohamed、

      您能在 构建中定义 VCOP_CAMA 并尝试一下。

    此致、

    安州
     

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

    您好、安州、

    您是否意味着在诸如"gmake -k VCOP_CAMPA"的构建选项中添加"VCOP_CAMPA"?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在链接器文件中添加了"#define VCOP_CAMA",我可以在没有警告的情况下对其进行编译,如果它解决了我在执行程序时遇到的问题,我将进行更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、安州、

    "#define VCOP_CAMP"解决了我的警告问题、但它不会更改输出、我是说我看到的输出图像与输入图像相同、而不是影响处理、如果我错误地使用矢量或其他任何东西、您能提供同样的帮助吗?

    谢谢、
    穆罕默德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    穆罕默德
    我看到您在您的文件中请求两个缓冲区:
    输入数据 =(uint8_t *) vcop_malloc (VCOP_IBUFHA、image_width* image_height * sizeof (uint8_t));
    outputData =(uint8_t *) vcop_malloc (VCOP_IBUFHA、image_width* image_height * sizeof (uint8_t));

    在同一个存储器(VCOP_IBUFHA)中请求这两个缓冲区、并且给定您用于 image_width 和 image_height vcop_malloc 的大小、这两个缓冲区都应该失败、因为您只有16KB 的 IBUFHA 缓冲区、并且您正在为每个缓冲区请求接近25KB 的缓冲区。 您能否检查您是否获得了这些缓冲区的有效指针。

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

    安州
    您的大小大约为25 KB (但是、当我引用示例代码时、它们仅以这种方式分配内存)、这里的可能解决方案是什么? 是否应使用 BAM 处理来自图像的小数据? 或任何快速解决方案? 实际上、我需要非常简单的可演示内核、我的目的不是使用所有功能来减少处理...
    无论如何,让我知道我也应该做些什么。
    感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否指出您所指的示例?
    如果只是为了了解如何对内核进行编程、您只需减小输入和输出数据的大小(例如、只需处理32x32块)即可将其放入 EVE 的内部存储器中。

    此致、
    安州
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我可以使用图像块,而不是读取所有图像和处理,对吧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这最终是您必须处理的方式。 但一开始、您只需处理一个块数据即可了解内核编程并测试您的内核功能。 验证后、您将必须使用 EDMA 将数据放入更小的块并进行处理。

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

    您好、安州、

    感谢您的帮助、

    我遇到的两个主要问题是大小和链接器。 现在、我很高兴开始、它解决了。