你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CubeMX的Linker settings设置,及与RTOS任务创建是堆栈空间的关系?

[复制链接]
懒得起名1 提问时间:2024-2-2 15:44 / 未解决

<1>我在使用USB时发现有人会去修改在CubeMX中Linker settings设置,此设置为最小的堆栈大小设置。

LinkerSettings.png

请教下 ,这设置是与单片机的RAM有关(小于单片机RAM的值)嘛?

RAM.png

他可以在程序中什么地方设置呢?我遇到个没有cubemx工程,且USB通讯有异常的程序,我想看看是否是堆栈设置过小导致的。

<2> 且在FreeRTOS创建任务时也需要将任务堆栈空间设置得尽可能得大,以免出现异常。

CreateStatic.png

xTaskCreate.png

堆栈.png

那这堆栈我是根据这Minimum Heap Size(所有任务堆栈总和<Minimum Heap Size)还是Stack Size(所有任务堆栈总和<Stack Size)来设置。

或者这与Linker Settings无关,而只要(所有任务堆栈总和<单片机的系统SRAM)就可以了?

有遇到过或思考过的社友解答下嘛,不吝赐教

收藏 评论1 发布时间:2024-2-2 15:44

举报

1个回答
xmshao 回答时间:2024-2-2 17:33:48
这个linger setting对应到启动文件里的系统配置,我认为启动文件里配置的栈空间和堆空间大小跟任务所用的栈和堆是没有关系的,或者说各种独立的。启动文件里设置的栈属于MSP主栈空间,主栈给任务以外的中断使用。任务栈属于线程栈PSP,为任务所用。动态创建任务时分配TCB、任务栈时都会用到RTOS申请的堆空间。当然,所有BSS变量、DATA常量加上堆、栈空间以实际RAM为限。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版