大家好
我尝试做以下工作:我使用ble_peripheral演示和激活CONFIG_RETARGET,以便能够在UART上使用printf。代码编译后,但是在执行时,什么都不起作用。使用调试器,我发现,程序正在使用一个ASSERT_ERROR显然是因为_HEAP_SIZE太小。
(在函数*_sbrk()在init_da1469x.c)
我增加了configTOTAL_HEAP_SIZE,但没有效果。我做错什么了?
谢谢你的帮助!
嗨ethsiplab,
由于您正在使用printf(),我建议您增加任务的大小。请在调试模式下运行代码。你能告诉我代码在哪里卡住了吗?
谢谢,PM_Dialog
嗨PM_Dialog
我已经增加了system_init和ble_peripheral_task的任务大小(在ble_peripheral的例子中)到2048* OS_STACK_WORD_SIZE和configTOTAL_HEAP_SIZE到30000,以便容纳printf(激活的CONFIG_RETARGET)。在调试模式中,没有达到断点(甚至在main()开始时也没有),如果我停止执行,程序会卡在init_da1469x.c中的函数*_sbrk(int incr)中
在上述函数的来源的评论表明,某个_HEAP_SIZE太小,但我不明白如何使它更大,因为我已经增加了总体堆大小和任务堆栈大小。
void * _sbrk (int增加){uint8_t * newheapstart;
if (heapend + incr > &__HeapLimit) {/*点击这个,意味着_HEAP_SIZE的值太小了。*此时incr的值在stored_incr中。通过检查方程*,它是直接确定缺少的空间。*/volatile int stored_incr __UNUSED;
stored_incr =增加;ASSERT_ERROR (0);// <==卡在这里
errno = ENOMEM;返回(void *) 1;}
newheapstart = heapend;heapend + =增加;
返回newheapstart;}
这意味着你应该增加__HEAP_SIZE,否则,它将在函数_sbrk中触发ASSERT_ERROR。我建议您更改bsp_defaults.h中的__HEAP_SIZE的值。
你好,
谢谢你的帮助。如果有人遇到这个:我增加了__HEAP_SIZE在/sdk/config/bsp_memory_defaults.h从0x0700到0x0800,现在一切工作的方式,它应该。
嗨ethsiplab,
由于您正在使用printf(),我建议您增加任务的大小。请在调试模式下运行代码。你能告诉我代码在哪里卡住了吗?
谢谢,PM_Dialog
嗨PM_Dialog
我已经增加了system_init和ble_peripheral_task的任务大小(在ble_peripheral的例子中)到2048* OS_STACK_WORD_SIZE和configTOTAL_HEAP_SIZE到30000,以便容纳printf(激活的CONFIG_RETARGET)。在调试模式中,没有达到断点(甚至在main()开始时也没有),如果我停止执行,程序会卡在init_da1469x.c中的函数*_sbrk(int incr)中
在上述函数的来源的评论表明,某个_HEAP_SIZE太小,但我不明白如何使它更大,因为我已经增加了总体堆大小和任务堆栈大小。
void * _sbrk (int增加)
{
uint8_t * newheapstart;
if (heapend + incr > &__HeapLimit) {
/*点击这个,意味着_HEAP_SIZE的值太小了。
*此时incr的值在stored_incr中。通过检查方程
*,它是直接确定缺少的空间。
*/
volatile int stored_incr __UNUSED;
stored_incr =增加;
ASSERT_ERROR (0);// <==卡在这里
errno = ENOMEM;
返回(void *) 1;
}
newheapstart = heapend;
heapend + =增加;
返回newheapstart;
}
嗨ethsiplab,
这意味着你应该增加__HEAP_SIZE,否则,它将在函数_sbrk中触发ASSERT_ERROR。我建议您更改bsp_defaults.h中的__HEAP_SIZE的值。
谢谢,PM_Dialog
你好,
谢谢你的帮助。如果有人遇到这个:我增加了__HEAP_SIZE在/sdk/config/bsp_memory_defaults.h从0x0700到0x0800,现在一切工作的方式,它应该。