I have problems to save a value in a variable.
When I look at the disassembly code in the Disassembly Window in the Debugger it looks really weird to me. When I generate a disassembly from the axf with the fromelf command it makes much more sense to me.
The C code that interest me. When I run the code at the end the variable local_z stores not the value 6 as expected instead 0.
uint32_t global_c ; uint32_t *pglobal_c = &global_c; void MX_FREERTOS_Init(void) { uint32_t local_c; uint32_t local_z; local_c = 5; local_c = 6; global_c = 6; local_z = global_c+local_c; }
Assembly code from the Disassembly Window:
126: uint32_t local_c; 127: uint32_t local_z; 0x08004788 2002 MOVS r0,#0x02 128: local_c = 5; 0x0800478A 9002 STR r0,[sp,#0x08] 129: local_c = 6; 0x0800478C 2000 MOVS r0,#0x00 135: global_c = 6; 0x0800478E 9003 STR r0,[sp,#0x0C] 0x08004790 2003 MOVS r0,#0x03 0x08004792 9004 STR r0,[sp,#0x10] 136: local_z = global_c+local_c; 0x08004794 2005 MOVS r0,#0x05 0x08004796 9005 STR r0,[sp,#0x14] 0x08004798 A901 ADD r1,sp,#0x04
Assembly code from the fromelf command:To generate the assembler code I use the "fromelf $PIntellitraps_CPU_V1_0\%L --disassemble --interleave=source --text -c --output=outfile.lst" command
;;;126 uint32_t local_c; ;;;127 uint32_t local_z; ;;;128 local_c = 5; 0x0800478a: 2505 .% MOVS r5,#5 ;;;129 local_c = 6; 0x0800478c: 2506 .% MOVS r5,#6 ;;;135 global_c = 6; 0x0800478e: 2006 . MOVS r0,#6 0x08004790: 4904 .I LDR r1,[pc,#16] ; [0x80047a4] = 0x20000028 0x08004792: 6008 .` STR r0,[r1,#0] ;;;136 local_z = global_c+local_c; 0x08004794: 4608 .F MOV r0,r1 0x08004796: 6800 .h LDR r0,[r0,#0] 0x08004798: 1944 D. ADDS r4,r0,r5
Can anybody explain to me why they are different and why the value don't get stored?
I use uVision V5.29 Professional with the ARM Compiler V5. The optimization Level is 0 and I compile for a STM32F7969NIHx.
Thank you in advance
Broeker said:You didn't, by any chance, disable the actual download of the executable to the chip in your debugger settings
That is exactly what I have done. Thank you for that advice.It works much better now.