FLASH,SRAM与Program Size: Code=46286 RO-data=1698 RW-data=560 ZI-data=39960关系

当涉及到嵌入式系统或者微控制器的程序大小时,通常会涉及到不同类型的数据以及它们在内存中的存储方式。这些指标对于程序员和系统设计者来说非常重要,因为它们有助于了解程序在特定硬件环境下的内存使用情况。

Code:指的是程序代码的总大小,通常存储在FLASH等非易失性存储器中,用于存储程序的执行代码。在这个例子中,代码大小为46286字节。

RO-data:指只读数据,包括程序中的常量数据和只读变量等,它们在程序运行期间不会被修改。这些数据通常存储在FLASH等存储器中。在这个例子中,只读数据大小为1698字节。

RW-data:指读写数据,即在程序运行期间可以修改的数据,通常存储在RAM中。在这个例子中,读写数据大小为560字节。

ZI-data:指零初始化数据,这部分数据在程序加载时会被初始化为零值或空值。它们通常存储在RAM中。在这个例子中,零初始化数据大小为39960字节。

这些数据大小可以帮助开发者了解程序在存储器中的分布情况,有助于优化程序以减少内存占用,并确保程序在给定的硬件环境下正常运行。优化代码大小和内存使用可以提高系统性能,并确保在资源受限的嵌入式系统中有效地运行。


eg:
256K Flash >= Code(程序代码) + RO-data(常量和只读变量)

64K SRAM >= RW-data(可以修改的数据,变量) + ZI-data(初始化为0,null的变量)


常量和只读变量在概念上有些微妙的区别,尽管它们都表示在程序运行期间值不会改变的数据,但在C语言中,这两个概念有着不同的实现方式和使用方式:

常量(Constants)
#define 或 const 声明的值:常量是指在程序中一经定义后,其值在整个程序运行期间都不会改变的数据。可以使用 #define 预处理指令或 const 关键字来定义常量。
文本替换或编译时计算:#define 创建的常量是在编译器预处理阶段进行简单的文本替换,而 const 声明的常量会被编译器视为一个具有确定值的变量。
全局替换:#define 常量是全局替换&

你可能感兴趣的:(keil,MCU,C语言,c语言,mcu)