How to find code size like RAM ROM in eclipse ide

ningappa BS
Posts: 51
Joined: Sat Mar 17, 2018 4:49 am

How to find code size like RAM ROM in eclipse ide

Postby ningappa BS » Mon Aug 05, 2019 8:00 am

Hi,

am using eclipse(oxyzen.3A) ide,how i can find the code size like RAM ROM which is used by project.


thanks in advance

User avatar
rudi ;-)
Posts: 1728
Joined: Fri Nov 13, 2015 3:25 pm

Re: How to find code size like RAM ROM in eclipse ide

Postby rudi ;-) » Mon Aug 05, 2019 12:08 pm

ningappa BS wrote:
Mon Aug 05, 2019 8:00 am
Hi,

am using eclipse(oxyzen.3A) ide,how i can find the code size like RAM ROM which is used by project.


thanks in advance
hi
good
question :)
the info can reflected by esptool ( Makefile )
also showed in eclipse (example in console).

best wishes
rudi ;-)

edit:

example:
create a new target "size"
pic1#0.jpg
pic1#0.jpg (43.11 KiB) Viewed 7311 times
use it for your reference
example simpy "make size" / run build target "size"
pic1#1.jpg
pic1#1.jpg (357.6 KiB) Viewed 7311 times
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

ningappa BS
Posts: 51
Joined: Sat Mar 17, 2018 4:49 am

Re: How to find code size like RAM ROM in eclipse ide

Postby ningappa BS » Tue Aug 06, 2019 9:37 am

but did not understand these two lines, where it will store is it in ROM or flash?
Flash code: 833726 bytes
Flash rodata: 210176 bytes

thank you rudi, thanks for the response.

User avatar
rudi ;-)
Posts: 1728
Joined: Fri Nov 13, 2015 3:25 pm

Re: How to find code size like RAM ROM in eclipse ide

Postby rudi ;-) » Tue Aug 06, 2019 10:46 am

ningappa BS wrote:
Tue Aug 06, 2019 9:37 am
but did not understand these two lines, where it will store is it in ROM or flash?
Flash code: 833726 bytes
Flash rodata: 210176 bytes

thank you rudi, thanks for the response.
hi

there is a good description what .text, .data, .bss, stack and heap do or be.
also where each of these segments would reside in a microcontroller memory:




.text

The .text segment contains the actual code, and is programmed into Flash memory for microcontrollers. There may be more than one text segment when there are multiple, non-contiguous blocks of Flash memory; e.g. a start vector and interrupt vectors located at the top of memory, and code starting at 0; or separate sections for a bootstrap and main program.


.bss and .data

There are three types of data that can be allocated external to a function or procedure; the first is uninitialized data (historically called .bss, which also includes the 0 initialized data), and the second is initialized (non-bss), or .data. The name "bss" historically comes from "Block Started by Symbol", used in an assembler some 60 years ago. Both of these areas areas are located in RAM.

As a program is compiled, variables will be allocated to one of these two general areas. During the linking stage, all of the data items will be collected together. All variables which need to be initialized will have a portion of the program memory set aside to hold the initial values, and just before main() is called, the variables will be initialized, typically by a module called crt0. The bss section is initialized to all zeros by the same startup code.

With a few microcontrollers, there are shorter instructions that allow access to the first page (first 256 locations, sometime called page 0) of RAM. The compiler for these processors may reserve a keyword like near to designate variables to be placed there. Similarly, there are also microcontrollers that can only reference certain areas via a pointer register (requiring extra instructions), and such variables are designated far. Finally, some processors can address a section of memory bit by bit and the compiler will have a way to specify that (such as the keyword bit).

So there might be additional segments like .nearbss and .neardata, etc., where these variables are collected.


.rodata

The third type of data external to a function or procedure is like the initialized variables, except it is read-only and cannot be modified by the program. In the C language, these variables are denoted using the const keyword. They are usually stored as part of the program flash memory. Sometimes they are identified as part of a .rodata (read-only data) segment. On microcontrollers using the Harvard architecture, the compiler must use special instructions to access these variables.


stack and heap

The stack and heap are both placed in RAM. Depending on the architecture of the processor, the stack may grow up, or grow down. If it grows up, it will be placed at the bottom of RAM. If it grows down, it will be placed at the end of RAM. The heap will use the remaining RAM not allocated to variables, and grow the opposite direction of the stack. The maximum size of the stack and heap can usually be specified as linker parameters.

Variables placed on the stack are any variables defined within a function or procedure without the keyword static. They were once called automatic variables (auto keyword), but that keyword is not needed. Historically, auto exists because it was part of the B language which preceded C, and there it was needed. Function parameters are also placed on the stack.



Credit for the text SRC and further info

the ESP32 memory map you find example in the ESP32 Datasheet Section 3.1.4

also you can study the ESP32 technical reference Section 1 System and Memory
esp32_system_map.jpg
esp32_system_map.jpg (113.1 KiB) Viewed 7227 times
hope this helps
best wishes
rudi ;-)
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

ESP_Sprite
Posts: 9730
Joined: Thu Nov 26, 2015 4:08 am

Re: How to find code size like RAM ROM in eclipse ide

Postby ESP_Sprite » Wed Aug 07, 2019 2:44 am

ningappa BS wrote:
Tue Aug 06, 2019 9:37 am
but did not understand these two lines, where it will store is it in ROM or flash?

Not sure if that's a typo/thinko, but none of the code you compile yourself is stored in ROM, as it is, as the name implies, read-only and cannot be programmed.

Who is online

Users browsing this forum: username and 112 guests