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

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

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-16 14:51
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    4

    主题

    5

    回帖

    58

    积分

    注册会员

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:16
  • 签到天数: 57 天

    [LV.5]常住居民I

    15

    主题

    222

    回帖

    1205

    积分

    金牌会员

    积分
    1205
    发表于 2024-3-16 21:03:08 | 显示全部楼层
    我也关注学习一下
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:44
  • 签到天数: 138 天

    [LV.7]常住居民III

    4

    主题

    234

    回帖

    910

    积分

    高级会员

    积分
    910
    发表于 2024-3-16 21:14:39 | 显示全部楼层
    试试能不能划分Xdata给他
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    576

    回帖

    1201

    积分

    荣誉版主

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

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

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

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

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



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:03
  • 签到天数: 176 天

    [LV.7]常住居民III

    5

    主题

    581

    回帖

    2383

    积分

    荣誉版主

    积分
    2383
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    576

    回帖

    1201

    积分

    荣誉版主

    积分
    1201
    发表于 2024-3-16 22:53:42 | 显示全部楼层
    CosyOS 发表于 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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:03
  • 签到天数: 176 天

    [LV.7]常住居民III

    5

    主题

    581

    回帖

    2383

    积分

    荣誉版主

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

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

    使用道具 举报

    该用户从未签到

    551

    主题

    9556

    回帖

    1万

    积分

    管理员

    积分
    14035
    发表于 2024-3-16 23:17:15 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-21 10:38 , Processed in 0.066632 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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