Bootloader en C sur pic32
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Bootloader en C sur pic32



  1. #1
    invite23ada26d

    Bootloader en C sur pic32


    ------

    Bonjour, je suis nouveau sur ce forum et j'aimerais beaucoups avoir de l'aide. J'ai écrit un bootloader pour pic32 en C. Ce microcontroleur posséde un espace mémoire (boot flash) dédié à ce type de programme.
    Mon probléme est que je n'arrive pas à faire comrpendre au compilo (mplab c32) qu'il faut mettre cette partie du code à cet endroit précis. Pour résumer, comment spécifier en C où placer une partie du code. En assembleur 16 bits, on faisait ça avec "ORG 0x0000" mais là c'est du 32bits et en plus je n'arrive pas à mettre de l'assembleur dans un fichier C. J'ai lu et relu la doc du compilo et rien n'y fait...

    -----

  2. #2
    JPL
    Responsable des forums

    Re : Bootloader en C sur pic32

    Déplacé en Électronique où tu auras probablement plus de réponses.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    grd666

    Re : Bootloader en C sur pic32

    Salut,
    si tu n'arrive pas à mettre de l'assembleur dans un fichier C c'est un peu normal le C et l'assembleur c'est pas trop les même langages.
    Sinon tu dois créer un fichier sources .asm pas .c
    a+

  4. #4
    invite23ada26d

    Re : Bootloader en C sur pic32

    Je sais bien, si je dis ca c'est parce que sur le pic18 on pouvait mettre de l'assembleur dans un fichier .c via les instruction _asm et _endasm. C'est instruction semble toujours exister dans le pic32 mais pas moyen de compiler avec de l'assembleur. Sinon si c'est possible de faire sans instruction assembleur je suis preneur.

  5. A voir en vidéo sur Futura
  6. #5
    grd666

    Re : Bootloader en C sur pic32

    Bas en C personnellement je m'occupe pas de savoir ou va le programme je fait un Void main(void)
    {...}
    et je met dans le pic je m'occupe jamais des adresses.
    Mais dans ton cas tu dois le mettre a un endroit préci de la mémoire doit y avoir des instructions qui existe en C mais je les connais pas désolé

  7. #6
    invite4671370c

    Re : Bootloader en C sur pic32

    Et si tu essayais ça:
    Code:
    asm
    {
          MOV    machin,bidule
          JMP    truc
    }

  8. #7
    invite2562e666

    Re : Bootloader en C sur pic32

    Salut,

    Tu doit modifier le script du linker pour définir une "section" qui contient ton code et ensuite tu la placeras où tu veux.

    Voir la documentation du linker GNU "Ld" de GCC.

    th.

  9. #8
    invite0e5af214

    Re : Bootloader en C sur pic32

    Salut.

    En C pour 8 bit, avec MCC18, on met :
    Code:
    #pragma code TOTO = 0x8000
    Essaye si ca se trouve ca marche toujours

  10. #9
    RISC

    Re : Bootloader en C sur pic32

    Salut Aexel,

    Regarde le chapitre 5.8 sur le linker du user manual :
    http://www.microchip.com/Microchip.W...redirects=c32#

    Il existe aussi une liste d'exemples pour les PIC32 ou tu pourras peut-être trouver des exemples : http://www.microchip.com/stellent/id...GE&nodeId=2609

    a+
    Dernière modification par RISC ; 19/06/2008 à 22h44. Motif: correction

  11. #10
    invite23ada26d

    Re : Bootloader en C sur pic32

    Merci tous le monde je vais essayer ça dans la matinée. En tout cas vous étes plus actif que sur le forum de Microchip!!!! chapeau!!! ou alors je suis vraiment une merde en anglais!!! c'est possible aussi.
    Je vous tiens au courant pour la suite des événements.

  12. #11
    invite23ada26d

    Re : Bootloader en C sur pic32

    Bon alors j'avais déja essayer pas mal de vos solutions et je pense que c'est la méthode de thm et de RISC qu'il faut utiliser. J'ai ajouté le fichier de linkage à mon projet et ça m'a généré un beau paquet d'erreur que je ne comprend pas forcément. J'ai éssayer de me renseigner sur le linkage du pic32 et là encore il y a eu du changement. Si quelqu'un sait quelque chose à ce sujet ou tout simplement si vous posséder un projet sur pic32 qui utilise un fichier de linkage faite le moi savoir.

    les erreurs générées avec le fichier de linkage pour le pic32mx340f256h:

    Code:
    Executing: "C:\Program Files\Microchip\MPLAB C32\bin\pic32-gcc.exe" -mdebugger -mprocessor=32MX340F256H "main.o" "iop397b.o" "boucle_VHS.o" "traitement_signal.o" "triode.o" "gestion_defauts.o" "com_sup_rs485.o" "adc_dac.o" "RTOSINIT_PIC32MX3x.o" "OS_Error.o" "com_rs232.o" "eeprom.o" "G:\ALefort\PIC_32\processor.o" "G:\ALefort\PIC_32\lib\RtosDP.a" -o"Cellule_num_3G.elf" -Wl,-L"G:\ALefort\PIC_32\lib",--script="C:\Program Files\Microchip\MPLAB C32\pic32mx\lib\proc\32MX340F256H\procdefs.ld",--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__MPLAB_DEBUGGER_REAL_ICE=1,--defsym=__ICD2RAM=1,-Map="Cellule_num_3G.map"
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:42: undefined reference to `_stack'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:42: undefined reference to `_stack'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:49: undefined reference to `_gp'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:49: undefined reference to `_gp'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:78: undefined reference to `_bss_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:78: undefined reference to `_bss_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:79: undefined reference to `_bss_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:79: undefined reference to `_bss_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:97: undefined reference to `_data_image_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:97: undefined reference to `_data_image_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:98: undefined reference to `_data_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:98: undefined reference to `_data_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:99: undefined reference to `_data_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:99: undefined reference to `_data_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:117: undefined reference to `_ramfunc_length'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:117: undefined reference to `_ramfunc_length'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:125: undefined reference to `_ramfunc_image_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:125: undefined reference to `_ramfunc_image_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:126: undefined reference to `_ramfunc_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:126: undefined reference to `_ramfunc_begin'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:127: undefined reference to `_ramfunc_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:127: undefined reference to `_ramfunc_end'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:142: undefined reference to `_bmxdkpba_address'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:142: undefined reference to `_bmxdkpba_address'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:145: undefined reference to `_bmxdudba_address'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:145: undefined reference to `_bmxdudba_address'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:148: undefined reference to `_bmxdupba_address'
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o:/home/c11067/src/MPLABC32/pic32-microchip-release-1.02-20080408-1739/pic32-libs/c/startup/crt0.S:148: undefined reference to `_bmxdupba_address'
    main.o: In function `main':
    Src/main.c:118: undefined reference to `Init_Bootloader'
    Src/main.c:118: relocation truncated to fit: R_MIPS_26 against `Init_Bootloader'
    iop397b.o: In function `lecture_SW1_SW2':
    Src/iop397b.c:420: relocation truncated to fit: R_MIPS_GPREL16 against `Swicth_1_2'
    iop397b.o: In function `Configure_pwm_par_resolution':
    Src/iop397b.c:512: relocation truncated to fit: R_MIPS_GPREL16 against `Periode_PWM_Timer_2'
    Src/iop397b.c:518: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC1'
    Src/iop397b.c:522: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC2'
    Src/iop397b.c:526: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC3'
    Src/iop397b.c:530: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC4'
    Src/iop397b.c:534: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC5'
    Src/iop397b.c:553: relocation truncated to fit: R_MIPS_GPREL16 against `Periode_PWM_Timer_2'
    Src/iop397b.c:559: relocation truncated to fit: R_MIPS_GPREL16 against `PWM_Timer_Source_OC1'
    Src/iop397b.c:563: additional relocation overflows omitted from the output
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:194: undefined reference to `_stack'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:194: undefined reference to `_stack'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:260: undefined reference to `_stack'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:260: undefined reference to `_stack'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:261: undefined reference to `_min_stack_size'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:261: undefined reference to `_min_stack_size'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:271: undefined reference to `_min_stack_size'
    G:\ALefort\PIC_32\lib\RtosDP.a(rtos.o):.\CPU/RTOS.S:271: undefined reference to `_min_stack_size'

  13. #12
    RISC

    Re : Bootloader en C sur pic32

    Salut,

    Quelle carte tu utilises pour le PIC32 ?
    Le starter kit à 50$
    L'Explorer16 + le PIM (module processeur mezzanine) PIC32 ?

    Le starter kit possède un bootloader intégré qui permet de le reprogrammer directement avec MPLAB.
    As-tu regardé sur le CD-ROM livré avec si le source du bootloader est fourni ?

    a+
    Dernière modification par RISC ; 21/06/2008 à 17h58. Motif: correction

  14. #13
    invite23ada26d

    Re : Bootloader en C sur pic32

    Je n'ai pas le starter kit (ni l'explorer16 d'ailleur). Est-ce qu'il serait possible de trouver ce fameux bootloader sur internet ou que quelqu'un me l'envoie? Sinon je peux le faire commander, ça sera un peu plus long!

  15. #14
    invite23ada26d

    Re : Bootloader en C sur pic32

    je viens de recevoir le starter kit et je ne vois rien qui ait un rapport avec le bootloader. Si tu pouvais m'en dire un peu plus...

  16. #15
    RISC

    Re : Bootloader en C sur pic32

    Salut,

    Je suis tombé aujourd'hui sur une nouvelle note d'application qui implémente un bootloader série RS232 pour le PIC32 et je me suis souvenu que tu en cherchais un.

    Tu peux le trouver ici : http://www.microchip.com/stellent/id...pnote=en536741

    a+

  17. #16
    invite220ff249

    Re : Bootloader en C sur pic32

    Salut Aexel,

    A tu resolu le probleme avec linker? J'ai le meme output:

    Executing: "C:\Program Files\Microchip\MPLAB C32\bin\pic32-gcc.exe" -mprocessor=32MX340F256H -x c -c "main.c" -o"main.o" -MMD -MF"main.d" -I"C:\Program Files\Microchip\MPLAB C32\pic32-libs\include\proc" -I"C:\Program Files\Microchip\MPLAB C32\pic32-libs\include" -g
    Make: The target "C:\Documents and Settings\hx36404\My Documents\MPLAB_PROJECTS\p32\p 32.elf" is out of date.
    Executing: "C:\Program Files\Microchip\MPLAB C32\bin\pic32-gcc.exe" -mprocessor=32MX340F256H "main.o" -o"p32.elf" -Wl,-L"C:\Program Files\Microchip\MPLAB C32 Suite\lib",-L"C:\Program Files\Microchip\MPLAB C32 Suite\pic32mx\lib",--script="..\..\..\..\..\Program Files\Microchip\MPLAB C32\pic32mx\lib\proc\32MX340F2 56H\procdefs.ld",--defsym=__MPLAB_BUILD=1,-Map="p32.map"
    C:/Program Files/Microchip/MPLAB C32/bin/../lib/gcc/pic32mx/3.4.4/../../../../pic32mx/lib/crt0.o: In function
    /home/c11067/src/MPLABC32/pic32-microchip-release-1.03-freeze-20080707/pic32-libs/c/startup/crt0.S.startup+0x28): undefined reference to `_gp'
    ...
    /home/c11067/src/MPLABC32/pic32-microchip-release-1.03-freeze-20080707/pic32-libs/c/startup/crt0.S.startup+0x2c): undefined reference to `_gp'
    /home/c11067/src/MPLABC32/pic32-microchip-release-1.03-freeze-20080707/pic32-libs/c/startup/crt0.S.startup+0x5c): undefined reference to `_bss_begin'

    /home/c11067/src/MPLABC32/pic32-microchip-release-1.03-freeze-20080707/pic32-libs/c/startup/crt0.S.startup+0x140): undefined reference to `_bmxdupba_address'
    Link step failed.


    ///////////////////

    Merci

  18. #17
    invitee0bbe70d

    Re : Bootloader en C sur pic32

    Bonsoir,

    Quel projet essaies-tu de compiler ?

    Peux-tu le poster ?

    Quelle version de MPLAB et du C32 utilises-tu ?

  19. #18
    invitede04fd7b

    Re : Bootloader en C sur pic32

    salut à tous!
    Je réouvre le sujet!
    Je fais un comparatif pour ma boîte de différents controleurs, et le pic32MX320F128H correspond aux critères définis.
    La programmation se fera à priori avec le bootloader donc directement avec cable rs232, mais j'ai une question:
    --Est ce que le bootloader du pic32 est déjà programmé ou faut-il le programmer une première fois ?
    Parceque sur certains µC, il est déjà programmé en usine.
    merci.

Discussions similaires

  1. Cherche Bootloader
    Par Tam dans le forum Électronique
    Réponses: 17
    Dernier message: 07/11/2010, 18h47
  2. PIC32 et EXPLORER 16
    Par invitea2c70312 dans le forum Électronique
    Réponses: 4
    Dernier message: 24/12/2008, 21h42
  3. BootLoader
    Par invitec1317d72 dans le forum Électronique
    Réponses: 2
    Dernier message: 25/04/2008, 10h02
  4. Le bootloader
    Par invite7cfe973c dans le forum Technologies
    Réponses: 0
    Dernier message: 31/12/2005, 12h09
  5. Bootloader
    Par invite367afa16 dans le forum Électronique
    Réponses: 0
    Dernier message: 11/02/2005, 15h36
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...