www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Isti compiler, različna koda
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 2:47 pm    Naslov sporočila:  Isti compiler, različna koda Odgovori s citatom

Imam en problem, na katerega ne najdem rešitve (neizkušenost z gcc). MOrda bo komu jasno.

Najprej sem projekt delal na šarmu in mi je scompilalo naslednjo startup kodo:


Ker se projekt bliža koncu sem prešel na lastno vezje, na akterem uporabljam tudi isystemov If-dev. Prevajalnik je isti kot pri šarmu (ista verzija), tudi nastavitve prevajanja so iste, naredi pa kodo:
.

Prevajalnik drugače prevede tabelo interrupt vektorjev, po tem je pa vse čisto enako. Kot napisano prevajalnik je isti, oboje delam v WinIDEA (različni verziji) z enakimi nastavitvami za prevajalnik.

Spodnja koda ne deluje uredu, ko pride IDE do ukaza swp se procesor neha odzivati.

Ima kdo kakšno idejo zakaj se zadeva prevede drugače?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.31

PrispevekObjavljeno: Pon Maj 21, 2007 3:18 pm    Naslov sporočila:   Odgovori s citatom

Videti, da prevajalnik nima nic pri tem. Izgleda, kot da je IDE (torej orodje s katerim delas), po svoje generiral startup kodo. Moti me to, da je na interrupt vektorjih povsem obicajna koda, ki balina z registri in nato klice SWI. Ali si res preprican, da ti v projektu nekaj ne manjka, recimo kaksna .s datoteka z interrupt vektorji? Ali je postopek vkljucevanja teh datotek k projektu enak v obeh primerih?

Makefile je se vedno zakon.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 3:27 pm    Naslov sporočila:   Odgovori s citatom

Tole je oboje generirano iz istega startup fila ctr0.s. V projekt je vključen na enak način. Vse je ve tem startup filu, nič v kakšnem drugem zunanjem.

Nekako pa se mi je zdelo, da je prej IDE "krivec". V oberh primerih ja namreč nastavljen internal make.

Imaš mogoče kakšno povezavo na kakšen uporaben priročnik na temo makefila za arm? Iščem tudi sam po googlu, ampak ne najdem nič kaj takega, kar bi razložilo v par korakih kar je tisto bistvu. Morda kakšen primer makefila za lpcje?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.31

PrispevekObjavljeno: Pon Maj 21, 2007 3:35 pm    Naslov sporočila:   Odgovori s citatom

Mar ta IDE nima opcije generiranja kode z makefile datoteko? Niti enega primera? Nobene kontrole? Fuj fuj. Think

To, da nisi na googlu nic nasel pa skoraj ne verjamem. Poleg tega je v reviji SE nekaj clankov na to temo (gnu okolje z makefile in LPC serija).

Sigurno si kaj zgresil kje? Nimam teh programov, zato ne morem pogledat.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Maj 21, 2007 3:39 pm    Naslov sporočila:   Odgovori s citatom

Spodnja startup koda je hudo napačna. Lokacije od 0x00 do 0x18 so prekinitveni vektorji, (ko pride do prekinitve, se v programski števec PC procesorja naložijo ti naslovi). To pomeni, da morajo biti na teh naslovih ukazi za skok na tvojo prekinitveno rutino, nekaj v tem stilu:

Koda:
LDR     PC, Reset_Addr

ali
Koda:
B Reset_Addr


Če je to kodo zgeneriral kak "wizard", še enkrat preglej nastavitve.

Aleš
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 3:42 pm    Naslov sporočila:   Odgovori s citatom

Program omogoča eksterni makefile, ravno zdej berem en pdf (Jim Lynch's ARM cross development with eclipse), ker je dokaj solidno razloženo za začetnika kako narediti osnovni makefile. Bom poizkusil tako.

Hvala za napotek.

alessio, vem da je popolnoma "kr neki" spodnja koda, mi pa ni bilo jasno katera stvar je krivec. Zdej bom poizkusil rešiti z makefile. Očitno se interni razlikuje med verzijama programa. Če pogledaš kaj je napisano z rumenimi črkami, lahko vidiš da je točno tako kot si ti napisal ldr pc, vector_address ... prevede pa ... Laughing
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Maj 21, 2007 3:46 pm    Naslov sporočila:   Odgovori s citatom

Nekaj lepih zgledov makefile-ov imaš na tej strani- ARM projects .
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.31

PrispevekObjavljeno: Pon Maj 21, 2007 3:48 pm    Naslov sporočila:   Odgovori s citatom

Definitivno je krivec IDE. Manjka mu kaksna kljukica ali pa kaksna datoteka. Jimov tutorial je cool.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 3:56 pm    Naslov sporočila:   Odgovori s citatom

Sedaj sem opazil še nekaj drugega. Takoj ko kodo downloadam na lpcja, se mi v disassembler oknu pokaže pravilna koda. Če pa procesor resetiram preko IDEja, se pa po resetu pokaže stvar, ki je podobna tistemu na drugi sliki.

Po downloadu se tudi izvaja pravilna koda, po resetu pa se začnejo izvajati tisti napačni stavki.

Čudno mi je vse skupaj. Bom pa kot rečeno poizkusil z make filom.


Nazadnje urejal/a BluPhenix Pon Maj 21, 2007 4:10 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Maj 21, 2007 3:58 pm    Naslov sporočila:   Odgovori s citatom

Glitch je napisal/a:
Jimov tutorial je cool.


Jimov tutorial je res hudo cool. Par dni nazaj je objavil novega na www.at91.com.
Nahaja se pod dokumenti. Naslov tutoriala z primeri: Using Open Source Tools for AT91SAM7 Cross Development

Aleš
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Maj 21, 2007 4:03 pm    Naslov sporočila:   Odgovori s citatom

Tole je direkten link na Jimov tutorial.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.31

PrispevekObjavljeno: Pon Maj 21, 2007 4:04 pm    Naslov sporočila:  Isti compiler, razlicen IDE, razlicna koda Odgovori s citatom

Aha, ok. Se mi je zdelo, da ima debuger prste vmes (razen ce ti klices software interrupt, a?). Hja,... Rolling Eyes To mora biti dokumentirano nekje. Ce najdes, copy - paste v to temo, da ne bo spet kdo iskal.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 5:57 pm    Naslov sporočila:   Odgovori s citatom

ZAdeva se dogaja tudi pri hardverskem resetu, tako da sploh ne vem če je res ide/debugger kriv.

Ne, ne kličem nobenega SW interrupta. Sej to mi je čudno, ker takoj po downloadu vse normalno deluje, po resetu pa se začne to dogajat? Čudne stvari Laughing
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.31

PrispevekObjavljeno: Pon Maj 21, 2007 6:38 pm    Naslov sporočila:   Odgovori s citatom

Seveda se dogaja tudi pri HW resetu, ce je pa ta koda tam. Si poskusil generirati release verzijo? To je definitivno debug verzija tvoje kode. Probaj, poglej v generirano asm kodo. Ponavadi je to datoteka s koncnico lst ali lss. Ce je ni, poisci se kaksno kljukico.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pon Maj 21, 2007 8:34 pm    Naslov sporočila:   Odgovori s citatom

Ok, lahko da sem se slabo izrazil.

Po downloadu mi disassembler kaže pravilno kodo, ko grem step by step po njej deluje pravilno, tudi če dam run preko debuggerja dela cel program normalno. Ko pa dam kakršen koli reset je koda drugačna in se ne izvaja.

Bom pogledal to kar si napisal. Hvala.

EDIT: sem naredil dump kode, ki jo zgenerira compiler in linker. Assembler koda ki jo sproducira je pravilna. Iščem naprej.

EIDT: Tega z release kodo ne razumem najboljše. Je to stikalo optimizacije -O3 pri compiliranju? (SEdaj imam -O0, katero naj bi bilo debug)
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 5 dni


Powered by phpBB © 2001, 2005 phpBB Group