Bonjour à tous,
J'utilise le compilateur XC32 en version gratuite et ma cible est un PIC32MX130F256D.
J'essaye de compiler mon projet avec un custom linker script pour que je puisse charger le binaire avec mon bootloader.
Quand je compile, j'obtiens l'erreur suivante :
c:\program files (x86)\microchip\xc32\v1.40\bin \bin\gcc\pic32mx\4.8.3\..\..\. .\..\bin/xc32-ld.exe: small-data section exceeds 64KB; lower small-data size limit (see option -G)
Je ne comprend pas vraiment, je n'utilise que 2 variables globales d'un octet chacune et 2 tableaux dont les dimensions sont 8 octets et 2x15 octets.
Voici mon linker script
J'ai essayé de compiler avec l'option -G4 et -G2 mais cela ne semble pas avoir d'effet.Code:/************************************************************************* * Processor-specific object file. Contains SFR definitions. *************************************************************************/ INPUT("processor.o") /************************************************************************* * Processor-specific peripheral libraries are optional *************************************************************************/ OPTIONAL("libmchp_peripheral.a") OPTIONAL("libmchp_peripheral_32MX130F256D.a") /************************************************************************* * For interrupt vector handling *************************************************************************/ PROVIDE(_vector_spacing = 0x00000001); _ebase_address = 0x9D005000; /************************************************************************* * Memory Address Equates * _RESET_ADDR -- Reset Vector * _BEV_EXCPT_ADDR -- Boot exception Vector * _DBG_EXCPT_ADDR -- In-circuit Debugging Exception Vector * _DBG_CODE_ADDR -- In-circuit Debug Executive address * _DBG_CODE_SIZE -- In-circuit Debug Executive size * _GEN_EXCPT_ADDR -- General Exception Vector *************************************************************************/ _RESET_ADDR = 0x9D006000; _BEV_EXCPT_ADDR = 0x9D006380; _DBG_EXCPT_ADDR = 0x9D006400; _DBG_CODE_ADDR = 0xBFC00490; _DBG_CODE_SIZE = 0x760; _GEN_EXCPT_ADDR = _ebase_address + 0x180; /************************************************************************* * Memory Regions * * Memory regions without attributes cannot be used for orphaned sections. * Only sections specifically assigned to these regions can be allocated * into these regions. * * The Debug exception vector is located at 0x9FC00480. * * The config_<address> sections are used to locate the config words at * their absolute addresses. *************************************************************************/ MEMORY { kseg0_program_mem (rx) : ORIGIN = 0x9D006000, LENGTH = 0x3F000 - 0x6000 exception_mem : ORIGIN = 0x9D005000, LENGTH = 0x1000 debug_exec_mem : ORIGIN = 0xBFC00490, LENGTH = 0x760 kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x0 kseg1_boot_mem : ORIGIN = 0x9FC05000, LENGTH = 0x490 config3 : ORIGIN = 0xBFC00BF0, LENGTH = 0x4 config2 : ORIGIN = 0xBFC00BF4, LENGTH = 0x4 config1 : ORIGIN = 0xBFC00BF8, LENGTH = 0x4 config0 : ORIGIN = 0xBFC00BFC, LENGTH = 0x4 kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x4000 sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000 configsfrs : ORIGIN = 0xBFC00BF0, LENGTH = 0x10 } /************************************************************************* * Configuration-word sections. Map the config-pragma input sections to * absolute-address output sections. *************************************************************************/ SECTIONS { .config_BFC00BF0 : { KEEP(*(.config_BFC00BF0)) } > config3 .config_BFC00BF4 : { KEEP(*(.config_BFC00BF4)) } > config2 .config_BFC00BF8 : { KEEP(*(.config_BFC00BF8)) } > config1 .config_BFC00BFC : { KEEP(*(.config_BFC00BFC)) } > config0 }
Lorsque mon script de link n'est pas utilisé, il n'y a aucune erreur de compile
Auriez vous une idée ?
-----