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]
1 Guest(s)