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 

LPC1768 in RAM

 
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
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Tor Jun 28, 2011 12:04 am    Naslov sporočila:  LPC1768 in RAM Odgovori s citatom

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



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

PrispevekObjavljeno: Tor Jun 28, 2011 7:06 am    Naslov sporočila:  Re: LPC1768 in RAM Odgovori s citatom

Kroko je napisal/a:
Ali je koda deluje hitrejše, če se izvaja iz RAM-a in ne iz FLASH-a?
Seveda! Mr. Green

Verjetno veš kaj je wait state?
No, program iz (internega S)RAMa deluje z 0 wait state-i, za flash je pa na pamet težko reči, ker je odvisno (tudi od) izdelave flasha in morebitnih acceleratorjev (prefetch). Načeloma lahko iz flasha kodo izvajaš z nekje 20 MHz (nekaj gor, dol), kar pa je višje potrebuje procesor nekaj wait state-ov, da prebere inštrukcijo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Čet Jun 30, 2011 7:41 am    Naslov sporočila:   Odgovori s citatom

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



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

PrispevekObjavljeno: Čet Jun 30, 2011 8:39 am    Naslov sporočila:   Odgovori s citatom

Kroko je napisal/a:
Ali so kakšne slabosti če se izvaja v RAM? Je treba biti na kaj pazljiv?
Jaz se slabosti ne zavedam. Pazljiv moraš biti edino, da ne pride do konfliktov (npr. CPU in DMA bi rada naenkrat dostopala isto lokacijo v RAMu), ampak to je verjetno samoumevno.

Kroko je napisal/a:
Ali je vseeno če uporabljam IRAM1 (0x10000000) ali IRAM2 (0x2007C000)
Kolikor na hitro vidim iz User Manuala je vseeno. V splošnem je važno, da so vodila enako hitra kot CPU, oz imajo prioriteto pri dostopanju nanje, ker sicer nisi nič naredil.

Kroko je napisal/a:
Mogoče veš, kako bi posamezne funkcije "preselil" v RAM?
Celoten modul (.c) znam, rad pa bi bolje določil kaj mora biti hitro.

poskusil sem takole
Koda:

#pragma arm section rodata="RW_IRAM1"

pa mi ni uspelo.

Enkrat sem to sicer za test počel, a se ne spomnim več kako je bilo narejeno, projekta pa očitno tudi nimam več, da bi pogledal (imam samo za celoten modul). Trik je v tem, da compiler naredi regijo za celoten modul. Da bi posamezno funkcijo spravil v RAM, moraš definirati regije in funkcije z atributom __at spraviti v te regije.
Princip si lahko prebereš v RealView Linker User Guide, poglavje Creating root execution regions in predvsem poglavje Using Scatter-loading Description Files.

Če še nisi, si v User Manualu za LPC17xx preberi tudi, kako deluje Flash Accelerator! Mogoče ugotoviš, da izvajanja iz RAMa sploh ne rabiš...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pyr0Beast
Član
Član



Pridružen-a: Pon 16 Jun 2008 14:11
Prispevkov: 4969
Aktiv.: 24.02

PrispevekObjavljeno: Čet Jun 30, 2011 9:14 am    Naslov sporočila:   Odgovori s citatom

Kako je pa z dolgoživostjo celic v ramu in flashu, npr. da bi imel stalno en counter ki bi se za +1 povečeval od 0 do polne 256 in jovo na novo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



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

PrispevekObjavljeno: Čet Jun 30, 2011 9:56 am    Naslov sporočila:   Odgovori s citatom

Pyr0Beast je napisal/a:
Kako je pa z dolgoživostjo celic v ramu in flashu, npr. da bi imel stalno en counter ki bi se za +1 povečeval od 0 do polne 256 in jovo na novo
RAM v uCjih je SRAM in tipično ima vsaka aplikacija v RAMu nekje vsaj en tak counter, kot ga opisuješ. Da bi SRAM celica crknila, bi to pomenilo, da je crknil vsaj en tranzistor znotraj obeh inverterjev v celici. Kakšna je verjetnost za to? Whistle

Flash v uCjih je NOR flash in če bi hotel imeti v flashu counter, kot ga opisuješ... No, rad bi videl tistega, ki bi to hotel! Mr. Green Flash je tako ali tako potrebno brisat v blokih, tipično pa se garantira nekje 100k brisanj. Tam nekje potem tudi crkne, saj se pri flash pomnilniku shranjuje naboj. Eni prej, eni kasneje.

Bistvo izvajanju programske kode iz RAMa je branje instrukcij, ker CPUju ni treba čakat več ciklov, da prebere inštrukcijo. Težava počasnega branja inštrukcij iz flasha se rešuje z raznimi acceleratorji, ki imajo ponavadi 128 bitno vodilo, zato da lahko berejo po več inštrukcij naenkrat in jih pravočasno dostavljajo CPUju. Ali je accelerator dovolj hiter se da ugotoviti z meritvami časa izvajanja programa, obstajajo pa tudi orodja (npr. uLink Pro), ki natančno izpišejo število ciklov, ki jih je CPU porabil za čakanje...
Pri LPC17xx je flash relativno hiter + imajo tak 128bitni accelerator, zato sam osebno ne vidim razloga, da kode ne bi izvajal iz flasha (bi rajši optimiziral kodo). Je pa včasih potreba po tem - npr. firmware update.


Sedaj sem tudi še malo pogledal, kako bi spravil točno določeno funkcijo v RAM... Ni enostavno, zato se verjetno ne spomnim več, kako sem ščaral. Very Happy Vem pa da sem na roke pisal scatter file.

Jaz bi postavil funkcijo v svoj modul in imaš problem enostavno rešen.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Čet Jun 30, 2011 10:15 am    Naslov sporočila:   Odgovori s citatom

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



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Čet Jun 30, 2011 12:02 pm    Naslov sporočila:   Odgovori s citatom

Uporabi pogojno izvajanje ukazov (predikate). Ce se ne motim, je potebno kodo spisati v zbirniku, ker gcc ne generira strojnih ukazov s pogojnim izvajanjem. Tako lahko obcutno pohitris branje instrukcij iz flash-a (za ceno nekaj vec ukazov).

Ne gre tudi pozabiti, da se pri izvajanju kode iz pomnilnika naceloma (odvisno od specificnega procesorja) zmanjsa hitrost dostopa - DMA bo delal pocasneje ipd.

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



Pridružen-a: Pon 16 Jun 2008 14:11
Prispevkov: 4969
Aktiv.: 24.02

PrispevekObjavljeno: Čet Jun 30, 2011 8:27 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
RAM v uCjih je SRAM in tipično ima vsaka aplikacija v RAMu nekje vsaj en tak counter, kot ga opisuješ. Da bi SRAM celica crknila, bi to pomenilo, da je crknil vsaj en tranzistor znotraj obeh inverterjev v celici. Kakšna je verjetnost za to? Whistle

Ne vem, saj zato pa sprašujem Mr. Green

Ok, potem je zadeva varna.
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: 489 dni


Powered by phpBB © 2001, 2005 phpBB Group