Värden från stacken(?) hamnar i min array (IAR, LM4F120XL)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JustNeed
Inlägg: 799
Blev medlem: 7 november 2007, 22:07:01
Ort: 08

Värden från stacken(?) hamnar i min array (IAR, LM4F120XL)

Inlägg av JustNeed »

Jag håller på att felsöka ett program i en debugger. Utvecklingsmiljön är IAR Embedded Workshop och programmet körs på ett stellaris LM4F120 launchboard.

Jag har en int-array med 50 värden som initieras till 0. När jag övervakar minnet med debugfunktionen ändras värdena i slutet på arrayen när vissa funktioner körs.
Arrayen är alltså initialiserad, men koden har alltså ännu inte kommit till de delar där den används. Vissa värden verkar vara parametrar i funktionsanrop.

Jag är ännu inte så bekant med utvecklingsmiljön.

Någon som har varit med om något liknande som kan hjälpa?

Edit: Att tillägga är att arrayen ändras av biblioteksfunktioner också och att arrayer och övriga variabler definierade i main-funktionen totalt borde ta upp mindre än 1 KB och att SRAM-minnet är 32KB

Edit: Jag hittade var man sätter stackstorleken, ändrade den och det verkar hjälpa.
Om någon annan finner sig undrande i framtiden så sätts stackstorleken i en .c-fil kallad startup_ewarm.c.
Tackar!
Senast redigerad av JustNeed 19 februari 2013, 23:40:43, redigerad totalt 1 gång.
Användarvisningsbild
mri
Inlägg: 1165
Blev medlem: 15 mars 2007, 13:20:50
Ort: Jakobstad, Finland
Kontakt:

Re: Värden från stacken(?) hamnar i min array (IAR, LM4F120X

Inlägg av mri »

Hur mycket minne är reserverat för stacken och mellan vilka adresser ligger den. Mellan vilka adresser ligger din int-array?
JustNeed
Inlägg: 799
Blev medlem: 7 november 2007, 22:07:01
Ort: 08

Re: Värden från stacken(?) hamnar i min array (IAR, LM4F120X

Inlägg av JustNeed »

Edit: Jag hittade var man sätter stackstorleken, ändrade den och det verkar hjälpa.
Om någon annan finner sig undrande i framtiden så sätts stackstorleken i en .c-fil kallad startup_ewarm.c.
Tackar!


Jag hittar inte var man sätter stack-storleken.


Hittar .map-filen iaf. Det ser ut som att min variabel är från 0x20000000 till 0x200000c8 och en annan variabel från 0x200000c8 till 0x200000cc

senare i filen lägger de något annat där och stacken verkar hamna precis bredvid.

Kod: Markera allt

Entry                      Address   Size  Type      Object
-----                      -------   ----  ----      ------
...
g_ulBase                0x200000c8    0x4  Data  Lc  uartstdio.o [1]
...
pulStack                0x200000cc  0x100  Data  Lc  startup_ewarm.o [1]

Kod: Markera allt

###############################################################################
#                                                                             #
# IAR ELF Linker V6.40.1.53790/W32 for ARM              19/Feb/2013  15:47:23 #
# Copyright 2007-2012 IAR Systems AB.                                         #
#                                                                             #
#    Output file  =  E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\Exe\ #
#                    project0.out                                             #
#    Map file     =  E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\List #
#                    \project0.map                                            #
#    Command line =  E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\Obj\ #
#                    Sensor.o E:\StellarisWare\boards\ek-lm4f120xl\project0\e #
#                    warm\Obj\startup_ewarm.o E:\StellarisWare\boards\ek-lm4f #
#                    120xl\project0\ewarm\Obj\uartstdio.o                     #
#                    E:\StellarisWare\driverlib\ewarm-cm4f\Exe\driverlib-cm4f #
#                    .a --redirect _Printf=_PrintfTiny --redirect             #
#                    _Scanf=_ScanfSmall -o E:\StellarisWare\boards\ek-lm4f120 #
#                    xl\project0\ewarm\Exe\project0.out --map                 #
#                    E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\List #
#                    \project0.map --config E:\StellarisWare\boards\ek-lm4f12 #
#                    0xl\project0\project0.icf --semihosting --entry          #
#                    __iar_program_start --vfe                                #
#                                                                             #
#                                                                             #
###############################################################################

*******************************************************************************
*** RUNTIME MODEL ATTRIBUTES
***

CppFlavor       = *
__SystemLibrary = DLib


*******************************************************************************
*** PLACEMENT SUMMARY
***

"A1":  place at start of [0x00000000-0x0003ffff] { ro section .intvec };
"P1":  place in [from 0x00000000 to 0x0003ffff] { ro };
"P2":  place in [from 0x20000000 to 0x20007fff] { rw, block HEAP };

  Section          Kind        Address   Size  Object
  -------          ----        -------   ----  ------
"A1":                                   0x26c
  .intvec          const    0x00000000  0x26c  startup_ewarm.o [1]
                          - 0x0000026c  0x26c

"P1":                                   0xe24
  .text            ro code  0x0000026c  0x358  sysctl.o [4]
  .text            ro code  0x000005c4  0x2f8  uartstdio.o [1]
  .text            ro code  0x000008bc  0x1ac  Sensor.o [1]
  .text            ro code  0x00000a68  0x140  gpio.o [4]
  .text            ro code  0x00000ba8    0x6  ABImemclr4.o [6]
  .text            ro code  0x00000bae   0x22  zero_init3.o [6]
  .text            ro code  0x00000bd0   0x56  ABImemcpy.o [6]
  .text            ro code  0x00000c28  0x128  adc.o [4]
  .text            ro code  0x00000d50   0x32  ABImemset48.o [6]
  .rodata          const    0x00000d88   0xa8  Sensor.o [1]
  .rodata          const    0x00000e30   0x78  gpio.o [4]
  .rodata          const    0x00000ea8   0x6c  sysctl.o [4]
  .text            ro code  0x00000f14   0x28  data_init3.o [6]
  .iar.init_table  const    0x00000f3c   0x10  - Linker created -
  .text            ro code  0x00000f4c   0x1e  startup_ewarm.o [1]
  .text            ro code  0x00000f6a    0xc  cstartup_M.o [6]
  .text            ro code  0x00000f78   0x1a  fpinit_M.o [5]
  .text            ro code  0x00000f94   0x16  cmain.o [6]
  .text            ro code  0x00000faa    0x4  low_level_init.o [3]
  .text            ro code  0x00000fae    0x4  exit.o [3]
  .text            ro code  0x00000fb4    0xa  cexit.o [6]
  .text            ro code  0x00000fc0   0x14  exit.o [7]
  .rodata          const    0x00000fd4   0x18  Sensor.o [1]
  .rodata          const    0x00000fec   0x18  Sensor.o [1]
  .rodata          const    0x00001004   0x18  Sensor.o [1]
  .rodata          const    0x0000101c   0x18  Sensor.o [1]
  .rodata          const    0x00001034   0x14  uartstdio.o [1]
  .rodata          const    0x00001048   0x10  Sensor.o [1]
  .rodata          const    0x00001058    0xc  uartstdio.o [1]
  .rodata          const    0x00001064    0xc  uartstdio.o [1]
  .rodata          const    0x00001070    0xc  sysctl.o [4]
  .rodata          const    0x0000107c    0x8  Sensor.o [1]
  .rodata          const    0x00001084    0x8  uartstdio.o [1]
  .rodata          const    0x0000108c    0x4  uartstdio.o [1]
  .rodata          const    0x00001090    0x0  zero_init3.o [6]
                          - 0x00001090  0xe24

"P2", part 1 of 2:                       0xcc
  .bss             zero     0x20000000   0xc8  Sensor.o [1]
  .bss             zero     0x200000c8    0x4  uartstdio.o [1]
                          - 0x200000cc   0xcc

"P2", part 2 of 2:                      0x100
  .noinit          uninit   0x200000cc  0x100  startup_ewarm.o [1]
                          - 0x200001cc  0x100


*******************************************************************************
*** INIT TABLE
***

          Address     Size
          -------     ----
Zero (__iar_zero_init3)
    1 destination range, total size 0xcc:
          0x20000000  0xcc



*******************************************************************************
*** MODULE SUMMARY
***

    Module            ro code  ro data  rw data
    ------            -------  -------  -------
E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\Obj: [1]
    Sensor.o              428      288      200
    startup_ewarm.o        30      620      256
    uartstdio.o           760       56        4
    -------------------------------------------
    Total:              1 218      964      460

command line: [2]
    -------------------------------------------
    Total:

dl7M_tln.a: [3]
    exit.o                  4
    low_level_init.o        4
    -------------------------------------------
    Total:                  8

driverlib-cm4f.a: [4]
    adc.o                 296
    gpio.o                320      120
    sysctl.o              856      120
    -------------------------------------------
    Total:              1 472      240

m7M_tlv.a: [5]
    fpinit_M.o             26
    -------------------------------------------
    Total:                 26

rt7M_tl.a: [6]
    ABImemclr4.o            6
    ABImemcpy.o            86
    ABImemset48.o          50
    cexit.o                10
    cmain.o                22
    cstartup_M.o           12
    data_init3.o           40
    zero_init3.o           34
    -------------------------------------------
    Total:                260

shb_l.a: [7]
    exit.o                 20
    -------------------------------------------
    Total:                 20

    Gaps                   10        6
    Linker created                  16
-----------------------------------------------
    Grand Total:        3 014    1 226      460


*******************************************************************************
*** ENTRY LIST
***

Entry                      Address   Size  Type      Object
-----                      -------   ----  ----      ------
?main                   0x00000f95         Code  Gb  cmain.o [6]
ADCIntClear             0x00000c53    0xa  Code  Gb  adc.o [4]
ADCIntStatus            0x00000c29   0x2a  Code  Gb  adc.o [4]
ADCProcessorTrigger     0x00000d2b   0x1c  Code  Gb  adc.o [4]
ADCSequenceConfigure    0x00000c63   0x30  Code  Gb  adc.o [4]
ADCSequenceDataGet      0x00000d0d   0x1e  Code  Gb  adc.o [4]
ADCSequenceEnable       0x00000c5d    0x6  Code  Gb  adc.o [4]
ADCSequenceStepConfigure
                        0x00000c93   0x70  Code  Gb  adc.o [4]
FaultISR                0x00000f67    0x2  Code  Lc  startup_ewarm.o [1]
GPIODirModeSet          0x00000a69   0x28  Code  Gb  gpio.o [4]
GPIOPadConfigSet        0x00000a91   0x98  Code  Gb  gpio.o [4]
GPIOPinConfigure        0x00000b63   0x3c  Code  Gb  gpio.o [4]
GPIOPinTypeADC          0x00000b29    0x4  Code  Gb  gpio.o [4]
GPIOPinTypeUART         0x00000b4f   0x14  Code  Gb  gpio.o [4]
InitConsole             0x000008bd   0x28  Code  Gb  Sensor.o [1]
IntDefaultHandler       0x00000f69    0x2  Code  Lc  startup_ewarm.o [1]
NmiSR                   0x00000f65    0x2  Code  Lc  startup_ewarm.o [1]
Region$$Table$$Base     0x00000f3c          --   Gb  - Linker created -
Region$$Table$$Limit    0x00000f4c          --   Gb  - Linker created -
ResetISR                0x00000f4d   0x14  Code  Gb  startup_ewarm.o [1]
SysCtlClockGet          0x000003d3  0x19e  Code  Gb  sysctl.o [4]
SysCtlClockSet          0x000002bd  0x116  Code  Gb  sysctl.o [4]
SysCtlDelay             0x000002b5    0x8  Code  Gb  sysctl.o [4]
SysCtlPeripheralEnable  0x0000026d   0x1c  Code  Gb  sysctl.o [4]
UARTStdioConfig         0x000005c5   0x66  Code  Gb  uartstdio.o [1]
UARTStdioInit           0x0000062b   0x1a  Code  Gb  uartstdio.o [1]
UARTprintf              0x0000067d  0x21c  Code  Gb  uartstdio.o [1]
UARTwrite               0x00000645   0x38  Code  Gb  uartstdio.o [1]
__aeabi_memclr4         0x00000ba9         Code  Gb  ABImemclr4.o [6]
__aeabi_memcpy4         0x00000bd1         Code  Gb  ABImemcpy.o [6]
__aeabi_memcpy8         0x00000bd1         Code  Gb  ABImemcpy.o [6]
__cmain                 0x00000f95         Code  Gb  cmain.o [6]
__exit                  0x00000fc1   0x14  Code  Gb  exit.o [7]
__iar_Memset4_word      0x00000d51         Code  Gb  ABImemset48.o [6]
__iar_Memset8_word      0x00000d51         Code  Gb  ABImemset48.o [6]
__iar_data_init3        0x00000f15   0x28  Code  Gb  data_init3.o [6]
__iar_init_vfp          0x00000f79         Code  Gb  fpinit_M.o [5]
__iar_program_start     0x00000f6b         Code  Gb  cstartup_M.o [6]
__iar_zero_init3        0x00000baf   0x22  Code  Gb  zero_init3.o [6]
__low_level_init        0x00000fab    0x4  Code  Gb  low_level_init.o [3]
__vector_table          0x00000000  0x26c  Data  Gb  startup_ewarm.o [1]
_call_main              0x00000fa1         Code  Gb  cmain.o [6]
_exit                   0x00000fb5         Code  Gb  cexit.o [6]
_main                   0x00000fa7         Code  Gb  cmain.o [6]
exit                    0x00000faf    0x4  Code  Gb  exit.o [3]
g_pcHex                 0x0000108c    0x4  Data  Lc  uartstdio.o [1]
g_pulGPIOBaseAddrs      0x00000e30   0x78  Data  Lc  gpio.o [4]
g_pulRCGCRegs           0x00001070    0xc  Data  Lc  sysctl.o [4]
g_pulXtals              0x00000ea8   0x6c  Data  Lc  sysctl.o [4]
g_ulBase                0x200000c8    0x4  Data  Lc  uartstdio.o [1]
g_ulUARTBase            0x00001058    0xc  Data  Lc  uartstdio.o [1]
g_ulUARTPeriph          0x00001064    0xc  Data  Lc  uartstdio.o [1]
main                    0x0000090b  0x124  Code  Gb  Sensor.o [1]
pulStack                0x200000cc  0x100  Data  Lc  startup_ewarm.o [1]
sensorderivate          0x000008e5   0x26  Code  Gb  Sensor.o [1]


[1] = E:\StellarisWare\boards\ek-lm4f120xl\project0\ewarm\Obj
[2] = command line
[3] = dl7M_tln.a
[4] = driverlib-cm4f.a
[5] = m7M_tlv.a
[6] = rt7M_tl.a
[7] = shb_l.a

  3 014 bytes of readonly  code memory
  1 226 bytes of readonly  data memory
    460 bytes of readwrite data memory

Errors: none
Warnings: none
Skriv svar