[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ő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ő 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ő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ű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