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 

Zapis podatkov v flash pomnilnik

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



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Apr 09, 2010 11:15 am    Naslov sporočila:  Zapis podatkov v flash pomnilnik Odgovori s citatom

Lep pozdrav vsem skupaj!

Uporabljam Keil uVision4. Ob nalaganju programa bi rad bi zapisal nekaj podatkov na neke lokacije v flash pomnilnik. Ali je to sploh možno in kako naj to prevajalniku dopovem Very Happy

Najlepša hvala za kakršnokoli pomoč in lep pozdrav,

Jani
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



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

PrispevekObjavljeno: Pet Apr 09, 2010 11:25 am    Naslov sporočila:   Odgovori s citatom

Koda:
#include <absacc.h>

const int myCodes[5] = {0, 1, 2, 3, 4} __at 0x21000000;



Glavni je atribut __at (nek naslov). Definiran pa je v absacc.h.

Koda:
#include <absacc.h>

const int variable __at (0x000001FC) = 0x0022;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Apr 09, 2010 11:29 am    Naslov sporočila:   Odgovori s citatom

Ali se lahko na te lokacije ob izvajanju piše poljubne vrednosti?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



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

PrispevekObjavljeno: Pet Apr 09, 2010 11:36 am    Naslov sporočila:   Odgovori s citatom

JohnD je napisal/a:
Ali se lahko na te lokacije ob izvajanju piše poljubne vrednosti?


Če so ti podatki v flashu, ne moreš, upam da je to jasno.
Če so ti podatki v RAMu, potem da. Le tisti const vržeš ven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Apr 09, 2010 1:06 pm    Naslov sporočila:   Odgovori s citatom

Jah ideja je v tem, da se ob nalaganju programa ti podatki naložijo gor na flash, kot nekako tovarniški parametri. Med delovanjem pride do spremembe teh konstant in se prepiše z novimi. Mikrokontrolerji od luminarija omogočajo, da se med delovanjem v programu programira 1kB bloke podatkov na podane lokacije v flash.

Definiral bom neko kontantno tabelo na neki lokaciji. In ko se bodo parametri v programu spremenili jo bom zapisal čez tiste lokacije.

Ali je potlej možno to izvesti?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



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

PrispevekObjavljeno: Pet Apr 09, 2010 1:25 pm    Naslov sporočila:   Odgovori s citatom

JohnD je napisal/a:
Med delovanjem pride do spremembe teh konstant in se prepiše z novimi. Mikrokontrolerji od luminarija omogočajo, da se med delovanjem v programu programira 1kB bloke podatkov na podane lokacije v flash.

Definiral bom neko kontantno tabelo na neki lokaciji. In ko se bodo parametri v programu spremenili jo bom zapisal čez tiste lokacije.

Ali je potlej možno to izvesti?
Ja, ja, seveda, tako kot praviš. Upoštevati moraš samo to, da flash lahko brišeš po blokih, torej v ta blok ne smeš dati drugih podatkov, da si jih ne boš povozil.
Poglej tudi (datasheet uCja), koliko je velikost tega bloka, da ne bi po nepotrebnem kuril prostora (če ti ga morda primanjkuje).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Apr 09, 2010 1:46 pm    Naslov sporočila:   Odgovori s citatom

Umnik najlepša hvala! Spodnji primerček mi je potrdil teorijo. Po resetu ni več vrednosti, ki jo določim ob programiranju Very Happy

Koda:

long variable __at (0x0003FC00) = 0xAAAABBBB;

int main()
{
   char outputmsg[128];
   unsigned long tmptable[1]={0xFFFFFFF};
   
        //...razne inicializacije
   
   FlashUsecSet(50);
   
   sprintf(outputmsg,"%s %X %s"," Before: ", HWREG(0x0003FC00), "\n");
   UARTprintf(outputmsg);
   
   FlashErase(0x3FC00);
   
   if (FlashProgram(tmptable, 0x3FC00, sizeof(tmptable)))
   {
      UARTprintf("Writing parameters failed!\n");
   }

      sprintf(outputmsg,"%s %X %s"," After: ", HWREG(0x0003FC00), "\n");
   UARTprintf(outputmsg);

   while(1)
   {
   }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-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: 499 dni


Powered by phpBB © 2001, 2005 phpBB Group