硬汉嵌入式论坛

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

[ThreadX全家桶] 请教大佬们!一个ThreadX 任务创建的问题!

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2021-6-1 15:25:49 | 显示全部楼层 |阅读模式
如图,我用STM32CubeMX 生成了一个STM32F103C8的串口1打印程序且移植了最新ThreadX v6.1.6 程序。程序能正常运行!
当我分别使用2种配置的时候生成代码的RAM占用就发生了特别大的变化!
不使用定义函数地址时,6个任务代码生成的RAM只有3.8K(每个任务有1K的堆栈空间);
使用定义函数地址时,6个任务代码生成后RAM占用了15K(每个任务只定义了256字节的堆栈空间);
它们的代码都能正常在串口打印任务信息,如果我选用占用RAM小的任务创建方式会有什么隐患呢?


这个是定义的6个任务的参数

这个是定义的6个任务的参数

不使用定义的函数地址的任务创建

不使用定义的函数地址的任务创建

不使用定义的函数地址生成的RAM

不使用定义的函数地址生成的RAM

使用定义的函数地址的任务创建

使用定义的函数地址的任务创建

使用定义的函数地址生成的RAM

使用定义的函数地址生成的RAM

打印的信息

打印的信息
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-6-1 16:07:27 | 显示全部楼层
一样的,楼主所谓的 "不使用定义函数地址时" 是使用的空闲RAM空间。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2021-6-1 17:24:19 | 显示全部楼层
eric2013 发表于 2021-6-1 16:07
一样的,楼主所谓的 "不使用定义函数地址时" 是使用的空闲RAM空间。

比如说:我用“不定义函数地址的时候”编译代码只有3.8K 我还剩下16.2K的代码空间,我把这些空间都用了!那么程序跑起来的时候会不会受到影响。 因为如果我使用了“定义的函数地址”我就用去了15.8K空间,我实际的代码空间只有4.2K了!如果还是按照“不定义函数地址”的时候的16.2K代码来使用的话就报内存不足了!会编译不通过! 如果他们是一样的!那我选用第一种方式不是可以实现更多的代码量,还是说第一种本质上是错的!如果把剩下的16.8K空间都用了就会导致程序运行的时候无法启动.
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-6-1 18:54:49 | 显示全部楼层
roorur 发表于 2021-6-1 17:24
比如说:我用“不定义函数地址的时候”编译代码只有3.8K 我还剩下16.2K的代码空间,我把这些空间都用了! ...

本质都是一样的,这么说吧,比如芯片的RAM是16KB。
1、“不定义函数地址” : RAM使用了4KB,空闲12KB还没有用,你就是用的这部分给任务分配的栈空间,假如任务栈空间使用了8KB,那么空闲就还剩4KB。

2、“定义函数地址” : RAM使用了4KB,任务栈使用8KB,那么空闲4KB

这么来看,两者都是一样的

注:“不定义函数地址”实际上就是空闲内存的动态内存分配。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2021-6-2 09:00:09 | 显示全部楼层
eric2013 发表于 2021-6-1 18:54
本质都是一样的,这么说吧,比如芯片的RAM是16KB。
1、“不定义函数地址” : RAM使用了4KB,空闲12KB还 ...

哦,明白了!感谢应硬汉的解答!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-6-2 10:56:07 | 显示全部楼层
roorur 发表于 2021-6-2 09:00
哦,明白了!感谢应硬汉的解答!

好的,后面还有什么问题再交流。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 20:15 , Processed in 0.710582 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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