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.

[参考译文] RTOS/CC2640R2F:iCall_init()-> iCall_heapMalloc() at heapmgr.h:438中出现异常

Guru**** 2578945 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/584368/rtos-cc2640r2f-exception-in-icall_init---icall_heapmalloc-at-heapmgr-h-438

部件号:CC2640R2F
主题中讨论的其他部件:BLE堆栈

工具/软件:TI-RTOS

我在让设备正常启动时遇到问题。 堆管理器代码HEAPMGR_malloc (iCall_heapMalloc())似乎存在问题,我们在该代码中增加HDR,使其超出允许的内存范围,并失败,但出现以下异常:  

这是违规代码。 我们已让HDR指向内存,在通过"tmp"递增之后,它不应访问:

请帮助

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

    是否可以用未经修改的库存BLE示例复制? 此外,您使用的是哪个版本的BLE堆栈?

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

    我开始使用bim_oad_offchip + simile_peripheral_cc2640r2lp_stack + simile_peripheral_cc2640r2_app_oad_offchip项目,但从未遇到过此问题。 我能够使用此配置成功加载,运行和执行OAD。  

    在添加我自己的源代码修改并在预定义符号中手动设置HEAPMGR_SIZE之后,我看到了这个问题。 如果我从预定义符号中删除HEAPMGR_SIZE并添加AUTOHEAPSIZE,我不会看到此问题,尽管文档似乎表明我不能依赖自动堆大小调整来正确地调整我的堆管理器的大小,因此不应长期使用。

    我使用 的是simplelink_cc2640r2_sdk_1_00_00_22 SDK,它使用BLE堆栈3.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用autoseap时,您能看到分配了多少堆以及实际使用了多少堆吗?

    软件开发人员指南的“调试”部分提供了一些有关如何解码异常的提示。 它还列出了有关如何确定自动堆大小和如何分析堆的步骤。 令我担忧的是,如果堆用完,我们将生成异常,而不是返回NULL。 我不确定源代码修改会如何影响这一点,但是否在main()中进行了任何更改?

    Tom
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有任何更新?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这似乎与我的任务的堆栈大小有关。 当我缩小了主任务堆栈的大小后,这个问题就消失了。