找回密码
 立即注册
查看: 1921|回复: 7

小白求助,怎样才能多获得一些任务堆栈空间

[复制链接]

6

主题

11

回帖

118

积分

注册会员

积分
118
发表于 2024-3-16 19:30:22 | 显示全部楼层 |阅读模式
小白求助,怎样才能多获得一些任务堆栈空间?

任务创建时堆栈内存设置小了任务不能正常运行然后系统重启。
任务创建时堆栈内存设置大了任务不能正常启动。
设置总任务堆栈空间提示EDATA溢出。

可不可以出一个带片外内存的开发板版本啊QAQ,要不然堆栈内存不够用……
不如ESP32的FreeRTOS上个4096大小的任务都没事……
回复

使用道具 举报 送花

已绑定手机

26

主题

521

回帖

1294

积分

金牌会员

积分
1294
发表于 2024-3-16 21:03:08 | 显示全部楼层
我也关注学习一下
回复

使用道具 举报 送花

6

主题

356

回帖

3458

积分

论坛元老

积分
3458
发表于 2024-3-16 21:14:39 | 显示全部楼层
试试能不能划分Xdata给他
回复

使用道具 举报 送花

19

主题

920

回帖

2765

积分

荣誉版主

积分
2765
发表于 2024-3-16 21:23:55 | 显示全部楼层
本帖最后由 tzz1983 于 2024-3-16 21:26 编辑

外挂的内存不能用于堆栈.堆栈只能在EDATA区间.

你什么应用啊,为什么要那么多堆栈?

虽然不能用外挂的RAM扩大总的堆栈,但是有另外的办法解决.

如果单个任务用栈量非常大,可能是由于调用的某些函数定义了较大的局部变量,数组或大结构都有可能.
找到这个地方,直接定义为全局xdata.  即可减少用栈量.
或都是把一片xdata的内存交给内存管理,用申请内存替代局部变量.
我不太熟悉FreeRTOS, 不知道FreeRTOS内存管理功能能不能管理xdata区域.uCOSII是可以的.



回复

使用道具 举报 送花

5

主题

1068

回帖

4717

积分

荣誉版主

积分
4717
发表于 2024-3-16 22:23:21 | 显示全部楼层
CosyOS-II 可以解决你的问题!
CosyOS-II for STC32 有两种不同的任务栈模式选择:PSP模式、MSP模式。
如果edata内存足够大,可以采用PSP模式,提高任务切换效率;
如果edata内存不够用,可以采用MSP模式。
PSP模式,任务栈只能在edata中,且每个任务栈都是主栈(需保存中断入栈),对edata的需求比较大,但任务切换时仅是任务栈指针的切换,效率高。
MSP模式,任务栈即可以在edata中,也可以在xdata中,可有效解决edata不够用的问题。但缺点是任务切换时需要拷贝数据,效率低。MSP模式需注意,主栈也必须足够大(在启动文件中修改)。

点评

CosyOS越来越强了,MSP是这么玩的啊  详情 回复 发表于 2024-3-16 22:53
回复

使用道具 举报 送花

19

主题

920

回帖

2765

积分

荣誉版主

积分
2765
发表于 2024-3-16 22:53:42 | 显示全部楼层
Cos*** 发表于 2024-3-16 22:23
CosyOS-II 可以解决你的问题!
CosyOS-II for STC32 有两种不同的任务栈模式选择:PSP模式、MSP模式。
如果 ...

CosyOS越来越强了,MSP是这么玩的啊

点评

MSP模式,即可以内存模型为Large,静态创建任务,任务栈在xdata中; 也可以动态创建任务,内存池指针指向xdata(0x10000 以后)。  详情 回复 发表于 2024-3-16 23:10
回复

使用道具 举报 送花

5

主题

1068

回帖

4717

积分

荣誉版主

积分
4717
发表于 2024-3-16 23:10:52 | 显示全部楼层
本帖最后由 CosyOS 于 2024-3-16 23:12 编辑
tzz1*** 发表于 2024-3-16 22:53
CosyOS越来越强了,MSP是这么玩的啊

MSP模式,即可以内存模型为Large,静态创建任务,任务栈在xdata中;
也可以动态创建任务,内存池指针指向xdata(0x10000 以后),任务栈在xdata中。
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2024-3-16 23:17:15 | 显示全部楼层
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 13:25 , Processed in 0.078997 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表