SI ESTA ES UNA PREGUNTA MEJOR PARA EL DESBORDAMIENTO DE LA PILA, ¿PUEDE UN ADMINISTRADOR POR FAVOR MOVERSE?
Creo que tengo la respuesta para la memoria Flash, pero la pregunta de la memoria RAM todavía se me escapa.
Arduino tiene esta característica super agradable que muestra el uso de flash y RAM justo en el momento de la compilación. Ex. En la imagen de abajo puede ver que este programa Arduino usa 2084 bytes de flash (6%) y que las variables globales y estáticas usan 188 bytes (9%) de memoria dinámica, o SRAM.
Cuandocompilounprogramasimpledeparpadeoenun
¡Esto no es mucho pedir!
Cuando se completa la construcción, System Workbench muestra:
Generating binary and Printing size information:
arm-none-eabi-objcopy -O binary "STM32F103RB_Nucleo.elf" "STM32F103RB_Nucleo.bin"
arm-none-eabi-size "STM32F103RB_Nucleo.elf"
text data bss dec hex filename
2896 12 1588 4496 1190 STM32F103RB_Nucleo.elf
Cuando miro el archivo de salida binario, "SW4STM32 / Debug / STM32F103RB_Nucleo.bin", veo que es 2908 bytes, que es la suma de text
+ data
. Por lo tanto, ese debe ser mi uso de Flash! Ya que tengo 128 KB de Flash, eso significa que estoy usando 2908 / (128 * 1024) = 2% del espacio total de Flash!
¿Pero cómo entiendo la cantidad de SRAM que usan mis variables globales y estáticas y cuánto está disponible para las variables locales (como muestra Arduino)?
Todavía no tengo una pista de lo que significa todo esto, pero si esto es útil para que me ayudes , aquí está la salida de objdump -h STM32F103RB_Nucleo.elf
:
$ objdump -h STM32F103RB_Nucleo.elf
STM32F103RB_Nucleo.elf: file format elf32-little
Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 0000010c 08000000 08000000 00010000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 00000a1c 0800010c 0800010c 0001010c 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .rodata 00000028 08000b28 08000b28 00010b28 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .init_array 00000004 08000b50 08000b50 00010b50 2**2
CONTENTS, ALLOC, LOAD, DATA
4 .fini_array 00000004 08000b54 08000b54 00010b54 2**2
CONTENTS, ALLOC, LOAD, DATA
5 .data 00000004 20000000 08000b58 00020000 2**2
CONTENTS, ALLOC, LOAD, DATA
6 .bss 00000030 20000004 08000b5c 00020004 2**2
ALLOC
7 ._user_heap_stack 00000604 20000034 08000b5c 00020034 2**0
ALLOC
8 .ARM.attributes 00000029 00000000 00000000 00020004 2**0
CONTENTS, READONLY
9 .debug_info 00006795 00000000 00000000 0002002d 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000013b2 00000000 00000000 000267c2 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00000d0f 00000000 00000000 00027b74 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_aranges 000002e0 00000000 00000000 00028888 2**3
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000378 00000000 00000000 00028b68 2**3
CONTENTS, READONLY, DEBUGGING
14 .debug_macro 00001488 00000000 00000000 00028ee0 2**0
CONTENTS, READONLY, DEBUGGING
15 .debug_line 00003dcc 00000000 00000000 0002a368 2**0
CONTENTS, READONLY, DEBUGGING
16 .debug_str 00066766 00000000 00000000 0002e134 2**0
CONTENTS, READONLY, DEBUGGING
17 .comment 0000007f 00000000 00000000 0009489a 2**0
CONTENTS, READONLY
18 .debug_frame 00000610 00000000 00000000 0009491c 2**2
CONTENTS, READONLY, DEBUGGING