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 

AVR - izvajanje programa z zunanjega pomnilnika

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marko
Član
Član



Pridružen-a: Sre 07 Jan 2004 15:14
Prispevkov: 755
Aktiv.: 3.18

PrispevekObjavljeno: Tor Okt 22, 2013 10:28 am    Naslov sporočila:  AVR - izvajanje programa z zunanjega pomnilnika Odgovori s citatom

Živjo,

Imam idejo, da bi lahko za neko napravo, vsak sam izdeloval svoje module. Ko govorim sam, imam v mislih, da bi programer sam razvijal nek modul, ki dobi na vhod tega modula vse podatke, ki mu jih naprava ponudi, izhod pa je potem nekaj kar naprava naredi. Vsak modul bi se registriral v glavnem programu, ta glavni program pa bi vse te module potem izvajal.

Kolikor vem, AVR AT90 (uporabljam CAN128) ne podpira izvajanje z zunanjega pomnilnika, zato bi bilo treba naredit neko drugo foro, vendar z bootloaderji in podobnimi zadevami nimam veliko izkušenj. Rad pa bi, da je to nekako ločeno, da z updatom jedra, ne moreš pokvarit vseh teh naloženih modulov. To nalaganje modulov bi tudi bilo enkratno in bi se zapisalo v ta zunanji pomnilnik (ali pa kam drugam - permanentno)

Ima kdo kako idejo?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2105
Aktiv.: 8.86
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 23, 2013 12:34 pm    Naslov sporočila:   Odgovori s citatom

Kolikor vem, 8 bit Atmelov AVR lahko izvaja program le iz internega programskega pomnilnika.

Če bi rad izvajal program, ali skripto iz zunanjega pomnilnika, napiši interpreter.
Ne bo najhitrejše, vendar je pri uporabi izbranega uC to edina možnost, če hočeš zagotoviti, da posamezni modul nima polnega dostopa do HW in ne more spreminjati registrov, ki niso njegovi.

Če bi rad izvajal nativno kodo, bi bilo treba modul skopirati v programski pomnilnik. Če je teh modulov več, v modulu ne smejo biti uporabljeni absolutni naslovi za programske skoke v modulu in uporabljeni RAM. Ker ima vsak modul polni dostop do HW, je težko zaznati in verjetno nemogoče preprečiti spreminjanje lokacij/registrov, ki ne pripadajo določenemu modulu.

Delno lahko zaščitiš samo programski pomnilnik, da ga lahko spreminja le bootloader.
Delno, ker modul še vedno lahko izvede skok v bootloader del programa, ki vsebuje SPM ukaz.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5538
Aktiv.: 24.02
Kraj: Domzale

PrispevekObjavljeno: Sre Okt 23, 2013 3:30 pm    Naslov sporočila:   Odgovori s citatom

Mogoče preprosta ideja:
V flash kontrolerja dodaj bootloader za SD kartico in ob vsakem resetu preberi (in izvajaj) program iz SD kartice. Omejitev zna postati omejeno število zapisovanj FLASHa - ali pa tudi ne, odvisno od tega, kako pogosto misliš, da se bo zadevo odklapljalo in priklapljalo ...

LP, g

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko
Član
Član



Pridružen-a: Sre 07 Jan 2004 15:14
Prispevkov: 755
Aktiv.: 3.18

PrispevekObjavljeno: Sre Okt 23, 2013 4:04 pm    Naslov sporočila:   Odgovori s citatom

Jedro se ne bi smelo spreminjati, torej bi moral celotno kodo dati v ta bootloader? Ni tam omejena količina podatkov?

Interpreter je sicer zanimiva ideja, ampak definirat sintakso, ki bi bila dovolj dodelana in hitra, je cela znanost, da ne omenim parsanje vseh teh stavkov in variant. Za en ubog AVR pomoje no-go.

Nekako najbolje bi bilo, da bi ob registriranju modula, glavni program kar v svoj flash dodal kodo modula in se zapomnil na katerem naslovu je. Ob klicu modula, bi se potem skliceval na ta naslov.
Vsi moduli, ki bi se naredili, pa ne bi smeli imeti absolutnih naslovov. Je to sploh izvedljivo v višjem jeziku? (da ne bi ravno asm-ja kucali programerji)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2105
Aktiv.: 8.86
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 23, 2013 5:35 pm    Naslov sporočila:   Odgovori s citatom

Interpreter se je uporabljal že na prvih "hišnih računalnikih" s počasnejšim procesorjem in manj ROM-a, kot ga imaš na voljo.

Če bi rad naredil nekaj podobnega, kot npr web server s CGI razširitvami, ali mini OS, ki poganja aplikacije, izbrani uC ni najbolj primeren.

Tvoj "core" je lahko večji od boot. V boot delu se mora nahajat samo tisti del kode, ki uporablja SPM ukaz in koda za recovery, če gre pri nadgradnji kaj narobe. FLASH update procedura mora biti dovolj pametna, da ne piše po delu FLASH-a, kjer se nahaja core.

Rabiš tudi nek mehanizem, po katerem boot loader prepozna, da sistem ne deluje praviklno, oz. ga lahko prisiliš, da namesto v core skoči v recovery rutino.

Lahko bi pri nalaganju uporabil object datoteko. Linkbi izvedla update aplikacija za PC, ali bootloader, ko bi iz sistema pridobil ustrezne podatke.

Če se bodo moduli pogosto menjali, bo lahko problem fragmentacija pomnilnika.

edit:
Kako bo v času razvoja izvedeno razhroščevanje modulov?
Če se cel sistem preneha odzivat zato, ker je en modul pisal po tujih lokacijah, bo precej težko najti napako. Ne veš niti tega, v katerem modulu je prišlo do napake.
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 -> Elektronika Č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: 11 dni


Powered by phpBB © 2001, 2005 phpBB Group