问答

汇集网友智慧,解决技术难题

21ic问答首页 - AT32F403A 移植FreeRTOS 后 configTOTAL_HEAP_SIZE 设置太大死机

MUC 国产芯片 嵌入式 技术交流 CONFIG freeRTOS

AT32F403A 移植FreeRTOS 后 configTOTAL_HEAP_SIZE 设置太大死机

耀星空2025-05-20
各位大佬  我用AT32F403ARGT7 移植FreeRTOS 跟LVGL RAM 已经修改为了224k 出现了一个问题  如果只是单独跑LVGL RAM超过96k 是没有问题的,但是如果开启freeRTOS在 freeRTOS中运行lvgl就会卡死,我排查过后发现是freeRTOS 导致的,只要freertos开启 且RAM超过96k 就会卡死,我单独运行FREERTOS 将 configMAX_TASK_NAME_LEN 设置到60k 我的ram这个时候是105k FREERTOS就卡死了,这个是什么问题呀?有没有大佬知道的

回答 +关注 0
1640人浏览 20人回答问题 分享 举报
20 个回答
  • 耀星空 发表于 2025-5-22 14:24
    嗯嗯谢谢 大佬,
    关于这个问题已经解决了。 因为我的lvgl刷新函数是放在 freertos 一个任务里面的,所以 ...

    不客气;技术讨论随时有;
    那你可以得空好好研究一下;
    是的,在原因不明的情况下,就用更加稳妥的方法去实现同样的功能,也是一种软件设计理念。
  • dffzh 发表于 2025-5-22 13:04
    解决就好;
    不建议使用的原因就是可能会出问题,但不是百分百会出问题;STM32可以那么使用,也许产品量大 ...

    嗯嗯谢谢 大佬,
    关于这个问题已经解决了。 因为我的lvgl刷新函数是放在 freertos 一个任务里面的,所以要在这个任务前面重新配置 系统时钟 这样 freeRTOS 跟 LVGL 就都可以正常运行了。 但是就是不知道是什么原因,因为我在创建这个任务前 配置系统时钟 就没有用。  因为不知道什么原因引起的 不敢用  还是用定时器来产生时基,再次感谢大佬的帮助 感谢
  • 耀星空 发表于 2025-5-22 10:58
    这样确实可以 ,但是我用stm32 这样用没有问题的,这两个 IC 不是可以平替的吗 ...

    解决就好;
    不建议使用的原因就是可能会出问题,但不是百分百会出问题;STM32可以那么使用,也许产品量大了可能就会出一些奇奇怪怪的偶发性Bug;
    或者你想弄清楚根因的话,可以尝试咨询一下雅特力MCU的技术支持。
  • dffzh 发表于 2025-5-22 10:15
    LVGL的定时延时,不要直接用RTOS里面的,你直接外加一个MCU的定时器外设来处理;这样试试;然后别使用滴答 ...

    这样确实可以 ,但是我用stm32 这样用没有问题的,这两个 IC 不是可以平替的吗
  • 本帖最后由 dffzh 于 2025-5-22 10:29 编辑
    耀星空 发表于 2025-5-22 09:56
    看这个报错是 系统时钟挂了  但是不加LVGL 就没挂 lvgl 的时钟用的是FREERTOS的呀,咋会挂了呢,搞不懂{: ...

    LVGL的定时延时,不要直接用RTOS里面的,你直接外加一个MCU的定时器外设来处理;这样试试;然后别使用滴答时钟SysTick产生LVGL的时基,这个一般被用于RTOS。vTaskDelay尽量只用于RTOS,其他模块的定时延时,自己加MCU外设定时器处理;

    自己加个MCU的高级定时器来处理LVGL的心跳任务,定时器中断优先级设置高,LVGL的心跳函数比较重要,如果调用间隔不准确,可能会导致显示卡顿或者任务处理不及时等问题。



  • 耀星空 发表于 2025-5-22 09:56
    看这个报错是 系统时钟挂了  但是不加LVGL 就没挂 lvgl 的时钟用的是FREERTOS的呀,咋会挂了呢,搞不懂{: ...

    卡死在了这个地方。。。。。
  • 本帖最后由 dffzh 于 2025-5-22 10:19 编辑
    耀星空 发表于 2025-5-22 09:56
    看这个报错是 系统时钟挂了  但是不加LVGL 就没挂 lvgl 的时钟用的是FREERTOS的呀,咋会挂了呢,搞不懂{: ...

    我大概知道是什么问题了;可能是死锁了。
  • 耀星空 发表于 2025-5-22 09:51
    加了 lVGL 后 程序就卡死在了 delay 那里 我的lvgl时基 是由 FREERTOS 提供的 不知道什么个问题
    ...

    看这个报错是 系统时钟挂了  但是不加LVGL 就没挂 lvgl 的时钟用的是FREERTOS的呀,咋会挂了呢,搞不懂
  • dffzh 发表于 2025-5-22 09:22
    1、任务名称最大长度为10,你定义的任务名称没有超过10的吧?
    2、死机时点击Stop按钮,看反汇编程序停在哪 ...

    加了 lVGL 后 程序就卡死在了 delay 那里 我的lvgl时基 是由 FREERTOS 提供的 不知道什么个问题
123下一页

您需要登录后才可以回复 登录 | 注册