小白求助,怎样才能多获得一些任务堆栈空间
小白求助,怎样才能多获得一些任务堆栈空间?任务创建时堆栈内存设置小了任务不能正常运行然后系统重启。
任务创建时堆栈内存设置大了任务不能正常启动。
设置总任务堆栈空间提示EDATA溢出。
可不可以出一个带片外内存的开发板版本啊QAQ,要不然堆栈内存不够用……
不如ESP32的FreeRTOS上个4096大小的任务都没事…… 我也关注学习一下
试试能不能划分Xdata给他 本帖最后由 tzz1983 于 2024-3-16 21:26 编辑
外挂的内存不能用于堆栈.堆栈只能在EDATA区间.
你什么应用啊,为什么要那么多堆栈?
虽然不能用外挂的RAM扩大总的堆栈,但是有另外的办法解决.
如果单个任务用栈量非常大,可能是由于调用的某些函数定义了较大的局部变量,数组或大结构都有可能.
找到这个地方,直接定义为全局xdata. 即可减少用栈量.
或都是把一片xdata的内存交给内存管理,用申请内存替代局部变量.
我不太熟悉FreeRTOS, 不知道FreeRTOS内存管理功能能不能管理xdata区域.uCOSII是可以的.
CosyOS-II 可以解决你的问题!
CosyOS-II for STC32 有两种不同的任务栈模式选择:PSP模式、MSP模式。
如果edata内存足够大,可以采用PSP模式,提高任务切换效率;
如果edata内存不够用,可以采用MSP模式。
PSP模式,任务栈只能在edata中,且每个任务栈都是主栈(需保存中断入栈),对edata的需求比较大,但任务切换时仅是任务栈指针的切换,效率高。
MSP模式,任务栈即可以在edata中,也可以在xdata中,可有效解决edata不够用的问题。但缺点是任务切换时需要拷贝数据,效率低。MSP模式需注意,主栈也必须足够大(在启动文件中修改)。 CosyOS 发表于 2024-3-16 22:23
CosyOS-II 可以解决你的问题!
CosyOS-II for STC32 有两种不同的任务栈模式选择:PSP模式、MSP模式。
如果 ...
CosyOS越来越强了,MSP是这么玩的啊 本帖最后由 CosyOS 于 2024-3-16 23:12 编辑
tzz1983 发表于 2024-3-16 22:53
CosyOS越来越强了,MSP是这么玩的啊
MSP模式,即可以内存模型为Large,静态创建任务,任务栈在xdata中;
也可以动态创建任务,内存池指针指向xdata(0x10000 以后),任务栈在xdata中。
全局不关总中断的RTOS / CosyOS-II for STC MCU,最新版本2024/2/6更新说明 - FreeRTOS/实时操作系统/文件系统/嵌入式系统软件,TFT-GUI/uGFX - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
页:
[1]