[elektro] dsPIC C30 nagy konstans tömb

Kovács Árpád arpad.kovacs at freemail.hu
Tue May 13 22:06:48 CEST 2008


Sziasztok!

Köszönöm a hozzászólásokat, frissíteni kellett. Nekem a március elején 
letöltött V3.02-es volt fenn. Hihetetlen hibaüzeneteket produkált a linker a 
probálkozásokra, köpni nyelni nem tudtam mi baja. A legszebb az volt mikor 
már kísérletképpen a main-be raktam be a tömböt tartalmazó include-ot, na 
arra aztán teljesen becsavarodott, valami ismeretlen nevű fájlt nem tudott a 
local setting\temp (!) könyvtárban kezelni, döbbenet.
Szóval Hg, értékes időt spóroltál nekem, köszi. A 3.10-essel már simán 
lefordul. Május 1-én jött ki, mi minden történhet két hónap alatt... :-) 
Mindenesetre ezek a dolgok jó kis bosszúságot tudnak okozni. Most már csak 
azt mond meg nekem, hogy Te azonnal frissítesz mindent, amint új verzió jön 
ki, vagy pont volt egy ilyen melód neked is?
Továbbá ide kapcsolódó kérdés még, hogy hogyan végzed a frissítéseket, 
előzőt mindíg uninstall a vezérlőpultban a C18, 24 és 30-as fordítónál, hogy 
ne legyen kétszer? Különös tekintettel magára az MPLAB-ra! Mert például már 
a C30 3.10 is az újabb MPLAB-ot javasolja, akkor minden fel előlről?

Árpi


----- Original Message ----- 
From: "hg12345" <hg12345 at freemail.hu>
To: <elektro at tesla.hu>
Sent: Monday, May 12, 2008 7:08 AM
Subject: Re: [elektro] dsPIC C30 nagy konstans tömb


Hi!

Melyik forditót használod V3.10 vagy korábbit? Amit leírtál annak jónak
kéne lenni-e, az újabb változatban kipróbáltam
__attribute__((space(auto_psv))) char tt[150][200]={ };
Nem kiabált, de ha átléptem a 32K korlátot akkor igen.

Ha definiáltam egy másik nagy tömbböt, akkor azt is lefordította és a
linker üzent :

c:\program files\microchip\mplab c30\bin\bin\pic30-coff-ld.exe: Warning:
data initialization has been turned off, therefore section .data will not
be initialized.
c:\program files\microchip\mplab c30\bin\bin\pic30-coff-ld.exe: Error:
PSV section .const exceeds 32K bytes (actual size = 41210).
 Link Error: Could not allocate program memory

De kicsi a memóriaja amire dolgozom....

Az új fordítóban err&#337;l egy teljes fejezet mesél:
           6.2 MANAGED PSV POINTERS

Gyakorlatilag van egy korlát a memóriában 32K ennél nagyobb FLASH
konstans csak lapozva tud kezelni! A const alapból a C a PSVPAG
regisztettel lapozással a fels&#337; 32K-byte-ból olvassa, mintha ram-ot
olvasna.

__attribute__((space(auto_psv)))
__attribute__((space(psv)))
__attribute__((space(prog)))





>
> Sziasztok, sikerült belefutnom egy kis C problémába. Egy igen nagy
(kb.
> húszezer bájtos) konstans tömb lenne a programmemóriában:
>
> const char data[]=
> {
> //adatok felsorolása
> };
>
> Elvileg lenne b&#337;ven még hely a programmemóriában, de mégis
ekkora tömbre:
>
> Error: Not enough contiguous memory for section .const.
>
> Probálkozásaim a megoldásra: 18000 elemet sorolok fel a kapcsos
zárójelek
> között, azt még elfogadja, de ha külön csinálok hozzá mondjuk egy
2000
> elem&#369;t úgy sem jó neki. Optimalizálással sem sikerült rávennem a
fordítót.
> Ellentétben a C18-as fordítóval itt a #pragma direktíva helyett az
> attribute-t kell használni, ha én akarom kijelölni a helyét, de a répa
meg
> sem moccan, kapok még egy warning-ot is:
>
> warning: ignoring space attribute applied to automatic...
>
> Esetleg nem lehet valahogy bináris adatként hozzálinkelni, mint egy
fájl, és
> akkor majd programmemória olvasással elintézem én? Vagy más
ötlet?
>
> Köszi,
>
> Árpi
>
>
> -----------------------------------------
>           elektro[-flame|-etc]
>

_______________________________________________________
Tippelj és nyerd meg a Panasonic DVD felvevőt!
http://vasarlas.origo.hu

-----------------------------------------
          elektro[-flame|-etc]



More information about the Elektro mailing list