2D pole na specifickej adrese?
Moderátori: psichac, Moderátori
- zawin
- Administrátor
- Príspevky: 2644
- Dátum registrácie: 17 Júl 2006, 00:00
- Vek: 34
- Kontaktovať používateľa:
2D pole na specifickej adrese?
Ahojte,
neviete niekto poradit, ako zapisat v C-cku prikaz ktory vytvori 2D pole od definovaneho miesta v pamati?
Dakujem
neviete niekto poradit, ako zapisat v C-cku prikaz ktory vytvori 2D pole od definovaneho miesta v pamati?
Dakujem
0
Sú dve veci, ktoré sú nekonečné - vesmír a ľudská hlúposť. Ale s vesmírom som si ešte nie celkom istý. /Einstein/
Re: 2D pole na specifickej adrese?
Nie je to bezny postup a kazdy prekladac to robi po svojom. Onehdy som to riesil v keil - ten ma na to prikaz.
V tvojom pripade bych skusil pole zadefinovat v samostatnom module a pri linkovani mu vnutil adresu.
V tvojom pripade bych skusil pole zadefinovat v samostatnom module a pri linkovani mu vnutil adresu.
0
- bobo87
- Ultimate člen
- Príspevky: 1915
- Dátum registrácie: 15 Feb 2007, 00:00
- Vek: 36
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
Ahoj, neviem, ci to ide nejako priamo a ak ano, tak to nebude vobec pekne. Prve co ma napada, je nejaky pointer na 2D pole a dalsie, co ma napada, je pouzit iba jednorozmerne pole a nejake makra na prepocitavanie. Kompilovat som neskusal, takze len myslienka, napriklad pre pole floatov :
alebo to jednorozmerne pole - v podstate to iste
Kód: Vybrať všetko
float *array2D[size0][size1];
array2D[0][0] = (float*)0xFFFFFF; // adresa
(*array2D)[x][y] = ....
Kód: Vybrať všetko
float *array;
array = (float*)0xFFFFFF; // adresa
array[x+size0*y] = ...
0
float l,I,Q,_,o;int E;main(){I=1.125;while(I>=-1.225){for(l=-2;l<=1;l+=3/79.0){Q=_=0;for(E=127;Q*Q+_*_<4.0&&--E>32;){o=Q;Q=Q*Q-_*_+l;_=2*o*_+I;}putchar(E);}putchar(10);I-=9/88.0;}}
- zawin
- Administrátor
- Príspevky: 2644
- Dátum registrácie: 17 Júl 2006, 00:00
- Vek: 34
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
Je to na MCU, ale nakoniec to asi vyriesim 1D polom a riadky budem pocitat v programe.
0
Sú dve veci, ktoré sú nekonečné - vesmír a ľudská hlúposť. Ale s vesmírom som si ešte nie celkom istý. /Einstein/
Re: 2D pole na specifickej adrese?
Zjisti si v manuálu svýho kompilátoru, jakej je na to atribut.
Na KEILáka třeba platí __attribute__((at(address))). GCC to bude mít jinak a co používáš ty jsi nezmínil.
Jinak si to samozřejmě můžeš počítat programem.
Na KEILáka třeba platí __attribute__((at(address))). GCC to bude mít jinak a co používáš ty jsi nezmínil.
Jinak si to samozřejmě můžeš počítat programem.
0
Re: 2D pole na specifickej adrese?
Mam tusenie, ze mozna riesime nieco co ide robit inak. Napis co potrebujes vyriesit.
Pokial absolutna adresa nesuvisi s HW je pouzitie absolutnej adresy neoptimalne.
Pokial absolutna adresa nesuvisi s HW je pouzitie absolutnej adresy neoptimalne.
0
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
cez typedef spravit typ 2d_pole a potom ho slahnut na danu adressu to by gcc malo pochrumat
0
- zawin
- Administrátor
- Príspevky: 2644
- Dátum registrácie: 17 Júl 2006, 00:00
- Vek: 34
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
Aby som to trocha objasnil tak chcem to kvoli spracovaniu obrazku. Cez DMA sa presype odfoteny obrazok z DCMI do externej SRAM, ktora je namapovana cez FSMC na urcitu adresu.
Pre pohodlie programatora som chcel pracovat s obrazkom ako 2D maticou (demosaic, histogram...)...
Pre pohodlie programatora som chcel pracovat s obrazkom ako 2D maticou (demosaic, histogram...)...
0
Sú dve veci, ktoré sú nekonečné - vesmír a ľudská hlúposť. Ale s vesmírom som si ešte nie celkom istý. /Einstein/
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
inak podstate by si mohol pouzit MAKRO cez define alebo inline static funkciu
a mat setpixel(x,y) a getpixel(x,y) ono to pole je tiez len linearny adressny priestor a makro je
o malicko rychlejsie ako C - CALL/RET funkcia.
a mat setpixel(x,y) a getpixel(x,y) ono to pole je tiez len linearny adressny priestor a makro je
o malicko rychlejsie ako C - CALL/RET funkcia.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: 2D pole na specifickej adrese?
Takéto niečo ti kompilátor nežere?
Kód: Vybrať všetko
typedef int myArray[10][10];
myArray *pointer = (myArray *)0x200;
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 21 Odpovedí
- 2038 Zobrazení
-
Posledný príspevok od používateľa lato