april 1, 2003
hejsan!
det är så att jag håller på med ett projekt med en 16bitars HC12S Freescale cpu med bankat minne, och håller på att pilla med linkerdescrition filen och har tyvärr ett problem! När jag laddar över min application till hårdvaran, och resetar den, så startar programräknaren(PC) på fel ställe, den startar på adress 0x788000, men enligt mapfilen så ska startupscriptet ligga på 0x784000(här ligger ingen data enligt debuggern), och jag har ingen aning om varför.. är nybörjare på länkarscript och sånt.. så jag tänkte att någon här kanske är lite hajj på det och skulle kunna titta på mitt, och se om det är något galet här!
i resetvector så ska det pekas på startup-koden(enligt min vectorfil), har definerat upp reset så att den ska hoppa till min startupfunktion..
# **************************************************************************
# * o MC-KONSTANTEN Beschreibung des Mikrokontrollers (LK-File Intern) *
# **************************************************************************
+def i_RamAnf_logical=0x2000 # erstes Byte im RAM
+def i_RamEnd_logical=0x3FFF # letztes Byte im RAM
+def i_RamAnf_global=0xFE000 # erstes Byte im RAM
+def i_RamEnd_global=0xFFFFF # letztes Byte im RAM
+def i_GesRamGr=0x2000 # Gesamtgröße im RAM
+def i_EepAnf_logical=0x0800 # erstes Byte im EEPROM
+def i_EepEnd_logical=0x0FFF # letztes Byte im EEPROM
+def i_EepAnf_global=0x13F800 # erstes Byte im EEPROM
+def i_EepEnd_global=0x13FFFF # letztes Byte im EEPROM
# *** weitere MC-Konstanten weil innerhalb "+def" nicht gerechnet werden kann *
+def i_StackI=0x4000 # 1.JSR pushed PC auf 0x3FFF und 0x3FFE
+def i_CkSumGr=128 # 128 Bytes für Checksummenabgleich (Berechnet von Linker)
# **************************************************************************
# * o SEGMENT-DEF Definition der Segmente *
# **************************************************************************
+seg .MCADS_UNTOUCH -b i_RamAnf_global -o i_RamAnf_logical -m i_GesRamGr -n.MCADS_UNTOUCH # Daten ungelöscht, ungetestet
+seg .ubsct -a.MCADS_UNTOUCH -n.ubsct # Daten 8-Bit addressiert (wird ab Compilerversion 4.2t benötigt)
+seg .bsct -a.ubsct -n.bsct # Initialisierte Daten, 8-Bit adressiert
+seg .data -a.bsct -n.data # Initialisierte Daten, 16-Bit adressiert
+seg .bss -a.data -n.bss # Daten, 16-Bit addressiert
+seg .eeprom -b i_EepAnf_global -o i_EepAnf_logical -m 0x0800 -n.eeprom
# ***************************************************************************
# * o SEGMENT-DEF ROM / Flash Segmente mit zugehörigen Dateilisten *
# ***************************************************************************
+seg .gconst -b 0x780000 -m 0x4000 -n .gconst # 16K for global constants $E0
+seg .cksum -b 0x7FC000 -o 0xC000 -m i_CkSumGr -n.cksum -ik # Checksum segment
+seg .FIXBank -e 0x7FFF00 -o 0xFF00 -m 0x4000-0x0100 -n.constFIXBNK -ck # Programmcode auf Fixed Bank
+grp .FIXBank=.const,.MCADS_FIXBNK # Liste von zusammenzufassenden Sections
#########härnånstans tror jag problemet ligger######
+seg .text -b 0x784000 -o 0x8000 -w 0x4000 -m 0x1C000 -n.text -s.flash -ck -x # Banked ROM $E1-E7
+seg .text -b 0x7E0000 -o 0x8000 -w 0x4000 -m 0x1C000 -n.text -s.flash -ck # Banked ROM $F8-FE
#+inc tmp_sbk.lk
+inc Test_App_Modules.lk
+inc lib_debug.lk
+seg .text -b 0x7FC000+i_CkSumGr -o 0xC000+i_CkSumGr -m 0x4000-i_CkSumGr -n.text -it -ck # Programmcode auf Fixed Bank $FF
.liblib.lib
# COMPILE WAS NOK -> +seg .MCADS_V120 -b 0x7FFF00 -o 0xff00 -n.text -m 0x0100 -ck
#+seg .MCADS_V120 -b 0x7FFF10 -o 0xff10 -n.MCADS_V120 -ck
+seg .vector -b 0x7FFF10 -o 0xff10 -n.vectors -ck
+inc tmp_fixb.lk
# ****************************************************************************
# * o LABELS-DEF Definition der extern verwendbaren Konstanten *
# ****************************************************************************
+def _MCAD_RAM_ANF=i_RamAnf_logical # Adr. erstes Byte im RAM
+def _MCAD_RAM_USED=end(.bss) # Adr. letztes verwendetes Byte im RAM
+def _MCAD_RAM_END=i_RamEnd_logical # Adr. letztes Byte im RAM
+def _MCAD_CLRRAM_ANF=start(.ubsct) # Adr. erstes zu löschende Byte im RAM
+def _MCAD_CLRRAM_END=i_RamEnd_logical # Adr. letztes zu löschendes Byte im RAM
+def _MCAD_EEP_ANF=i_EepAnf_logical
+def _MCAD_EEP_END=i_EepEnd_logical
+def __sbss=@.bss
+def __memory=@.bss
+def __stack=i_StackI
+def __sdirect=start(.ubsct)
+def __sgconst=start(.gconst)
kan säga nu direkt att det är inte min orginalfil,har fått det av företaget jag jobbar åt nu..så nej, jag kan inte tyska 8-)[/b]
Most Users Ever Online: 694
Currently Online:
195 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
RebeccabipYJ RebeccabipYJ
HumanSert HumanSert
AshleyCeanyJN AshleyCeanyJN
RobertCapYX RobertCapYX
MichaelZonZR MichaelZonZR
Brandonvom
staletsatf staletsatf
BradleyJewZQ BradleyJewZQ
autogruxusKJ autogruxusKJ
DonaldSpodyZU DonaldSpodyZU
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967
Member Stats:
Guest Posters: 2
Members: 78407
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL