您好!
我使用的是 AM2434-EVM。
有时,当我使用 malloc 时,代码会转至我没有的_sbrk ()函数-所以我把它执行为空。
在哪里可以找到实现方式?
谢谢。
Eli
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-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。