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

Pridružen-a: Tor 05 Dec 2006 0:10 Prispevkov: 26 Aktiv.: 0.11
|
Objavljeno: Pet Avg 29, 2008 1:14 am Naslov sporočila: ARM branje konstante iz programskega pomnilnika |
|
|
Pozdravljeni,
imam sledečo težavo:
v ROM bi rad naložil dolgo tabelo, ki bi jo potem bral. Pri AVR arhitekturi in Gcc prevajalniku poznam, kako se to reši, nikjer pa še nisem zasledil, kako se to izvede na ARM/gcc kombinaciji.
Problem je v tem, da deklaracija konstante le-to vseeno skopira v RAM ob resetu (vsaj pri avr-ju je tako, ker ima ločena pomnilnika RAM in ROM).
Kako je s temu pri ARM/GCC?
LP |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Pet Avg 29, 2008 11:16 am Naslov sporočila: |
|
|
Npr. takole bereš:
Koda: |
unsigned int vrednost = *(unsigned int *)(0x0004000) |
glede zapisovanja tabele v ROM pa imaš več možnosti. Glede tega ti ne bi znal zdajle takoj direktno pomagat. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Pet Avg 29, 2008 11:37 am Naslov sporočila: |
|
|
Koda: |
#define DATA_TABLE_SIZE (1000)
const int __attribute__ ((section (".text"))) data[DATA_TABLE_SIZE] = {4, 1, 34, 54, 44}
/*branje iz tabele*/
int i;
i = data[3]; /*spremenljivki i prirediš vrednost 54*/
|
Če si za primer vzameš kak winarm project, je sekcija .text definira v linker scripti, *.ld |
|
Nazaj na vrh |
|
 |
Tjazi Član

Pridružen-a: Tor 05 Dec 2006 0:10 Prispevkov: 26 Aktiv.: 0.11
|
Objavljeno: Pet Avg 29, 2008 11:38 am Naslov sporočila: |
|
|
Odlično (hvala!), se mi je sicer dozdevalo, da bi lahko preko pointerja dostopal, kajti pri armu je samo en (linearen) prostor.
Glede tabele... recimo, da bi bila naložena že med prevajanjem (v ROM). Pač neka tabela konstant v .h ali .c datoteki. _________________ LP Matjaž
------------------------------------ |
|
Nazaj na vrh |
|
 |
Tjazi Član

Pridružen-a: Tor 05 Dec 2006 0:10 Prispevkov: 26 Aktiv.: 0.11
|
Objavljeno: Pet Avg 29, 2008 11:40 am Naslov sporočila: |
|
|
Odlično, bom preizkusil čez vikend! Hvala! _________________ LP Matjaž
------------------------------------ |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Pet Avg 29, 2008 12:06 pm Naslov sporočila: |
|
|
Tjazi je napisal/a: |
Odlično (hvala!), se mi je sicer dozdevalo, da bi lahko preko pointerja dostopal, kajti pri armu je samo en (linearen) prostor. |
Preveč posplošuješ. ARM9 ima recimo Harvard arhitekturo in ločen instruction in data bus.
Citiram: |
Glede tabele... recimo, da bi bila naložena že med prevajanjem (v ROM). Pač neka tabela konstant v .h ali .c datoteki. |
A je to vprašanje ali kaj? |
|
Nazaj na vrh |
|
 |
Tjazi Član

Pridružen-a: Tor 05 Dec 2006 0:10 Prispevkov: 26 Aktiv.: 0.11
|
Objavljeno: Pet Avg 29, 2008 12:16 pm Naslov sporočila: |
|
|
Mislil sem predvsem ARM7 arhitekturo
Da, nekako je še dodatno pojasnilo k prvemu vprašanju. _________________ LP Matjaž
------------------------------------ |
|
Nazaj na vrh |
|
 |
Tjazi Član

Pridružen-a: Tor 05 Dec 2006 0:10 Prispevkov: 26 Aktiv.: 0.11
|
Objavljeno: Tor Sep 16, 2008 10:16 am Naslov sporočila: |
|
|
Živjo,
sem rešil problem. Ker imam zadosti RAM-a je šla tabela kar v RAM. Je bistveno hitrejši dostop
LP _________________ LP Matjaž
------------------------------------ |
|
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: 6 dni
Powered by phpBB © 2001, 2005 phpBB Group
|