编译结果里面的几个数据的意义:
Code:表示程序所占用 FLASH 的大小(FLASH)。
RO-data:即 Read Only-data,表示程序定义的常量(FLASH)。
RW-data:即 Read Write-data,表示已被初始化的变量(RAM)
ZI-data:即 Zero Init-data,表示未被初始化的变量(RAM
计算公式:
flash = Code + RO-data + RW-data
ram = RW-data + ZI-data
另种计算方法
arm-none-eabi-size solar_charging_control.elf
text data bss dec hex filename
13336 112 1944 15392 3c20 control.elf
text(代码段): 存放程序的可执行指令代码。编译器将源代码编译生成的机器指令存储在这个段中。
data(数据段): 存放程序中已经初始化的全局变量和静态变量。这些变量在程序编译时就已经确定了初始值。
bss(Block Started by Symbol): 存放未初始化的全局变量和静态变量。这些变量在程序加载时会被系统自动清零。
dec(十进制数): 是 text、data、bss 三个段的总和,表示程序在Flash中占用的总空间大小。
hex(十六进制): 和dec值相同
计算公式:
flash = text + data + bss
也可以通过
查看
1、栈区
栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。
这个_Min_Stack_Size就是栈大小,0x00000400就是代表有1K(0x400/1024)的大小。
参数,全局变量,局部变量,数组。
2、堆区
堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。
_Min_Heap_Size是堆大小
malloc()函数动态分配的内存就属于堆的空间。
3、不使用malloc就把堆区设置为0
_Min_Heap_Size = 0x000; /* required amount of heap */
_Min_Stack_Size = 0x200; /* required amount of stack */
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/g313105910/article/details/148400918
|
|