Strana 1 z 1

2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 14:56
od používateľa zawin
Ahojte,
neviete niekto poradit, ako zapisat v C-cku prikaz ktory vytvori 2D pole od definovaneho miesta v pamati?

Dakujem

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 15:09
od používateľa xmilos
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.

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 15:10
od používateľa bobo87
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 :

Kód: Vybrať všetko

float *array2D[size0][size1];
array2D[0][0] = (float*)0xFFFFFF; // adresa
(*array2D)[x][y] = ....
alebo to jednorozmerne pole - v podstate to iste

Kód: Vybrať všetko

float *array;
array = (float*)0xFFFFFF; // adresa
array[x+size0*y] = ...

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 16:02
od používateľa OM0XA
tyka sa to PC alebo jednocipaku?

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 16:58
od používateľa zawin
Je to na MCU, ale nakoniec to asi vyriesim 1D polom a riadky budem pocitat v programe.

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 17:29
od používateľa Hinsi
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.

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 18:58
od používateľa xmilos
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.

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 20:27
od používateľa dxr
cez typedef spravit typ 2d_pole a potom ho slahnut na danu adressu to by gcc malo pochrumat

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 20:37
od používateľa zawin
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...)...

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 20:44
od používateľa dxr
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.

Re: 2D pole na specifickej adrese?

Napísané: 08 Jan 2015, 21:06
od používateľa peterple
Takéto niečo ti kompilátor nežere?

Kód: Vybrať všetko

typedef int myArray[10][10];
myArray *pointer = (myArray *)0x200;