Bonjour,
J'essai difficilement de configurer un bootloader pour pouvoir charger mon prog via USB.
J'utilise donc un prog bootloader qui fonctionnait déjà avec un autre programme fait antérieurement, ou je chargeai donc ce programme puis chargeais le .hex du programme principal.
Pour ça, j'ai donc adapter les zones mémoires, tant sur le prog bootloader et le prog principal dans les fichiers linker.
Actuellement, mon prog bootloader ce charge bien et je boot bien dessus pour charger mon prog principal, seulement une fois charger,mon nouveau programme principal ne tourne pas.
ce qui est bizarre, c'est que mon nouveau programme n'utilise pas de fichier linker btl_mx.ld et quand j'ajoute donc ce fichier j'ai un packet d'erreur à la compilation alors que si je le retire du projet, tout tourne bien.
Je programme sous mplab x ide v3.26 sous harmony et implémente une stack ethernet
zone memoire bootloader
Code:
zone mémoire programme principal non modifierCode:Code: /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-tradlittlemips") OUTPUT_ARCH(pic32mx) ENTRY(_reset) /* * Provide for a minimum stack and heap size * - _min_stack_size - represents the minimum space that must be made * available for the stack. Can be overridden from * the command line using the linker's --defsym option. * - _min_heap_size - represents the minimum space that must be made * available for the heap. Can be overridden from * the command line using the linker's --defsym option. */ EXTERN (_min_stack_size _min_heap_size) PROVIDE(_min_stack_size = 0x400) ; /* PROVIDE(_min_heap_size = 0) ; Defined on the command line */ /************************************************** *********************** * Processor-specific object file. Contains SFR definitions. ************************************************** ***********************/ INPUT("processor.o") /************************************************** *********************** * Processor-specific peripheral libraries are optional ************************************************** ***********************/ OPTIONAL("libmchp_peripheral.a") OPTIONAL("libmchp_peripheral_32MX795F512L.a") /************************************************** *********************** * For interrupt vector handling ************************************************** ***********************/ PROVIDE(_vector_spacing = 0x00000001); _ebase_address = 0x9FC01000; /************************************************** *********************** * 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 = 0xBFC00000; _BEV_EXCPT_ADDR = (0xBFC00000 + 0x380); _DBG_EXCPT_ADDR = (0xBFC00000 + 0x480); _DBG_CODE_ADDR = 0xBFC02000; _DBG_CODE_SIZE = 0xFF0 ; _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. ************************************************** ***********************/ MEMORY { kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x6000 /* All C Files will be located here */ kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x0 /* This memory region is dummy */ exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000 /* Interrupt vector table */ kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490 /* C Startup code */ debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0 config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4 config2 : ORIGIN = 0xBFC02FF4, LENGTH = 0x4 config1 : ORIGIN = 0xBFC02FF8, LENGTH = 0x4 config0 : ORIGIN = 0xBFC02FFC, LENGTH = 0x4 kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000 sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000 configsfrs : ORIGIN = 0xBFC02FF0, LENGTH = 0x10
Merci pour votre aideCode:zone mémoire programme principal non modifier Code: /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-tradlittlemips") OUTPUT_ARCH(pic32mx) ENTRY(_reset) /* * Provide for a minimum stack and heap size * - _min_stack_size - represents the minimum space that must be made * available for the stack. Can be overridden from * the command line using the linker's --defsym option. * - _min_heap_size - represents the minimum space that must be made * available for the heap. Can be overridden from * the command line using the linker's --defsym option. */ EXTERN (_min_stack_size _min_heap_size) /************************************************** *********************** * Processor-specific object file. Contains SFR definitions. ************************************************** ***********************/ INPUT("processor.o") /************************************************** *********************** * Processor-specific peripheral libraries are optional ************************************************** ***********************/ OPTIONAL("libmchp_peripheral.a") /************************************************** *********************** * For interrupt vector handling ************************************************** ***********************/ PROVIDE(_vector_spacing = 0x00000001); _ebase_address = 0x9FC01000; /************************************************** *********************** * 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 = 0xBFC00000; _BEV_EXCPT_ADDR = (0xBFC00000 + 0x380); _DBG_EXCPT_ADDR = (0xBFC00000 + 0x480); _DBG_CODE_ADDR = 0xBFC02000; _DBG_CODE_SIZE = 0xFF0 ; _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. ************************************************** ***********************/ MEMORY { kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0xE000 /* All C Files will be located here */ kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x0 /* This memory region is dummy */ exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x200 /* Interrupt vector table */ config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4 config2 : ORIGIN = 0xBFC02FF4, LENGTH = 0x4 config1 : ORIGIN = 0xBFC02FF8, LENGTH = 0x4 config0 : ORIGIN = 0xBFC02FFC, LENGTH = 0x4 kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490 /* C Startup code */ kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000 sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000 debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0 configsfrs : ORIGIN = 0xBFC02FF0, LENGTH = 0x10
-----