Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Konstantan niz prevelik dspic

[es] :: Elektronika :: Mikrokontroleri :: Konstantan niz prevelik dspic

[ Pregleda: 1827 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lestrigonac
Lestrigonac
Futog, Novi Sad

Član broj: 145470
Poruke: 247
*.dynamic.sbb.rs.



+2 Profil

icon Konstantan niz prevelik dspic19.09.2013. u 14:13 - pre 79 meseci
Pozdrav,

Napravio sam od nekih slika konstantne nizove :

Code:
const unsigned char name[] = {0x1fff, 0x5cd4,...}


Imam deset ovakvih nizova i kada kompajliram, javi mi da sam premasio memoriju .const (preko 32768 bajtova).

Da li neko zna kako ovo da se resi?

Pokusao sam da sve nizove napisem kao:

Code:
 __psv__ const unsigned char __attribute__((space(psv))) name[] = {0x1fff, 0x5cd4};


Ali onda mi se bootloader buni kako cu da prepisem neke lokacije koje ne smem...

Da li je neko smestao vece nizove u memoriju i kako je to uspeo?

Unapred hvala na odgovoru,
Pozdrav,
Lestrigonac
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Konstantan niz prevelik dspic19.09.2013. u 16:47 - pre 79 meseci
Ne znam za veličinu niza, ali unsigned char ti je od 0x00 do 0xFF
Treba ti unsigned int - od 0x0000 do 0xFFFF

 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8366 Profil

icon Re: Konstantan niz prevelik dspic19.09.2013. u 17:16 - pre 79 meseci
Ako je kod tog dsPIC-a Harvard arhitektura moguce je da nema toliko mjesta u DATA tj. RAM memoriji.
U principu to funkcionise tako da se konstantni podaci snime u flash, pa se u toku inicijalizacije mikrokontrolera prekopiraju u RAM, te efektivno zauzimaju prostor i tamo i ovamo.
Pogledaj kako mozes te podatke smjestiti samo u programski flash (bez kopiranja u RAM) i tamo im pristupati.

Kod avr-a postoje u GCC kompajleru gotove funkcije za trpanje (i citanje) podataka u programski flash, moguce je da ima nesto slicno i za dsPIC.
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4896
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+466 Profil

icon Re: Konstantan niz prevelik dspic19.09.2013. u 17:31 - pre 79 meseci
Koji je konkretno dsPIC u pitanju i koji kompajler koristis?

Generalno to jeste poveci zahtev za RAM, 32kB to je 32 hiljade lokacija ali sa 8bitnim podacima, ako je 16bitni podatak (do 0xFFFF) onda naravno duplo manje lokacija.

Verovatno ces to morati da razbijes na vise delova (blokova) i da u jednom trenutku obradujes manje kolicine podataka + da imas logiku koja ce da bira te blokove po potrebi.

Evo gledam npr dsPIC33EP128MC502 ima 16kB (kilobajtova) RAM memorije, to je teoretski 8192 lokacija za 16bitne podatke, stim sto to sigurno ne moze bas do "daske" da se iskoristi u funkciji, mora ostati nesto rama za ostale funkcije.

Dodatno probaj jos te nizove da definises u runtime kao klasicna varijabla ne konstanta. Dakle kada udjes u main() tu negde pre pocetka tvoje glavne logike, tu umetni niz, mozda pomogne.

[Ovu poruku je menjao mikikg dana 19.09.2013. u 18:51 GMT+1]
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

lestrigonac
Lestrigonac
Futog, Novi Sad

Član broj: 145470
Poruke: 247
*.dynamic.kdsinter.net.



+2 Profil

icon Re: Konstantan niz prevelik dspic19.09.2013. u 19:09 - pre 79 meseci
Hvala svima na odgovorima! :)

Citat:
ali unsigned char ti je od 0x00 do 0xFF


Da, naravno. :) Primer sam izvlacio iz glave, posto sam bio u zurbi kada sam pisao prvu poruku. :) Koristim unsigned short, a za C30 je to 16bita. ;)

@Odin D. - Koliko shvatam ovaj dsPIC ima neku modifikovanu Harvard arhitekturu. Bez obzira na to, svakako razmatram kako mogu to samo da smestim u ram. Nisam siguran da sam jos dosao do pravog odgovora. Nasao sam neka potencijalna resenja na Microchip forumu pa cu to veceras da probam.

@mikikg - Izvinjavam se sto nisam dao dovoljno podataka u prvom postu, posto sam bio u zurbi. Koristim dsPIC33FJ256GP710A koji ima 256KByte Flash memorije i 30KByte SRAM memorije. Koristim C30 kompajler.

Samo da kratko pokusam da objasnim o cemu se radi. Imam neki displej sa touch screen-om na koji treba da prikazem neke dugmice, koji u stvari reprezentuju odredjenu funkciju (kada kliknem na jedno dugme, izvrsi se neka operacija). Svako od tih dugmica je 42px x 42px i kada konvertujem to u 16 bitni podatak, to je niz od 1768 elemenata za svaku od tih slika. I kada se to pogleda za sve slike (10 komada) bude negde 35360KB. A maksimalno dozvoljeno je 32768KB.

U prilogu je slika greske koju mi linker prijavljuje.

Pokusacu to sto ste mi savetovali, a i nasao sam jos neka potencijalna resenja na microchip forumu, pa cu i to da probam. Valjda cu nesto uspeti, a ako nadjem resenje, svakako cu postaviti ovde.

Ako imate jos neke sugestije, slobodno recite! :)

Hvala svima puno!!!

Pozdrav,
Lestrigonac

Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15206
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2314 Profil

icon Re: Konstantan niz prevelik dspic19.09.2013. u 19:40 - pre 79 meseci
pogledaj linker skript za taj pic, kada pravis velike strukture moras da
ih smestis na tacno odredjeno mesto, to se radi linker skriptom, nekad
nemas dovoljno veliki blok da smestis ceo niz pa ga podelis u vise
delova .. nemam sad kad da gleam datasheet za taj dspic ali pogledaj
njegovu adresnu strukturu i pogledaj linker skript i onda napravi svoj
linker skript sa segmentom za te nizove i onda te nizove stavi u taj segment
 
Odgovor na temu

lestrigonac
Lestrigonac
Futog, Novi Sad

Član broj: 145470
Poruke: 247
*.dynamic.kdsinter.net.



+2 Profil

icon Re: Konstantan niz prevelik dspic20.09.2013. u 00:14 - pre 79 meseci
@bogdan.kecman - Video sam na microchip forumu da to neko isto spominje, ali nisam bas siguran koliko brzo bih mogao to da uradim. Nisam jos tako nesto radio...

Probacu ja ovo sto si naveo, ali sada mi je trebalo brzo resenje i resio sam problem tako sto sam dva niza stavio bez const, a ostale sam ostavio sa const. Radi za sada sve, ali mi se ne svidja tako da budzim, pa cu svakako pogledati kako moze ovo da se resi na drugi nacin. Naravno, kada sam stavio ova dva niza u data memoriju, morao sam da promenim opciju za kompajler da data memory model bude large model.

Pozdrav,
Lestrigonac
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15206
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2314 Profil

icon Re: Konstantan niz prevelik dspic20.09.2013. u 08:43 - pre 79 meseci
nisam ispratio koji tacno pic koristis ali neki picevi uopste ne mogu da
alociraju vise ram-a nego sto im je segment tako da moras da delis
nizove u nekoliko manjih
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Konstantan niz prevelik dspic

[ Pregleda: 1827 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.