AnsweredAssumed Answered

Unknown data at the end of the hex file

Question asked by Hopkins Kong on Sep 20, 2015
Latest reply on Sep 23, 2015 by Hopkins Kong
I have found a bunch of unknown data at the end of my hex file, it was located behind my last data.

For example, when i added: 
const uint16_t defaultSettingByte __attribute__((at(0x0800DC00), used)) = 0x0073;
I will found a group of unknown data after the flash address 0x0800DC00:
stm32_unknown_data_at_end_01.png

When i change the address to 0x0800FC00:
const uint16_t defaultSettingByte __attribute__((at(0x0800FC00), used)) = 0x0073;
The same group of data appeared after 0x0800FC00:
stm32_unknown_data_at_end_02.png

When i just remove the variable, the same unknown data just come up at the end of my program:
stm32_unknown_data_at_end_03.png

This keeps me annoying as when i do page erase on the page that defaultSettingByte  located in, it also erased the unknown data (which i expect it does not exists, or it should be located at the end of the execution address of my program), after erased that page, my SysTick doesn't work anymore... So maybe the unknown code were related to SysTick?

I have already tried using --datacompressor=off in linker option with no luck. This is my memory map:
Memory Map of the image
 
  Image Entry point : 0x080000c1
 
  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00003214, Max: 0x00010000, ABSOLUTE)
 
    Execution Region ER_IROM1 (Base: 0x08000000, Size: 0x000031dc, Max: 0x00010000, ABSOLUTE)
 
    Base Addr    Size         Type   Attr      Idx    E Section Name        Object
 
    0x08000000   0x000000c0   Data   RO          309    RESET               startup_stm32f051.o
    0x080000c0   0x00000008   Code   RO          354  * !!!main             c_p.l(__main.o)
    0x080000c8   0x0000003c   Code   RO          505    !!!scatter          c_p.l(__scatter.o)
    0x08000104   0x0000001a   Code   RO          506    !!handler_copy      c_p.l(__scatter_copy.o)
    0x0800011e   0x00000002   PAD
    0x08000120   0x0000001c   Code   RO          507    !!handler_zi        c_p.l(__scatter_zi.o)
    0x0800013c   0x00000002   Code   RO          350    .ARM.Collect$$_printf_percent$$00000000  c_p.l(_printf_percent.o)
    0x0800013e   0x0000000a   Code   RO          349    .ARM.Collect$$_printf_percent$$00000009  c_p.l(_printf_d.o)
    0x08000148   0x0000000a   Code   RO          348    .ARM.Collect$$_printf_percent$$0000000C  c_p.l(_printf_x.o)
    0x08000152   0x00000004   Code   RO          370    .ARM.Collect$$_printf_percent$$00000017  c_p.l(_printf_percent_end.o)
    0x08000156   0x00000002   Code   RO          401    .ARM.Collect$$libinit$$00000000  c_p.l(libinit.o)
    0x08000158   0x00000000   Code   RO          412    .ARM.Collect$$libinit$$00000002  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          414    .ARM.Collect$$libinit$$00000004  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          417    .ARM.Collect$$libinit$$0000000A  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          419    .ARM.Collect$$libinit$$0000000C  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          421    .ARM.Collect$$libinit$$0000000E  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          424    .ARM.Collect$$libinit$$00000011  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          426    .ARM.Collect$$libinit$$00000013  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          428    .ARM.Collect$$libinit$$00000015  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          430    .ARM.Collect$$libinit$$00000017  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          432    .ARM.Collect$$libinit$$00000019  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          434    .ARM.Collect$$libinit$$0000001B  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          436    .ARM.Collect$$libinit$$0000001D  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          438    .ARM.Collect$$libinit$$0000001F  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          440    .ARM.Collect$$libinit$$00000021  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          442    .ARM.Collect$$libinit$$00000023  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          444    .ARM.Collect$$libinit$$00000025  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          448    .ARM.Collect$$libinit$$0000002C  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          450    .ARM.Collect$$libinit$$0000002E  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          452    .ARM.Collect$$libinit$$00000030  c_p.l(libinit2.o)
    0x08000158   0x00000000   Code   RO          454    .ARM.Collect$$libinit$$00000032  c_p.l(libinit2.o)
    0x08000158   0x00000002   Code   RO          455    .ARM.Collect$$libinit$$00000033  c_p.l(libinit2.o)
    0x0800015a   0x00000002   Code   RO          475    .ARM.Collect$$libshutdown$$00000000  c_p.l(libshutdown.o)
    0x0800015c   0x00000000   Code   RO          490    .ARM.Collect$$libshutdown$$00000003  c_p.l(libshutdown2.o)
    0x0800015c   0x00000000   Code   RO          493    .ARM.Collect$$libshutdown$$00000006  c_p.l(libshutdown2.o)
    0x0800015c   0x00000000   Code   RO          496    .ARM.Collect$$libshutdown$$00000009  c_p.l(libshutdown2.o)
    0x0800015c   0x00000000   Code   RO          498    .ARM.Collect$$libshutdown$$0000000B  c_p.l(libshutdown2.o)
    0x0800015c   0x00000000   Code   RO          501    .ARM.Collect$$libshutdown$$0000000E  c_p.l(libshutdown2.o)
    0x0800015c   0x00000002   Code   RO          502    .ARM.Collect$$libshutdown$$0000000F  c_p.l(libshutdown2.o)
    0x0800015e   0x00000000   Code   RO          364    .ARM.Collect$$rtentry$$00000000  c_p.l(__rtentry.o)
    0x0800015e   0x00000000   Code   RO          375    .ARM.Collect$$rtentry$$00000002  c_p.l(__rtentry2.o)
    0x0800015e   0x00000006   Code   RO          387    .ARM.Collect$$rtentry$$00000004  c_p.l(__rtentry4.o)
    0x08000164   0x00000000   Code   RO          377    .ARM.Collect$$rtentry$$00000009  c_p.l(__rtentry2.o)
    0x08000164   0x00000004   Code   RO          378    .ARM.Collect$$rtentry$$0000000A  c_p.l(__rtentry2.o)
    0x08000168   0x00000000   Code   RO          380    .ARM.Collect$$rtentry$$0000000C  c_p.l(__rtentry2.o)
    0x08000168   0x00000008   Code   RO          381    .ARM.Collect$$rtentry$$0000000D  c_p.l(__rtentry2.o)
    0x08000170   0x00000002   Code   RO          406    .ARM.Collect$$rtexit$$00000000  c_p.l(rtexit.o)
    0x08000172   0x00000000   Code   RO          458    .ARM.Collect$$rtexit$$00000002  c_p.l(rtexit2.o)
    0x08000172   0x00000004   Code   RO          459    .ARM.Collect$$rtexit$$00000003  c_p.l(rtexit2.o)
    0x08000176   0x00000006   Code   RO          460    .ARM.Collect$$rtexit$$00000004  c_p.l(rtexit2.o)
    0x0800017c   0x00000074   Code   RO          310    .text               startup_stm32f051.o
    0x080001f0   0x0000002c   Code   RO          317    .text               c_p.l(__2sprintf.o)
    0x0800021c   0x0000006c   Code   RO          319    .text               c_p.l(__printf.o)
    0x08000288   0x0000006c   Code   RO          320    .text               c_p.l(_printf_dec.o)
    0x080002f4   0x00000058   Code   RO          323    .text               c_p.l(_printf_hex_int.o)
    0x0800034c   0x0000015a   Code   RO          351    .text               c_p.l(aeabi_sdiv.o)
    0x080004a6   0x00000006   Code   RO          353    .text               c_p.l(heapauxi.o)
    0x080004ac   0x0000007c   Code   RO          355    .text               fz_ps.l(d2f.o)
    0x08000528   0x00000358   Code   RO          356    .text               fz_ps.l(daddsub.o)
    0x08000880   0x00000448   Code   RO          357    .text               fz_ps.l(ddiv.o)
    0x08000cc8   0x00000058   Code   RO          359    .text               fz_ps.l(dflti.o)
    0x08000d20   0x00000248   Code   RO          360    .text               fz_ps.l(dmul.o)
    0x08000f68   0x00000030   Code   RO          361    .text               fz_ps.l(ffixui.o)
    0x08000f98   0x000000b0   Code   RO          367    .text               c_p.l(_printf_intcommon.o)
    0x08001048   0x00000030   Code   RO          368    .text               c_p.l(_printf_char_common.o)
    0x08001078   0x0000000a   Code   RO          369    .text               c_p.l(_sputc.o)
    0x08001082   0x00000028   Code   RO          371    .text               c_p.l(rtudiv10.o)
    0x080010aa   0x00000002   PAD
    0x080010ac   0x00000064   Code   RO          372    .text               fz_ps.l(fcmpin.o)
    0x08001110   0x00000030   Code   RO          391    .text               fz_ps.l(cmpret.o)
    0x08001140   0x00000010   Code   RO          392    .text               fz_ps.l(fnan2.o)
    0x08001150   0x0000003e   Code   RO          393    .text               c_p.l(sys_stackheap_outer.o)
    0x0800118e   0x0000000c   Code   RO          395    .text               c_p.l(exit.o)
    0x0800119a   0x0000005e   Code   RO          402    .text               fz_ps.l(retnan.o)
    0x080011f8   0x00000008   Code   RO          403    .text               c_p.l(libspace.o)
    0x08001200   0x0000000c   Code   RO          456    .text               c_p.l(sys_exit.o)
    0x0800120c   0x00000002   Code   RO          469    .text               c_p.l(use_no_semi.o)
    0x0800120e   0x00000000   Code   RO          470    .text               c_p.l(indicate_semi.o)
    0x0800120e   0x00000018   Code   RO           58    i.ADC_ChannelConfig  stm32f0xx_adc.o
    0x08001226   0x00000018   Code   RO           62    i.ADC_Cmd           stm32f0xx_adc.o
    0x0800123e   0x00000002   PAD
    0x08001240   0x00000020   Code   RO           66    i.ADC_DeInit        stm32f0xx_adc.o
    0x08001260   0x0000003c   Code   RO           68    i.ADC_GetCalibrationFactor  stm32f0xx_adc.o
    0x0800129c   0x00000008   Code   RO           69    i.ADC_GetConversionValue  stm32f0xx_adc.o
    0x080012a4   0x00000030   Code   RO           70    i.ADC_GetFlagStatus  stm32f0xx_adc.o
    0x080012d4   0x0000002c   Code   RO           73    i.ADC_Init          stm32f0xx_adc.o
    0x08001300   0x0000000a   Code   RO           76    i.ADC_StartOfConversion  stm32f0xx_adc.o
    0x0800130a   0x00000002   PAD
    0x0800130c   0x00000028   Code   RO           87    i.DAC_Cmd           stm32f0xx_dac.o
    0x08001334   0x00000038   Code   RO           95    i.DAC_Init          stm32f0xx_dac.o
    0x0800136c   0x00000020   Code   RO           96    i.DAC_SetChannel1Data  stm32f0xx_dac.o
    0x0800138c   0x000002b4   Code   RO            3    i.EXTI4_15_IRQHandler  main.o
    0x08001640   0x0000000c   Code   RO          267    i.EXTI_ClearITPendingBit  stm32f0xx_exti.o
    0x0800164c   0x0000001c   Code   RO          271    i.EXTI_GetITStatus  stm32f0xx_exti.o
    0x08001668   0x00000088   Code   RO          272    i.EXTI_Init         stm32f0xx_exti.o
    0x080016f0   0x0000000c   Code   RO          276    i.FLASH_ClearFlag   stm32f0xx_flash.o
    0x080016fc   0x0000004c   Code   RO          278    i.FLASH_ErasePage   stm32f0xx_flash.o
    0x08001748   0x0000003c   Code   RO          281    i.FLASH_GetStatus   stm32f0xx_flash.o
    0x08001784   0x0000001c   Code   RO          304    i.FLASH_SetLatency  stm32f0xx_flash.o
    0x080017a0   0x00000024   Code   RO          305    i.FLASH_Unlock      stm32f0xx_flash.o
    0x080017c4   0x00000028   Code   RO          306    i.FLASH_WaitForLastOperation  stm32f0xx_flash.o
    0x080017ec   0x00000090   Code   RO          105    i.GPIO_Init         stm32f0xx_gpio.o
    0x0800187c   0x00000014   Code   RO          109    i.GPIO_ReadInputDataBit  stm32f0xx_gpio.o
    0x08001890   0x00000004   Code   RO          112    i.GPIO_ResetBits    stm32f0xx_gpio.o
    0x08001894   0x00000004   Code   RO          113    i.GPIO_SetBits      stm32f0xx_gpio.o
    0x08001898   0x00000084   Code   RO            4    i.LCDWriteCmd       main.o
    0x0800191c   0x00000084   Code   RO            5    i.LCDWriteDat       main.o
    0x080019a0   0x00000070   Code   RO          261    i.NVIC_Init         stm32f0xx_misc.o
    0x08001a10   0x00000078   Code   RO            6    i.NVIC_SetPriority  main.o
    0x08001a88   0x00000038   Code   RO          119    i.RCC_ADCCLKConfig  stm32f0xx_rcc.o
    0x08001ac0   0x00000020   Code   RO          120    i.RCC_AHBPeriphClockCmd  stm32f0xx_rcc.o
    0x08001ae0   0x00000020   Code   RO          122    i.RCC_APB1PeriphClockCmd  stm32f0xx_rcc.o
    0x08001b00   0x00000020   Code   RO          124    i.RCC_APB2PeriphClockCmd  stm32f0xx_rcc.o
    0x08001b20   0x00000020   Code   RO          125    i.RCC_APB2PeriphResetCmd  stm32f0xx_rcc.o
    0x08001b40   0x00000078   Code   RO          133    i.RCC_DeInit        stm32f0xx_rcc.o
    0x08001bb8   0x00000048   Code   RO          135    i.RCC_GetFlagStatus  stm32f0xx_rcc.o
    0x08001c00   0x00000020   Code   RO          138    i.RCC_HCLKConfig    stm32f0xx_rcc.o
    0x08001c20   0x00000024   Code   RO          150    i.RCC_PCLKConfig    stm32f0xx_rcc.o
    0x08001c44   0x00000028   Code   RO          151    i.RCC_PLLCmd        stm32f0xx_rcc.o
    0x08001c6c   0x00000024   Code   RO          152    i.RCC_PLLConfig     stm32f0xx_rcc.o
    0x08001c90   0x0000001c   Code   RO          156    i.RCC_SYSCLKConfig  stm32f0xx_rcc.o
    0x08001cac   0x00000048   Code   RO            7    i.ReadInputButtonWithDebounce  main.o
    0x08001cf4   0x0000001c   Code   RO           33    i.SPIReadData       nrf24l01p.o
    0x08001d10   0x00000020   Code   RO           34    i.SPISendData       nrf24l01p.o
    0x08001d30   0x00000020   Code   RO          168    i.SPI_CalculateCRC  stm32f0xx_spi.o
    0x08001d50   0x0000001c   Code   RO          169    i.SPI_Cmd           stm32f0xx_spi.o
    0x08001d6c   0x00000014   Code   RO          178    i.SPI_I2S_GetFlagStatus  stm32f0xx_spi.o
    0x08001d80   0x00000058   Code   RO          183    i.SPI_Init          stm32f0xx_spi.o
    0x08001dd8   0x00000020   Code   RO          185    i.SPI_NSSInternalSoftwareConfig  stm32f0xx_spi.o
    0x08001df8   0x0000000c   Code   RO          187    i.SPI_ReceiveData8  stm32f0xx_spi.o
    0x08001e04   0x00000014   Code   RO          188    i.SPI_RxFIFOThresholdConfig  stm32f0xx_spi.o
    0x08001e18   0x0000000a   Code   RO          190    i.SPI_SendData8     stm32f0xx_spi.o
    0x08001e22   0x00000002   PAD
    0x08001e24   0x000000d8   Code   RO          313    i.SetSysClock       system_stm32f0xx.o
    0x08001efc   0x00000024   Code   RO          263    i.SysTick_CLKSourceConfig  stm32f0xx_misc.o
    0x08001f20   0x00000148   Code   RO            8    i.SysTick_Handler   main.o
    0x08002068   0x000000b0   Code   RO          314    i.SystemCoreClockUpdate  system_stm32f0xx.o
    0x08002118   0x0000007c   Code   RO          315    i.SystemInit        system_stm32f0xx.o
    0x08002194   0x0000002c   Code   RO            9    i.clearLCD          main.o
    0x080021c0   0x00000022   Code   RO           50    i.dummyDelay_us     util.o
    0x080021e2   0x00000002   PAD
    0x080021e4   0x00000034   Code   RO           10    i.initADC           main.o
    0x08002218   0x0000001a   Code   RO           11    i.initDAC           main.o
    0x08002232   0x0000002e   Code   RO           12    i.initEXTI          main.o
    0x08002260   0x0000010c   Code   RO           13    i.initGPIO          main.o
    0x0800236c   0x000000a8   Code   RO           14    i.initLCD           main.o
    0x08002414   0x0000005e   Code   RO           15    i.initRCCHSI        main.o
    0x08002472   0x00000002   PAD
    0x08002474   0x00000060   Code   RO           16    i.initSPI           main.o
    0x080024d4   0x00000070   Code   RO           17    i.initSysTick       main.o
    0x08002544   0x00000064   Code   RO           18    i.init_nRF24L01P    main.o
    0x080025a8   0x0000007c   Code   RO           19    i.interruptStartupProcess  main.o
    0x08002624   0x00000478   Code   RO           20    i.main              main.o
    0x08002a9c   0x00000014   Code   RO           35    i.nRF24L01PCEHigh   nrf24l01p.o
    0x08002ab0   0x00000018   Code   RO           36    i.nRF24L01PCELow    nrf24l01p.o
    0x08002ac8   0x00000028   Code   RO           37    i.nRF24L01PDisableChip  nrf24l01p.o
    0x08002af0   0x00000012   Code   RO           38    i.nRF24L01PEnableChip  nrf24l01p.o
    0x08002b02   0x0000003a   Code   RO           39    i.nRF24L01PExecuteCommand  nrf24l01p.o
    0x08002b3c   0x0000003a   Code   RO           40    i.nRF24L01PReadRegister  nrf24l01p.o
    0x08002b76   0x00000002   PAD
    0x08002b78   0x00000054   Code   RO           41    i.nRF24L01PRxMode   nrf24l01p.o
    0x08002bcc   0x00000070   Code   RO           42    i.nRF24L01PTest     nrf24l01p.o
    0x08002c3c   0x00000062   Code   RO           43    i.nRF24L01PTx       nrf24l01p.o
    0x08002c9e   0x00000002   PAD
    0x08002ca0   0x00000024   Code   RO           44    i.nRF24L01PTxMode   nrf24l01p.o
    0x08002cc4   0x0000003c   Code   RO           45    i.nRF24L01PWriteArrayToRegister  nrf24l01p.o
    0x08002d00   0x0000002c   Code   RO           46    i.nRF24L01PWriteRegister  nrf24l01p.o
    0x08002d2c   0x00000080   Code   RO           21    i.radioSendData     main.o
    0x08002dac   0x00000040   Code   RO           22    i.readADC1          main.o
    0x08002dec   0x00000020   Code   RO           23    i.sendHeartbeat     main.o
    0x08002e0c   0x00000104   Code   RO           24    i.updateBatteryPercentage  main.o
    0x08002f10   0x00000060   Code   RO           25    i.updatePersonStatus  main.o
    0x08002f70   0x00000088   Code   RO           26    i.updatePersonTalking  main.o
    0x08002ff8   0x00000048   Code   RO           27    i.writeCharToLCD    main.o
    0x08003040   0x00000020   Code   RO           28    i.writeStrToLCD     main.o
    0x08003060   0x00000054   Code   RO          362    x$fpl$fleqf         fz_ps.l(flef.o)
    0x080030b4   0x00000058   Code   RO          363    x$fpl$frleqf        fz_ps.l(frlef.o)
    0x0800310c   0x00000000   Code   RO          373    x$fpl$usenofp       fz_ps.l(usenofp.o)
    0x0800310c   0x00000008   Data   RO           29    .constdata          main.o
    0x08003114   0x00000028   Data   RO          324    .constdata          c_p.l(_printf_hex_int.o)
    0x0800313c   0x00000080   Data   RO          358    .constdata          fz_ps.l(ddiv.o)
    0x080031bc   0x00000020   Data   RO          503    Region$$Table       anon$$obj.o
 
 
    Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00000698, Max: 0x00002000, ABSOLUTE)
 
    Base Addr    Size         Type   Attr      Idx    E Section Name        Object
 
    0x20000000   0x00000017   Data   RW           30    .data               main.o
    0x20000017   0x0000000a   Data   RW           47    .data               nrf24l01p.o
    0x20000021   0x00000003   PAD
    0x20000024   0x00000014   Data   RW          316    .data               system_stm32f0xx.o
    0x20000038   0x00000060   Zero   RW          404    .bss                c_p.l(libspace.o)
    0x20000098   0x00000200   Zero   RW          308    HEAP                startup_stm32f051.o
    0x20000298   0x00000400   Zero   RW          307    STACK               startup_stm32f051.o



I am using STM32F051C8T6, with Keil MDK 5.15.0 as IDE and default compiler.

Any ideas on what's going on?

Outcomes