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 

ARM problem

 
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
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Pet Nov 05, 2010 3:39 pm    Naslov sporočila:  ARM problem Odgovori s citatom

Pozdravljeni,
programiram samsungov S3C2440 ARM9. Za programiranje uporabljam uVision 4 in JTAG programator ULINK2. Sem čisti začetnik v ARM svetu in se še lovim z znanjem. Začel sem s programiranjem v asm in nadaljeval v c. Tukaj se pa je zataknilo.

Opazil sem, da pri programiranju ne morem uporabljat funkcijo v funkciji (če v main() kličem test() in v tej še test2() mi program zmrzne). Pri debugiranju sem opazil, da se mi naslov funkcije zgubi pri klicu druge funkcije.

Ker mi programi na začetki programiranje z c niso delovali sem moral v startup datoteki spremenit iz klica v __main v klic main. Če tega ne naredim, se mi v __main zazanka ker mi izbriše prve 4 lokacije pomnilnika. Predvidevam da je moj problem tukaj, ker ta funkcija pripravlja neke sklade.

Zdaj me pa zanima, če kdo pozna problem in njegovo rešitev?
Zanima me tudi, kako generira te funkcije, ker jih jaz nikjer v kodi nimam in jih ne morem spremenit.

Upam da kdo pozna rešitev, če pa potrebujete še več informacij pa mi javite kaj točno in bom posredoval.
Hvala za pomoč!
LP Dejan Lešnik
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70646.94

PrispevekObjavljeno: Pet Nov 05, 2010 3:43 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Pet Nov 05, 2010 4:15 pm    Naslov sporočila:   Odgovori s citatom

Hvala za hiter odgovor.

Spremeno sem USR_Stack_Size EQU 0x00001000

IMPORT __main
LDR R0, =__main
BX R0

in se mi program še vedno zazanka v

__scatterload_zeroinit:
0x0000011C E3B03000 MOVS R3,#0x00000000
0x00000120 E3B04000 MOVS R4,#0x00000000
0x00000124 E3B05000 MOVS R5,#0x00000000
0x00000128 E3B06000 MOVS R6,#0x00000000
0x0000012C E2522010 SUBS R2,R2,#0x00000010
0x00000130 28A10078 STMCSIA R1!,{R3-R6}
0x00000134 8AFFFFFC BHI 0x0000012C
0x00000138 E1B02E82 MOVS R2,R2,LSL #29
0x0000013C 28A10030 STMCSIA R1!,{R4-R5}


v vrstici ki je pobarvana modro mi spremeni register R1 na vrednost 0. Vsakič ko se ta vrstica ponovi (ponavlja se dokler register R2 ne prečka 0). Zelena vrstica pa prve 4 lokacije v ROMu postavi na 0. Program se mi tako nikoli ne izvede.

Če pa __main spremenim v main pa mi prde v program R13(SP) je nastavljen na vrednost 0x30001060 in se zmanjša ko se vpišem v drugo funkcijo pri vračanju pa poveča. Venda ko se vračam iz test() vpiše v R14(LR) vrednost 0 in program vrne na začetek. Kot da je sklad prazen.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Pon Nov 08, 2010 9:50 am    Naslov sporočila:   Odgovori s citatom

Kot večina že verjetno ve, je ta del kode ki sem ga objavil za počiščenje sklada. Ker mi ni jasno zakaj koda vpliva na R1, če prav ga ne uporabljam v tej vrstici. Nato sem debug zagnal še v simulaciji, ki pa se pravilno izvede.

Zdaj me zanima, kako je to možno. Kako lahko SUBS R2,R2,#0x00000010 vpliva na register R1. Je možno, da imam napačne nastavitve pri programiranju? Te sem namreč nastavljal bol po občutki, ker nisem nikjer našel pravih.

LP Dejan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Pon Nov 08, 2010 12:50 pm    Naslov sporočila:   Odgovori s citatom

Ok, problem je bil v 3V bateriji ki je na plošči. Bila je prazna, zdaj sem jo zamenjal ni se koda pravilno izvaja. Vendar še vedno mi ne pride iz zanke. Nikdar mi ne izvede funkcije main().
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Pon Nov 08, 2010 2:30 pm    Naslov sporočila:   Odgovori s citatom

Problem sem rešil. Izkazalo se je, da nisem nastavil nastavitev procesorja. Tako mi RAM pomnilnik ni deloval, ker se ni osveževal. Problem sem rešil tako, da sem zakomentiral IF (:LNOT:(:DEF:NO_MC_SETUP)):LAND:(CLOCK_SETUP != 0) vrstico.

Te vrstice ne razumem, če kdo ve kaj pomeni mi lahko prosim razloži. Tega še je več v startup datoteki in sem ostale pustil. Vem da je to IF za compiler vendar ne vem kako in kje lahko NO_MC_SETUP in ostale spremenljivke definiram.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.61
Kraj: Kranj - struževo

PrispevekObjavljeno: Pon Nov 08, 2010 9:46 pm    Naslov sporočila:   Odgovori s citatom

Mogoče nisi imel izbranega pravilnega mikrokontrolerja ali si uporabljal napačen startup fajl? Mogoče je tudi kakšna nastavitev prevajalnika napačna?
Ponavadi se startup datotek ne spreminja...

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
DejanLe
Član
Član



Pridružen-a: Pet 05 Nov 2010 15:10
Prispevkov: 11
Aktiv.: 0.06
Kraj: Poljčane

PrispevekObjavljeno: Sre Nov 10, 2010 3:22 pm    Naslov sporočila:   Odgovori s citatom

No če imam kaj takega narobe ne vem. Zdaj mi ta del deluje.
Opažam pa da mi deluje prepočasi. Po enačbi ki je v datasheetu sem nastavil frekvenco 524 MHz. Ko sem frekvenco želel poizkusit sem v ASM napisal en enostaven programček za generacijo pravokotnega signala. Ta signal je imel frekvenco samo 1,4 MHz koda pa je imela 3 vrstice, torej tri komande. Če še zvišam frekvenco ali spremenim preskaler mi ne deluje več. Takšna frekvenca mi je definitivno prepočasna zato bi prosil za pomoč še pri tem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.61
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Nov 10, 2010 9:26 pm    Naslov sporočila:   Odgovori s citatom

DejanLe je napisal/a:
nastavil frekvenco 524 MHz.

Shocked Shocked pa še enega za rezervo: Shocked
Si prebral tudi prvi, drugi, tretji,... in zadnji del datasheeta? kolikšna je max frekvenca in na kakšni frekvenci dela IO vodilo? flash wait states je koliko? Samo ena enačba še ne pomeni, da bo zadeva res delovala.

Če bi rad višje frekvence, vzemi FPGA.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.03
Kraj: Novo mesto

PrispevekObjavljeno: Sre Nov 10, 2010 9:58 pm    Naslov sporočila:   Odgovori s citatom

Procesor dela do maksimalne frekvence 400 MHz.

Jaz dejansko sploh ne vem kaj bi napisal ob taki temi, ker se mi želodec obrača ko preberem kakšnih reči se nekateri lotevate popolnoma brez izkušenj in brez pomoči nekoga, ki procesor pozna. Saj periferija je luštkana in izgleda enostavna, ampak sam procesor je pa dejansko najtežje spravit do main-a, kar si že ugotovil. Najdi kak board support package (BSP) za development board ki si ga lastiš, tudi linux porti obstajajo, morda ti to kaj pomaga.

Enolične in enostavne rešitve tvojih težav ni, zato se tudi v tej temi pogovarjaš sam s sabo, ker je zelo težko kaj pomagat.
Nazaj na vrh
Odsoten 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
Stran 1 od 1

 
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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group