FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
来源:互联网 发布:至此终年网络番外怀孕 编辑:程序博客网 时间:2024/05/16 20:50
“FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
在STM32CubeMX生成工程时发现,在FreeRTOS的配置中同样有TOTAL_HEAP_SIZE
堆的大小配置,这个堆与之前系统的堆空间有什么区别呢?
我之前的博客有关于使用STM32系统堆空间不足时,所遇到的问题和解决方法:http://blog.csdn.net/lighthear/article/details/69485942
我们知道,在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:
Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序中代码所占字节大小RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only)RW-data :程序中已初始化的变量大小 (个人理解”:Read/Write)ZI-Data :程序中未初始化的变量大小 (个人理解 :Zero Initialize) ROM(Flash) size = Code + RO-data + RW-data;RAM size = RW-data + ZI-data
我们还可以通过.map
文件查看占用的Flash和RAM的大小。
测试过程:
将系统的Heap设置为3072 字节,FreeRTOS的Heap设置为3072 字节时,编译后ZI-data
使用量为7600 字节。
- 将系统的Heap调整为512 字节(调小了2560 字节),FreeRTOS的Heap不变,编译后
ZI-data
使用量为5040 字节,正好也减少了2560 字节。 - 系统的Heap保持不变,FreeRTOS的Heap调整为2048 字节(调小了1024 字节),编译后
ZI-data
使用量为6576 字节,正好也减少了1024 字节。
结论:
FreeRTOS中的堆栈,并没有占用系统启动文件中的堆栈空间大小。两者在空间分配上互不影响,需要单独设置。并且FreeRTOS有自己的内存申请函数pvPortMalloc()
以及一系列的内存管理函数。
关于FreeRTOS的内存管理函数,可以参考博客:http://blog.csdn.net/zhzht19861011/article/details/51606068
0 0
- FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
- 数据结构的堆栈 与Java中的堆栈
- 堆栈与内存的关系
- VC中堆栈的设置
- 汇编中的堆栈关系
- freeRtos虚拟堆栈与内存分配
- 数据结构的堆栈与内存中堆栈的区别
- VIVI中堆栈设置的分析
- 内存中堆栈与数据结构中堆栈
- 堆栈大小的设置
- 数据结构与操作系统中的的堆栈对比
- 数据结构的堆栈、内存中的堆栈
- 数据结构的堆栈和内存中的堆栈
- 队列、堆栈与数组、链表的关系与区分
- 队列、堆栈与数组、链表的关系与区分
- 队列、堆栈与数组、链表的关系与区分
- 队列、堆栈与数组、链表的关系与区分
- 队列、堆栈与数组、链表的关系与区分
- 金融保险中的几个概念
- Websocket
- oracle中的表空间
- Android 自定义View
- 一个TextView 显示多种样式的文本
- FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
- C#索引器
- 二叉搜索树的插入,删除,遍历操作详解
- Centos7服务systemctl命令
- 蓝桥杯2017年第八届模拟题C_C++程序设计本科
- proGuard manual--Introduction翻译
- Java反射机制详解
- C++ 常用小知识解读
- HTML5基础加强css样式篇(CSS3 文本