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

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Pon Jan 05, 2009 3:14 am Naslov sporočila: Eeprom na lpc2148 |
|
|
Pozdrav,
kako je z uporabo dela programskega flasha kot eeproma? Je kdo poskušal oz. ima kak primer kode? Kako je z "copy from RAM to flash"?
Lp
|
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pon Jan 05, 2009 9:42 am Naslov sporočila: |
|
|
Najbolje bo, da striktno upoštevaš navodila in priporočila, ki jih ima NXP na svoji strani. Med ostalim, boš dobil tudi primer. Temu rečejo IAP.
_________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
strobos Član

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Tor Jan 06, 2009 5:38 am Naslov sporočila: |
|
|
Verjetno si mislil tale primer? Kolikor gledam, stvar vmes izklopi PLL, da deluje in ga nato nazaj vklopi?
Ali to programsko pisanje po flashu deluje tudi, če je flash zaklenjen?
Lp
Opis: |
|
 Download |
Ime datoteke: |
IAP.C |
Velikost datoteke: |
6.5 KB |
Downloadano: |
17 krat |
|
|
Nazaj na vrh |
|
 |
SimonS Član



Pridružen-a: Čet 01 Jul 2004 11:18 Prispevkov: 4770 Aktiv.: 20.08 Kraj: Kobarid
|
Objavljeno: Tor Jan 06, 2009 11:27 am Naslov sporočila: |
|
|
Deluje
_________________ Lep dan
Simon |
|
Nazaj na vrh |
|
 |
strobos Član

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Ned Jan 11, 2009 12:33 am Naslov sporočila: |
|
|
strobos je napisal/a: |
Ali to programsko pisanje po flashu deluje tudi, če je flash zaklenjen? |
V user manualu piše:
Citiram: |
When the code read protection is enabled
the JTAG debug port, external memory boot and the following ISP commands are
disabled:
• Read Memory
• Write to RAM
• Go
• Copy RAM to Flash
The ISP commands mentioned above terminate with return code
CODE_READ_PROTECTION_ENABLED. The ISP erase command only allows erasure
of all user sectors when the code read protection is enabled. This limitation does not exist
if the code read protection is not enabled. IAP commands are not affected by the code
read protection. |
Ni mi jasno, Copy ram to flash je onemogočen, IAP pa lahko uporabljam, ko aktiviram zaščito CRP. Ampak saj IAP uporablja funkcijo Copy ram to flash?
Lp
|
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Ned Jan 11, 2009 12:11 pm Naslov sporočila: |
|
|
strobos je napisal/a: |
Ni mi jasno, Copy ram to flash je onemogočen, IAP pa lahko uporabljam, ko aktiviram zaščito CRP. Ampak saj IAP uporablja funkcijo Copy ram to flash? |
Bodi pozoren na sledeče iz UM-ja:
Citiram: |
When the code read protection is enabled the JTAG debug port, external memory boot and the following ISP commands are disabled: ... |
Tukaj ni naveden IAP. Dejansko iz navedenih načinov dostopaš, modificiraš vsebino Flash-a od zunaj, z IAP pa od znotraj.
Na kratko, pri IAP vse funkcije povezane z IAP, kot je tudi Copy ram to flash in druščina, niso onemogočene, kljub vklopljenemu CRP.
~ Aleš
|
|
Nazaj na vrh |
|
 |
strobos Član

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Tor Jan 13, 2009 4:11 am Naslov sporočila: |
|
|
Pri prevajanju zgornjega iap.c programa, mi uVision javlja napake:
IAP\IAP.C(217): error: #167: argument of type "int" is incompatible with parameter of type "void *"
Tudi ko popravim da je vse int, še vedno javlja napake, kako to popravim?
Javlja tudi, da mora biti main tipa int.
Lp
|
|
Nazaj na vrh |
|
 |
strobos Član

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Sre Jan 21, 2009 7:23 am Naslov sporočila: |
|
|
Uspel sem porihtat program, da se lepo skompajla, vendar stvar ne dela. Napisal sem tako:
Koda: |
unsigned long Year_doy_fread;
unsigned char zapisi[16];
unsigned int *pYDF = (unsigned int *) 0x6000;
for (i = 0; i < 16; i++) { //spremenljivka vsebuje stevila od 0 do 15
zapisi[i] = i;
}
erase (0x6000, 0x6FFF);
program (0x6000, zapisi, sizeof (zapisi));
Year_doy_fread = *pYDF; //branje iz flasha
IODIR1 = 0xFF0000; /* P1.16..23 defined as Outputs */
IOCLR1 = 0xFF0000;
IOCLR1 = ~(Year_doy_fread>>16)&0xFF0000;
IOSET1 = (Year_doy_fread>>16); //tukaj prikazujem na ledicah |
Torej berem iz naslova 0x6000 štiri byte v spremenljivko Year_doy_fread. Vrednost prvega byta bi morala biti 0, drugega 1, tretjega 2 in četrtega 3, skupno desetiško pa 132099, vendar pa je vrednost te spremenljivke FFFFFFFF.
Opazil sem, da je formula za računanje sectorjev v flashu napačna, ker je napisana za 210x serijo, ki ima 8kB sectorje in sem to popravil, pa je stvar še vedno ista. V čem je finta?
Lp
|
|
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
|