当前位置:网站首页>How to check the ram and ROM usage of MCU through Keil

How to check the ram and ROM usage of MCU through Keil

2022-07-07 13:57:00 Ch_ champion

summary

        In many side doors MCU, Or use keil Development , It can be avoided in the development process ram,rom Not enough problem , How to check ? Here's the answer ^_^.

One 、 View by

1)、 After compiling

2)、 adopt map see

It's easy , Aim the mouse at the red circle , Double click .


Sometimes , Double click No , Just configure according to the above figure , this .map The document must be in this project , As shown below :

  find .map, Drag and drop to keil Open in , that will do . Through this file, you can analyze , Corresponding to the use and rationality of each part , So as to do the corresponding optimization .

 Keil Generated Map The contents of documents are roughly divided into five categories ( according to .map Order of document classification ) As shown below :

1.Section Cross References

It refers to the modules generated by each source file 、 paragraph ( Defined entry ) The relationship of mutual reference , Check... In the configuration :Cross Reference, for example :

startup_stm32f401xe.o(RESET) refers to stm32f4xx_it.o(i.NMI_Handler) for NMI_Handler

It says startup_stm32f401xe.o In the document main The function is called stm32f4xx_it In the document NMI_Handler function

2.Removing Unused input sections from the image

Remove unused modules , Check... In the configuration :Unused Sections Info, Is to delete the project code , There are no called modules . There is also a statistical information at the end , for example

Indicates that there are 294 Segment useless , Total share 17904 byte

3.Image Symbol Table

Mapping symbol table , Check... In the configuration :Symbols, You can see the symbol name , Storage address , Storage size , The target file

4.Memory Map of the image

Memory mapping distribution , Check... In the configuration :Memory Map

Image Entry point : 0x08000195: Refers to the program entry address .

Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000021f8, Max: 0x00080000, ABSOLUTE):
Refers to the loading area LR_IROM1 The starting address is 0x08000000, The size is 0x000021f8, The largest area is 0x00080000.

Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000021d0, Max: 0x00080000, ABSOLUTE):
Refers to the executable area ROM_VECTOR The starting address is 0x08000000, The size is 0x000021d0, The largest area is 0x00080000.

5.Image component sizes

Storage composition size , Check... In the configuration :Size Info, In fact, it is mainly used to summarize and store size information of modules

Code: Refers to the size of the code ;

RO-data: In addition to inline data (inline data) Constant data other than ;

RW-data: Refers to reading and writing (RW)、 Initialized variable data ;

ZI-data: Means uninitialized (ZI) Variable data ;

Code、RO-data: be located FLASH in ;

RW-data、ZI-data: be located RAM in ;

remind :RW-data The initialized data is stored in the Flash in , Power on will start from FLASH Move to RAM in .

Relations are as follows :

RO Size = Code + RO Data

RW Size = RW Data + ZI Data

ROM Size = Code + RO Data + RW Data

Now I have figured it out Map The content of the document , The following analysis can be done .

(1) Address of functions and variables , This is very useful in deriving the function call stack

(2) according to Code RO data RW data Component part , Targeted optimization ROM Space and RAM Space

Two 、 summary

        Learn more about , You can also read the article I wrote before , link , I've forgotten it for a long time , Fortunately, I took notes , Easy to read later .
 

原网站

版权声明
本文为[Ch_ champion]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071043396045.html