一直出内存未对齐断言

发布于 2020-10-20 23:18:51

在AT组件中创建并使用响应结构体,释放时一直出现 RT_ASSERT((((rt_ubase_t)rmem) & (RT_ALIGN_SIZE - 1)) == 0); 的断言。

翻论坛找到下面这个帖子,说是内存堆使用时没对齐

https://club.rt-thread.org/ask/question/425347.html

上面帖子时 rt_malloc 出断言,我这边是 rt_malloc 时没问题,rt_free 出断言。
片子是 STM32F407,RTT版本是 4.0.2。

请问需要如何解决?

    at_response_t resp = RT_NULL;
    resp = at_create_resp(AT_RESP_BUF_SIZE, 0, rt_tick_from_millisecond(1000));
    if (resp == RT_NULL) {
        LOG_E("no memory for response structure.");
        result = -RT_ENOMEM;
        goto __exit;
    }
    
    //...
    
__exit:
    if(resp)
        at_delete_resp(resp);

查看更多

关注者
0
被浏览
246
2 个回答
wenbodong
wenbodong 2020-10-21

调大与AT模块相关的线程栈和系统栈试试。

gcc环境下,系统栈大小在stm32_rom.ld中,默认貌似是0x200

_system_stack_size = 0x400;
sunwan
sunwan 2020-10-22

试试把RT_ALIGN_SIZE调整为8字节对齐

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览