keil编译完之后生成哪几部分,那些放在ROM,那些放在RAM
时间: 2023-05-23 17:01:19 浏览: 57
Keil编译包含了生成的可执行程序、二进制文件以及相应的链接文件,其中程序代码和数据位置的分配是由链接文件 Control Section 信息来决定的。一般而言,只有程序的只读数据(如常量)才会存放在 ROM 中,变量和程序代码则会存放在 RAM 中,但具体的分配方案会因芯片种类和代码量的不同而不同。
相关问题
keil编译完之后生成哪几部分,那些放在ROM,那些放在RAM,stm32运行时,会把代码从rom拷贝到ram吗?
在Keil编译完之后,会生成目标文件、链接文件、以及可执行文件。其中,目标文件包含编译后的源文件的汇编代码;链接文件包含所有目标文件的符号表和重定位信息;可执行文件则是将多个目标文件链接成一个单独的可执行程序。
通常情况下,程序的指令代码和只读数据会被放入ROM中,而变量和堆栈等数据则会被放入RAM中。在STM32运行时,由于ROM的访问速度较慢,因此程序会将需要被执行的指令代码从ROM中拷贝到RAM中,然后再进行执行。
keil编译文件大小
在使用Keil编译后,可以通过查看编译输出的信息来获取程序的大小。编译后的信息中,会显示代码(Code)的大小,常量(RO Data)所占空间大小,已初始化可读可写数据段(RW Data)的大小,以及未初始化的变量和堆栈(ZI Data)所占空间大小。根据这些信息,可以计算出程序占用的ROM和RAM大小。
例如,根据引用中的信息,编译后的信息中有Code、RO Data、RW Data和ZI Data四个参数。其中Code表示代码的大小,存储在ROM中,RO Data表示常量的大小,也存储在ROM中,RW Data表示已初始化的可读可写数据段的大小,既在ROM中又在RAM中存储,ZI Data表示未初始化的静态变量和全局变量以及堆栈的大小,存储在RAM中。根据引用中的关系,可以计算出程序占用的FLASH大小为Code + RO Data + RW Data,而占用的SRAM大小为RW Data + ZI Data。
因此,根据给出的引用信息,无法直接获得整个程序编译后的大小。但是,根据引用中的信息,可以看到烧写时程序占用FLASH空间的大小为6036(5.89kB),而运行时程序占用RAM空间的大小为19608(19.15kB)。
请根据实际使用的Keil编译器版本和编译后的具体输出信息,结合上述计算方法,计算出您所需的程序的编译大小。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>