Sida 1 av 2
Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 18:38:42
av imac
Den har fastnat i dessa fyra rader med kod o frågan är vad som ska hända för den ska komma vidare!? Eller om någon kan förklara vad den gör per rad? Kör den i uVision4 o har läst ur programmet från flashen o sparat den som .bin fil o använder som executable fil.
0x0000047C E1DD90A9 BICS R9,R13,R9,LSR #1
0x00000480 2A000001 BCS 0x0000048C
0x00000484 E2888004 ADD R8,R8,#0x00000004
0x00000488 EAFFFFFB B 0x0000047C
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 18:42:00
av eqlazer
Har du också någon listfil (.lst)? Som visar kodraderna (C?) ihop med dess motsvarighet av asm.
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 18:49:02
av imac
Som sagt så har jag bara .bin filen som jag har läst ut från flashen o inget annat underlag för koden.. Eller är det något som går att plocka fram med uVision4? Kan tillägga att jag aldrig har hackat kod

Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 18:56:11
av sodjan
> Eller om någon kan förklara
Du får nog vara lite tydligare.
Med "förklara", menar du utöver vad en instruktionslista för ARM7 säger ?
Och i så fall, vad är oklart och behöver förklaras ?
Det är ju lite onödigt att upprepa vad dokumentationen säger
om du redan har läst den...
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 19:04:39
av stekern
Precis och det är ju rätt svårt att lista ut vad det gör när man inte vet vad det kommer ifrån och inte har resten av koden.
Men, den fastnar där för att carryflaggan inte är satt vid address 0x480.
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 19:22:58
av imac
Har inte läst något om ARM7 instruktioner eller något annat så utgå ifrån att jag kan noll om detta..
Men, den fastnar där för att carryflaggan inte är satt vid address 0x480
Vad är en carryflaggan? Vad är det som sätter den? Det är nedan kodrad alltså?
0x00000480 2A000001 BCS 0x0000048C
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 19:58:02
av stekern
Raden ovanför är det som sätter carryflaggan, beroende på vad som är i registrena r9 och r13.
Här kan du läsa mer om vad de olika instruktionerna gör:
http://www.peter-cockerell.net/aalp/html/ch-3.html
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 20:40:06
av imac
Jösses, de va rena Grekiskan..
Kan säga att R8 läggs på fyra hela tiden i rad 484.
R9 o R13 händer det inget med när jag stegar fram, värdet är konstant 0x00000080 för båda!
Vad ska den göra med R9 o R13 i rad 47C?
Jag kan bifoga mer kod om det underlättar!?
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 20:42:47
av eqlazer
Men vad hjälper det dig att förstå just detta hoppet i koden om du ändå inte har tillgång till någon källkod?
Att hitta grundorsaken kan ju ta närapå oändlig tid.
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 21:06:42
av stekern
Instruktionen på rad address 0x47C:
BICS R9,R13,R9,LSR #1
betyder:
R9 = R13 & ~(R9>>1)
dvs om båda nu är 0x00000080 så blir ekvationen
R9 = 0x00000080 & ~0x00000040 =>
R9 = 0x00000080 & 0xffffffbf =>
R9 = 0x00000080
Men håller med eqlazer, vad hjälper det dig att veta detta?
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 22:02:50
av imac
Detta är för att felsöka på den o det kanske kan ge en signal vad som kan vara fel, tex en adresslina som fattas, RAM eller flash fel. Har visserligen felsökt på datalinerna o det finns pulståg men har inget digitaloscilloskop så det är lite svårt..
Men det kanske finns program att ladda ner för att prova olika funktioner på en ARM7 HW?
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 22:12:45
av stekern
Ok, det skulle ju kunna vara intressant att veta vad "det" är för något och vad "den" skall göra, eller är det väldigt hemligt?
Du får väl kolla efter vad den gör med registrerna R9 och R13 innan den kommer till de där raderna där den fastnar.
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 23:04:27
av imac
Det är inte hemligt

Tänkte väl mest att det inte tillförde något..
Det är styrningen av en hemmabioförstärkare, datadelen sitter i fronten ihop med en touch LCD o ett antal knappar o rattar.
En bild på datadelen, baksida.

Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 2 februari 2011, 23:15:59
av sodjan
Jag vill påstå att det du försöker göra är fullständigt omöjligt
med tillgång till enbart *4* kodrader. Det som behövs är sannolikt:
- Tillgång till hela koden.
- Någon som är bra på att läsa ARM7 kod.
- Tillgång till schema eller liknande för apparaten.
- En jäkla massa tid.
- En jäkla massa motivation.
> Den har fastnat i dessa fyra rader med kod...
Vad är "den". Hammabioförstärkaren ?
Hur vet du att den "fastnar" just på de där raderna (alltså *i* apparaten) ?
Kör du det hela i någon simulator ? Och är det i så fall ens troligt
att en simulator kan (utan en hel del jobb) simulera den miljö där
koden normalt förväntas köra ? Om det körs in-curcuit, vad har du
för instrument, någon in-curcuit emulator ? Eller finns det någon
inbyggd debug/emulering i själva processorn ?
Slutligen, *varför* gör du detta ?
Re: Hjälp med förklara 4 rader kod i ARM7 applikation
Postat: 4 februari 2011, 19:01:14
av imac
Den gör två hopp innan den fastnar i loopen..
Kopierade dom rader som den går, när jag resetar den så startar den på 0.
0x00000000 EA000120 B 0x00000488
0x00000004 EA000061 B 0x00000190
...
0x0000047C E1DD90A9 BICS R9,R13,R9,LSR #1
0x00000480 2A000001 BCS 0x0000048C
0x00000484 E2888004 ADD R8,R8,#0x00000004
0x00000488 EAFFFFFB B 0x0000047C
0x0000048C E59F9190 LDR R9,[PC,#0x0190]
Ska registrena nollställas vid reset? Samma värde står kvar i R9 o R13 efter en reset!
Det måste vara något fundamentalt fel som finns i hårdvaran iom att den stoppar så tidigt i koden!?