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.

[参考译文] am2434 _sbrk ()函数代码

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1276505/am2434-_sbrk-function-code

您好!

我使用的是 AM2434-EVM。

有时,当我使用 malloc 时,代码会转至我没有的_sbrk ()函数-所以我把它执行为空。

在哪里可以找到实现方式?

谢谢。

Eli

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

    尊敬的 Eli:

    malloc 是一个在 stdlib.h 中定义并包含在 libc.a 中的标准 C 函数。 sbrk 是 malloc 可以使用的较低级别的函数。 如果需要、它应该包含在 libc.a 中。 您无需实现_sbrk。

    例如,我可以通过添加以下代码段,在 empty.c (空项目)中添加 malloc()调用:

    ...

    #包含

    ...

    void * buf_ptr=NULL;
    void empty_main (void *args)
    {
      /*打开驱动程序以打开控制台的 UART 驱动程序*/
      drivers_open();
      Board_driversOpen();

      buf_ptr = malloc (1024);

      DebugP_log ("所有测试均已通过!!\r\n ");

      Board_driversClose ();
      drivers_close();

    它在 nortos 和 freertos 空示例中构建、加载和运行正常。

    此致、

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

    尊敬的 Ming:

    这是正确的,你应该知道_sbrk()函数应该已经在 libc.a 中。

    我正在 未定义对_sbrk()的引用。

    我在 针对链接器的 main.c 中放置了一个空的_sbrk。

    在大多数情况下 ,我使用 pvPortMalloc ()作为 new。

    当我需要 malloc (stl 和 etl 情况)时,它转到_sbrk (),而 malloc 失败!

    我认为 libc 是一个开放代码、我会复制实现。

    似乎我找不到一个确切的我的 cortex r5f -有些事情出错了。  

    谢谢。

    Eli  

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

    尊敬的 Eli:

    您使用的是哪个 MCU+ SDK 版本和 CCS 版本。 您能否分享您遇到此问题的示例?

    我将 MCU+ SDK 用于 AM243x 09.00.00.35和 CCS 12.4.0。 我使用的示例包括:  

    empty_am243x-evm_r5fss0-0_nortos_ti-arm-clang 和  

    empty_am243x-evm_r5fss0-0_freertos_ti-arm-clang

    此致、

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

    尊敬的 Ming:

    我正在使用 mcu_plus_sdk_am243x_08_06_00_43。

    当我编译并与 Clang 链接时、没有问题。

    当我与 GCC 链接时,缺少函数_sbrk()。 (我知道 GCC 尚不受 TI 支持-它处于试验阶段)  

    我认为、如果我复制 clang 的 libc 代码-我也能够在 GCC 中使用该示例。

    所以我在寻找合适的 _sbrk ()函数的 c 代码。

    谢谢。

    Eli。

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

    尊敬的 Eli:

    适用于 AM243x 的 MCU+ SDK 使用 TI clang 2.1.3。 TI clang 2.1.3的 malloc 实现如所示  

    C:src \memory.c

    我没有看到它实际上使用_sbrk、因此您可能需要在 GCC 的 memory.c 中使用 malloc 实施。

    此致、

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

    谢谢!