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!
Värden från stacken(?) hamnar i min array (IAR, LM4F120XL)
Värden från stacken(?) hamnar i min array (IAR, LM4F120XL)
Senast redigerad av JustNeed 19 februari 2013, 23:40:43, redigerad totalt 1 gång.
Re: Värden från stacken(?) hamnar i min array (IAR, LM4F120X
Hur mycket minne är reserverat för stacken och mellan vilka adresser ligger den. Mellan vilka adresser ligger din int-array?
Re: Värden från stacken(?) hamnar i min array (IAR, LM4F120X
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.
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