硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4643|回复: 8
收起左侧

[emWin] FreeRTOS+emWin 关于内存空间问题?--高手指点一下。

[复制链接]

25

主题

58

回帖

133

积分

初级会员

积分
133
发表于 2020-3-3 13:42:30 | 显示全部楼层 |阅读模式
版主,硬汉

我有几个问题,不是很确定,想请教
我用的是FreeRTOS + emwin

问题1:在freertos 建立任务的时候,都会给任务制定一个栈空间。
          这个空间大小主要是保存当前任务执行所占用的寄存器CPU控制寄存器的值,还有函数内部的局部变量,以及任务调用函数,函数自带的传递参数。这个理解对吗?

问题2:在freertos里面会指定一个堆的空间。这个空间是函数malloc申请动态内存,所需要的空间。这个理解没问题吧。

问题3:和文问题2有关联,在freertos系统里面定义和创建的消息队列是否也是在堆空间申请得到的?

问题4:emwin 里面的窗体句柄变量,因为项目显示的需要,定义的比较多,请问这些变量是否会影响任务栈的设置?换句话说,就是如果窗体句柄变量定义比较多的时候(因为项目的功能一点点的增加),也要增加任务栈的空间大小吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2020-3-4 00:13:46 | 显示全部楼层
1、对,还有CM内核首次入栈时,自动入栈的几个寄存器。
2、不是,xxx.S启动文件里面的才是,FreeRTOSConfig.h是FreeRTOS全局内存池,供各个任务栈,通信组件等使用。
3、是从FreeRTOSConfig.h里面定义的heap大小申请。
4、句柄占用的空间可以忽略。

回复

使用道具 举报

25

主题

58

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2020-3-4 09:18:23 | 显示全部楼层
谢谢@eric2013细心的解答。

想再问个问题
如果是在函数外定义的全局变量,是不在FreeRTOS全局内存池里面的。是吧?

只有在任务里面定义的局部变量,才算作是FreeRTOS全局内存池里的变量是这个意思吗?这些变量会影响任务栈的大小空间吗?

我定义的图形句柄都是全局变量。应该也不会占用FreeRTOS全局内存池里的空间,是吧?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2020-3-4 10:34:32 | 显示全部楼层
wxqhit 发表于 2020-3-4 09:18
谢谢@eric2013细心的解答。

想再问个问题

全局变量是编译器分配的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2020-3-4 10:34:53 | 显示全部楼层
wxqhit 发表于 2020-3-4 09:18
谢谢@eric2013细心的解答。

想再问个问题

全局变量是编译器分配的。
回复

使用道具 举报

25

主题

58

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2020-3-5 17:18:17 | 显示全部楼层
明白了。谢谢@eric2013。
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2021-11-25 09:34:05 | 显示全部楼层
刚好在这也想问个类似的问题:请问在GUI任务中要创建TTF字体,用GUI_ALLOC_AllocZero(FileSize)申请空间时:
1、是从任务创建分配的栈空间划分的吗?还是任务以外的空间划分的。
2、这个空间受FREERTOS的管理吗?
3、是否可用FREERTOS的内存申请函数呢?
另外,在emwin的GUIConf.c中的#define GUI_NUMBYTES  (1024*1024*40)   //0x20000的大小与freeRtos有关系或冲突吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2021-11-25 12:49:57 | 显示全部楼层
5761193jia 发表于 2021-11-25 09:34
刚好在这也想问个类似的问题:请问在GUI任务中要创建TTF字体,用GUI_ALLOC_AllocZero(FileSize)申请空间时 ...

1、从GUIConf.c里面定义的动态内存里面申请的。
2、不受。
3、可以。
4、没有
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2021-11-25 17:24:11 | 显示全部楼层
谢谢硬汉哥
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-15 11:11 , Processed in 0.041612 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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