你好呀
我尝试执行以下操作:我使用了BLE_PERITELAL演示和激活的CONFIG_RETARGAR以便能够在UART上使用PRINTF。代码编译,但是在执行时,没有任何工作。使用调试器,我发现了,程序正在使用Assert_error,显然是因为_heap_size太小了。
(init_da1469x.c中的函数* _sbrk())
我增加了configtotal_heap_size,没有效果。我究竟做错了什么?
谢谢你的帮助!
嗨Ethsiplab,
由于您使用的是printf(),我建议您增加任务的大小。请在调试模式下运行您的代码。你能告诉我代码卡在哪里吗?
谢谢,PM_DIALOG.
嗨PM_DIALOG.
我已经增加了System_Init和BLE_PERITELAL_TASK(在BLE_PERITELAL_TASK_WORD_WORD和CONFIGTOTAL_HEAP_SIZE到30000的任务大小,以便为PRINTF(激活的CONFIG_RETARGET)住宿。在调试模式下,没有达到断点(即使在Main()的开头),如果我停止执行,则程序陷入函数* _sbrk(int增量)中的init_da1469x.c中
在所述函数的来源中的评论表明,某个_heap_size太小,但我不明白如何使其更大,因为我已经增加了整体堆大小和任务堆栈大小。
void * _sbrk(Int Incl){uint8_t * newheapstart;
if(heapend + cont>&__ heaplimit){/ *击中此操作,意味着_heap_size的值太小。*此时Intr的值在Storage_incr中。通过检查等式*上面,确定缺失的空间很简单。* /Volatile Int Store_Incr __Unused;
storage_incr = Inc;assert_error(0);// <==在这里陷入困境
errno = enomem;返回(void *) - 1;}
newheapstart = heapend;heapend + = Inc;
返回newheapstart;}
这意味着您应该增加__heap_size,否则,它将触发函数_sbrk中的assert_error。我建议您更改BSP_Defaults.h中__heap_size的值。
你好,
谢谢您的帮助。如果有人遇到这个:我从/sdk/config/bsp_memory_defaults.h中增加__heap_size.h从0x0700到0x0800,现在一切都以它的方式工作。
嗨Ethsiplab,
由于您使用的是printf(),我建议您增加任务的大小。请在调试模式下运行您的代码。你能告诉我代码卡在哪里吗?
谢谢,PM_DIALOG.
嗨PM_DIALOG.
我已经增加了System_Init和BLE_PERITELAL_TASK(在BLE_PERITELAL_TASK_WORD_WORD和CONFIGTOTAL_HEAP_SIZE到30000的任务大小,以便为PRINTF(激活的CONFIG_RETARGET)住宿。在调试模式下,没有达到断点(即使在Main()的开头),如果我停止执行,则程序陷入函数* _sbrk(int增量)中的init_da1469x.c中
在所述函数的来源中的评论表明,某个_heap_size太小,但我不明白如何使其更大,因为我已经增加了整体堆大小和任务堆栈大小。
void * _sbrk(Int Incl)
{
uint8_t * newheapstart;
if(heapend + cont>&__ heaplimit){
/ *击中此操作,意味着_heap_size的值太小。
*此时Intr的值在Storage_incr中。通过检查等式
*上面,确定缺失的空间很简单。
* /
Volatile Int Store_Incr __Unused;
storage_incr = Inc;
assert_error(0);// <==在这里陷入困境
errno = enomem;
返回(void *) - 1;
}
newheapstart = heapend;
heapend + = Inc;
返回newheapstart;
}
嗨Ethsiplab,
这意味着您应该增加__heap_size,否则,它将触发函数_sbrk中的assert_error。我建议您更改BSP_Defaults.h中__heap_size的值。
谢谢,PM_DIALOG.
你好,
谢谢您的帮助。如果有人遇到这个:我从/sdk/config/bsp_memory_defaults.h中增加__heap_size.h从0x0700到0x0800,现在一切都以它的方式工作。