[elektro] dsPIC C30 nagy konstans tömb

hg12345 hg12345 at freemail.hu
Mon May 12 07:08:59 CEST 2008


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



More information about the Elektro mailing list