关键词不能为空

当前您在: 主页 > 英语 >

STM32芯片的ROM与RAM

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 12:53
tags:

-

2021年3月3日发(作者:街坊)




按照上边的例子,





Keil


中编译工程成功后,在下面的


Bulid Ouput


窗口中会 输出下面这样一段


信息:



Program Size: Code=119222 RO-data=18266 RW-data=320 ZI-data=23492




代表的意思:



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


大小





Code


是代码占用的空间,


RO- data



Read Only


只 读常量的大小,



const


型,


RW-data


是(


Read Write




初始化了的可读写变量的大小,


ZI- data


是(


Zero


Initialize




没有初始化的可读写变量的大小。


ZI-data


不会被算做代码里因


为不会被初始化。





简单的说就是在烧写的时候是


FLASH


中的被占用的空间为:


Code +RO



Data+RW



Da


ta


程序运行的时候,芯片内部


RAM


使用的空间为:



RW



Data



+



ZI



Data






ARM


编译中的


RO



RW



ZI DATA


区段



ARM


程序


(


指在


ARM

< p>
系统中正在执行的程序,


而非保存在


ROM


中的


bin


文件


)< /p>


的组




一个< /p>


ARM


程序包含


3


部分:


RO


段,


RW


段和


ZI




RO


是程序中的指令和常量



RW


是程序中的已初始化变量



ZI


是程序中的未初始化的变量



由以上


3


点说明可以理解为:



RO


就是


readonl y




RW


就 是


read/write




ZI


就是


zero


ARM


映像文件的组成



所谓


ARM


映像文件就是指烧录到

< br>ROM


中的


bin


文件,


也成为


image


文件。

以下用


Image


文件来称呼它。



Image


文件包含了


RO

< p>


RW


数据。



之所以


Image


文件不包含

< br>ZI


数据,是因为


ZI


数据都是


0


,没必要包含,只要程


序运行之前将


ZI


数据所在的区域一律清零即可。包含进去反而浪费存储空间 。



Q


:为什么


Image


中必须包含


RO



RW




A



因为


RO


中的指令和 常量以及


RW


中初始化过的变量是不能像


ZI


那样


“无中生


有”的。



ARM


程序的执行过程



从以上两点可以知道,


烧录到


ROM


中的


image


文件与实际运行时的

< br>ARM


程序之间


并不是完全一样的。

因此就有必要了解


ARM


程序是如何从

ROM


中的


image


到达实


际运行状态的。



实际上,


RO


中的指令至少应该有这样的功能:



1.



RW



ROM


中搬到


RAM


中,因为


RW


是变量,变量不能存在

< br>ROM


中。



2.

< p>


ZI


所在的


RAM


区域全部清零,因为


ZI


区域并不在


Image


中,所以需要程


序根据编译器给出 的


ZI


地址及大小来将相应得


RAM< /p>


区域清零。


ZI


中也是变量,

< p>
同理:变量不能存在


ROM



在程序运行的最初阶段,


RO


中 的指令完成了这两项工作后


C


程序才能正常访问


变量。否则只能运行不含变量的代码。



说了上面的可 能还是有些迷糊,


RO



RW



ZI


到底是什么,下面我将给出几个例


子,最直观的来说明


RO


< br>RW



ZI


< br>C


中是什么意思。



1; RO


看下面两段程序,


他们之间差了一条语句,

这条语句就是声明一个字符常量。



此按照我们之前说的, 他们之间应该只会在


RO


数据中相差一个字节(字符常量



1


字节)。



Prog1




#include


void main(void)


{


;


}


Prog2




#include


const char a = 5




void main(void)


{


;


}


Prog1


编译出来后的信息如下:



======================================= ==============================


========= ==


Code RO Data RW Data ZI Data Debug


948 60 0 96 0 Grand Totals


= ================================================== ==================


===========


Total RO Size(Code + RO Data) 1008 ( 0.98kB)


Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)


Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB)


=== ================================================== ================


===========


Prog2


编译出来后的信息如下:



======================================= ==============================


========= ==


Code RO Data RW Data ZI Data Debug


948 61 0 96 0 Grand Totals


= ================================================== ==================


===========


Total RO Size(Code + RO Data) 1009 ( 0.99kB)


Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)


Total ROM Size(Code + RO Data + RW Data) 1009 ( 0.99kB)


=== ================================================== ================


===========


以上两个程序编译出来后的信息可以看出:


< br>Prog1



Prog2



RO


包含了


Code



RO Data


两类数据。他们的唯一区别就是

< p>
P


rog2



RO Da ta



Prog1


多了


1


个字节。这正和之前的推测一致。



如果增加的是一条指令而不是一个常量,则结果应该是


Code


数据大小有差别。



2; RW

同样再看两个程序,


他们之间只相差一个


“已初始化的变量 ”



按照之前所讲的,


已初始化的变量 应该是算在


RW


中的,所以两个程序之间应该是


RW


大小有区别。



Prog3




#include


void main(void)


{


;


}


Prog4




#include


char a = 5



-


-


-


-


-


-


-


-



本文更新与2021-03-03 12:53,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/700090.html

STM32芯片的ROM与RAM的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文