2D pole na specifickej adrese?

C,C++,C#

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
zawin
Administrátor
Administrátor
Príspevky: 2639
Dátum registrácie: 17 Júl 2006, 00:00
Vek: 34
Kontaktovať používateľa:

2D pole na specifickej adrese?

Príspevok od používateľa zawin » 08 Jan 2015, 14:56

Ahojte,
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/

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: 2D pole na specifickej adrese?

Príspevok od používateľa xmilos » 08 Jan 2015, 15:09

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.
0

Používateľov profilový obrázok
bobo87
Ultimate člen
Ultimate člen
Príspevky: 1913
Dátum registrácie: 15 Feb 2007, 00:00
Vek: 36
Kontaktovať používateľa:

Re: 2D pole na specifickej adrese?

Príspevok od používateľa bobo87 » 08 Jan 2015, 15:10

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] = ...
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;}}

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: 2D pole na specifickej adrese?

Príspevok od používateľa OM0XA » 08 Jan 2015, 16:02

tyka sa to PC alebo jednocipaku?
0

Používateľov profilový obrázok
zawin
Administrátor
Administrátor
Príspevky: 2639
Dátum registrácie: 17 Júl 2006, 00:00
Vek: 34
Kontaktovať používateľa:

Re: 2D pole na specifickej adrese?

Príspevok od používateľa zawin » 08 Jan 2015, 16:58

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/

Hinsi
Pokročilý člen
Pokročilý člen
Príspevky: 510
Dátum registrácie: 15 Sep 2014, 15:56

Re: 2D pole na specifickej adrese?

Príspevok od používateľa Hinsi » 08 Jan 2015, 17:29

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.
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: 2D pole na specifickej adrese?

Príspevok od používateľa xmilos » 08 Jan 2015, 18:58

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.
0

Používateľov profilový obrázok
dxr
Ultimate člen
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?

Príspevok od používateľa dxr » 08 Jan 2015, 20:27

cez typedef spravit typ 2d_pole a potom ho slahnut na danu adressu to by gcc malo pochrumat
0
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

Používateľov profilový obrázok
zawin
Administrátor
Administrátor
Príspevky: 2639
Dátum registrácie: 17 Júl 2006, 00:00
Vek: 34
Kontaktovať používateľa:

Re: 2D pole na specifickej adrese?

Príspevok od používateľa zawin » 08 Jan 2015, 20:37

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...)...
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/

Používateľov profilový obrázok
dxr
Ultimate člen
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?

Príspevok od používateľa dxr » 08 Jan 2015, 20:44

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.
0
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

peterple
Ultimate člen
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?

Príspevok od používateľa peterple » 08 Jan 2015, 21:06

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í.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok