 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pet Okt 31, 2008 1:42 am Naslov sporočila: Undefined instruction LPC2478 |
|
|
Diagnosticiram na prvi pogled naključno sesuvanje: LPC2478 + FreeRTOS + nekaj taskov + uIP z odprtim IE, kjer se na 2s dela update stanje sistema. Vsake toliko časa vrze undefined instruction, zadeva je časovno nedeterministicna. Trenutno lovim instrukcijo, ki pripelje do tega (s pomocjo undefined handlerja in link registra). Prej nisem bil pozoren, vendar se mi zdi, da je lokacija, kjer pride do "sesutja" nakljucna. Smrdi po MAMu... any ideas?
Aja, pa še ena težava. Zakaj obstoječi sistem ne dela na sicer uspešno povezanem 100MBit full duplex linku, ki je bil uspostavljen s pomočjo autonegotiationa. Ročna (vsiljena) povezava 10Mbit FullDuplex dela brez težav. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pet Okt 31, 2008 12:01 pm Naslov sporočila: |
|
|
Delni odgovor, za vse, ki bodo imeli kdaj podobne težave.
Iz undefined handlerja je potrebno skočiti nazaj in pogledati kaj je šlo narobe. To je najlažje narediti tako, da v handlerju napišemo
in procesor bo skočil na ukaz, ki je za ukazom, ki je povzročil napako.
Ker se je pri meni vrnil v funkcijo in pri tem ostal v arm načinu, funkcija pa je bila prevedena thumb-u, je očitno prišlo do napake pri prehodu iz arm v thumb način. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Pet Okt 31, 2008 12:54 pm Naslov sporočila: |
|
|
IMHO je težko verjetno, da bi v coru prišlo do napake pri prehodu ARM <-> THUMB.
Govorim na pamet oz. razmišljam... Ali ni undefined le en izmed exceptionov in core pri vstopu v ta mode avtomatsko preide v ARM mode? In če ti ročno modificiraš program counter PC s tem na zamenjaš mode-a... |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Pet Okt 31, 2008 1:00 pm Naslov sporočila: |
|
|
Bolj ko razmišljam, se mi zdi sumljiv tale MAM. Na kakšni clock frekvenci delaš?
Mogoče bi bilo na mestu izklopit MAM in zadevo laufat nekaj časa...
A se ti zadeva sesuva tudi z dodajanjem/odvzemanjem programske kode oz. različno optimizacijo? |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pet Okt 31, 2008 1:37 pm Naslov sporočila: |
|
|
PC nisem spreminjal na roke, ampak z ukazom. S tem naj bi se vrnil tudi originalni CPSR. Glede na spremenjen mode (taski tečejo v system mode), se to tudi zgodi.
To, da bi procesor sam po sebi imel težave s preklopom ARM <-> Thumb je praktično nemogoče.
Sumim:
- nastavitve prevajalnika oz. njegove težave (thumb interworking / contex switch)
- MAM
Oboje se mi zdi skrajno čudno, ker MAM naj bi bil spucan (vse nove revizije čipov, ki so imele MAM bug so brez buga, te pa so bile narejene pred LPC2478-), prevajalnik pa tudi. Podrobno moram pogledati še nastavitve prevajalnika in pa ta contex switch (aha... ravnokar je spet odletel), ker dva modula (oba sta ISR) sta v ARM modu, ostali pa v thumb.
Tisto brez MAMA bom še probal, za spreminjat clock pa tudi.
Zadeva se sesuva tudi z dodajanjem/odvzemanjem kode, sem poskusil z različnim številom opravil.
P.S.
Spremenil sem eno od nastavitev. Ugotovil sem, da se napaka zmeraj pojavi v emac.c modulu. Sedaj je emac.c preveden v arm. Prvi test z minimalnim številom taskov je tekel ca. 50 min brez napak. Sedaj sem dodal še nekaj taskov, tako da je vseh 23 (z idle). Do web strani dostopam z štirimi brskalniki (dva IE in dva mozilla). Dostop je sicer serializiran (uIP dopušča samo eno aktivno povezavo), je pa pritisk nanj večji. Sedaj bom pa malce pustil zadevo. Potem pa poročam. MAM test sem pustil za kasneje. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Pet Okt 31, 2008 10:07 pm Naslov sporočila: |
|
|
Ok, mogoče malo offtopic, ampak vseeno.
Glede etherneta - a je pri tebi tudi tako, da moraš čakati nekaj časa, predno ti Windows mašina pošlje potrditev za vsak paketek (mislim da okoli 200ms ali nekaj podobnega)? Na linux mašinah tega ni. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pet Okt 31, 2008 10:27 pm Naslov sporočila: |
|
|
Temu se reče delayed acknowledment (ACK), se da nastavit. Ni nič narobe s tem, še več, s tem se lahko poveča učinkovitost (ni potrebno poslati ACK čisto vsakič). _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Pet Okt 31, 2008 11:01 pm Naslov sporočila: |
|
|
Ok, potem moram predelat tale moj TCP/IP stack, da bo pošiljal ACKje bolj poredko. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Sob Nov 01, 2008 12:54 am Naslov sporočila: |
|
|
Pazi, ta vrednost mora ustrezati določenim omejitvam. Preberi RFC1122.
Kakorkoli že, do sesuvanja ne pride več niti po >2h konstantnih zahtevkov, vključno s pingom (ping until break). _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Sob Nov 01, 2008 9:02 am Naslov sporočila: |
|
|
Kaj si pa spremenil? Taka zadeva je sumljiva in se zna spet pojavit. |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Sob Nov 01, 2008 1:49 pm Naslov sporočila: |
|
|
emac.c sem prevedel v ARM in ne v thumb. Sedaj so v ARM modu emac.c in oba ISR modula (en za emac in drugi za rtos).
Skrajno čudno je da. To bom kasneje tudi omenil richardu (freertos tip) in ga bom prosil, če lahko tudi stestira meni nedelujoč primer. Namreč nimam LPC2368 boarda od Keila, da bi to probal sam. Originalni port je za LPC2368. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Sob Nov 08, 2008 12:46 am Naslov sporočila: |
|
|
Nja... MAM težave niso, zmanjšal sem frekvenco, spreminjal MAMTIM in MAMCR. Vedno isto. Res se mi ne da razkopavat po stacku in heapu, sploh, ko je v igri TCP/IP.
P.S.
Res je ze pozno... vendar je test zdrzal. Krivec: frame pointer s katerim ima gcc lahko tezave, lahko pa ne. Phajo jao.
Kakorkoli že, očitno je -fomit-frame-pointer še vedno "aktualna" in jo je bolje pustiti vklopljeno.
Sedaj pa novim zmagam naproti. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
|
|
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
|