Problème bootlader
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Problème bootlader



  1. #1
    invite49856ed4

    Unhappy Problème bootlader


    ------

    Bonjour a tous.
    J'ai un poblème avec le bootloader pour un PIC16F876.
    Je vous détail ce que je fais au cas ou :
    - J'édite bootldr.asm en changeant :
    la fréquence (4000000)
    le débit (19200)
    la methode (PIN)
    la broche correspondant (pour celle ci j'ai mis la broche de reception soit RC7).

    - Ensuite j'ouvre MPLAB IDE je crée un projet "Bootldr" et j'ajoute le fichier asm.
    - Je modifie les bits de config :
    oscillateur : XT
    watchdog : OFF
    power up timer : OFF
    brown out detect : ON
    low voltage progr : OFF
    Flash Progr Write : ON
    Data EE read protect : OFF
    Code protect : OFF
    - Là je build le tout et je programme mon PIC

    Donc j'ai fait un lecture de la mémoire, et le bootloader se situe a la fin de la mémoire programme du PIC.

    - Je plug mon PIC sur ma carte. RC7 est la broche qui reçoit les données du PC et RC6 est la broche qui envoie des données au PC. (avec interfacage MAX232). J'ai vérifié si cette interface fonctionnée et ca roule.

    - Donc je connecte mon cable série a la carte et au PC.
    - Je lance le programme PICdownloader.
    - Je sélectionne mon programme à télécharger, et je coche EEPROM
    - Je clique sur write et je reset le PIC

    Et là rien ne se passe. Le programme marque "searching for bootloader".
    J'ai vérifié le signal recu par la broche RC7 et ca a cette forme :

    donc en théorie le pic devrait déclancher le bootloader, mais en pratique non. Alors selon ce que je viens d'écrire :
    Voyez vous des erreurs dans mes manipulations ?
    Est ce que le PIC, après un reset vérifie bien si on veux télécharger un programme ?

    J'aimerai pouvoir me servir rapidement de ma superbe carte d'application De plus il ne me reste que 3 semaines pour régler cette affaire car après je n'aurais plus le PICSTART PLUS.

    Merci d'avance ^^

    -----

  2. #2
    JP

    Re : Problème bootlader

    Hello,

    Ton pic n'est pas un 16F876A ?
    Si tu as choisis PIN tu dois mettre une résistance de tirage à + VCC sur la pin que tu as définis
    Code:
    #define TRIGGER 	PORTC,5
    pour la phase de programmation et la déconnecter pour l'exécution du programme.
    Mais je te conseille plutôt de mettre en mode time.

    Et si tu as toujours un problème essaye de couper l'alimentation et la remettre au lieu de faire une reset.

    Tiens nous au courant
    JP

  3. #3
    invite49856ed4

    Re : Problème bootlader

    J'ai déja essayé avec la methode TIME, mais même en mettant 1 seconde de timeout le bootloader ne s'est pas enclanché

    Sinon je confirme j'utilise un PIC16F876.

    Sans le A

  4. #4
    JP

    Re : Problème bootlader

    Et tu as déjà essayé avec un .hex déjà tout fait ?

    Sinon les étapes c'est:
    1) Démarrage downloader (Searching for bootloader)
    2) Mettre ton pic sous tension - Normalement le programme se transfère

    Sans le A
    Je demande ça parce qu'il y a 2 bootloaders différents pour les A et les non A et non compatibles entre eux.

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

    Re : Problème bootlader

    Pour l'histoire du A j'avais bien vérifier avant

    Sinon j'ai jamais réussi a utiliser les .hex fourni par microchip mais en fait je viens de m'apercevoir qu'il y avait un readme qui expliquait comment faire pour uutiliser un .hex directement en utilisant MPLAB. Donc demain j'essayerai en suivant bien ce qu'ils disent.

    Wait & see ^^ je vous tiens au courant.

  7. #6
    invite49856ed4

    Unhappy Re : Problème bootlader

    Là je commence a désespérer
    J'ai suivi les étapes et rien ne fonctionne, même en coupant et en remettant l'alim.

    Je voudrais que quelqu'un me confirme les bit de config car en programmant le boot, j'ai changer le bit "low voltage progr" en le méttant sur OFF. Est ce que ca change beaucoup ?
    Aussi, si on peut me confirmer le cablage du port série avec le pic par le max232 (numéro des broches pour tel fil)

    Sinon si quelqu'un peut me passer les cours de Bigo sur le bootloader à cette adresse : *********
    je l'en remercie d'avance.


    MESSAGE DE LA MODERATION :

    regle n°6 de la charte
    6. Pas de conversation privée sur le forum, et pas d'échanges de coordonnées privées. Le mail ou les PM sont faits pour ça.
    Ryback - moderateur Futura Technique

  8. #7
    invitebf62768c

    Re : Problème bootlader

    salut,
    je te conseilles en effet de prendre le bootloader de bigonoff, c'est de loin le meilleur, enfin c'est mon avis.

    ses cours sont disponibles en téléchargement sur son site: www.abcelectronique.com/bigonoff
    malheureusement il est fermé, attends la réouverture

    @++

  9. #8
    invite49856ed4

    Re : Problème bootlader

    Bon merci a tous pour votre aide mais en fait je suis un boulet
    j'ai routé ma carte sous ares et le model de la DB9 etait en fait celle de la prise male. Ce qui fait que toute les borche etait inversées sauf celle de réception -_-. Donc je viens de bidouiller pour inversé la prise en croisant les fils de liaison. C'est propre net et sans court cicruit
    Et youpi le bootloader fonctionne nikel ^^
    Seul problème c'est qu'il doit y avoir un problème dons mon programme, car il se lance pas.
    Donc est ce qu'il faut changer le ORG 0000h du début par ORG 0003h ???

  10. #9
    JP

    Re : Problème bootlader

    Ah ben voilà !

    Le problème du org 3 et encore un peu flou pour moi j'ai des programmes qui se démarrent avec org 3 mais pas correctement ... En plus je suis passé à C2C et là plus rien ne fonctionne donc essaye avec org 3 et tiens nous au courant ça m'intéresse aussi.

    Bonne chance

  11. #10
    invite49856ed4

    Talking Re : Problème bootlader

    Youpi !!! tout fonctionne nikel ^^
    J'avoue avoir fait un peut de bidouillage mais ca fonctionne. Je vous explique :

    J'ai étudié le fonctionnement du BL en regardant la mémoire programme et j'ai repéré un boucle "UserStart" qui se lancée une fois le téléchargement fini. La boucle était sensé être effacé par le programme téléchargé. Donc j'ai ajouté ceci sur mon programme a télécharger
    ORG 0x1F2E (adresse du début de la boucle)
    NOP
    NOP
    GOTO DEBUT:

    Les 2 NOP écrasent les 2 lignes suivantes: BSF PCLATH,3 et BSF PCLATH,4 qui changaient de bloc mémoire, donc qui empéché un retour à notre programme.

    Le goto debut saute jusqu'au debut de mon programme (c'est à la ligne 0005 avec l'étiquette DEBUT: que mes programme en général commence).

    En théorie, lors du téléchargement du programme il devrait y avoir un écrasement comme prévu mais en fait ca n'a pas marché. (Vous pouvez faire d'autre test, j'ai peut etre fait une erreur)

    Donc j'ai décidé de changer moi même ces lignes. Donc je les ai mise en commentaires et modifier le GOTO en GOTO DEBUT.

    Un problème est survenu, l'étiquette DEBUT n'existe pas dans le BL donc il a fallu la créer, avec ceci :
    ORG 0005
    DEBUT: NOP
    Ca ajoute donc au PIC à la ligne 0005 une étiquette DEBUT et je peut compiler.

    Donc comme je vous l'ai dis ca fonctionne nikel, téléchargement, retéléchargement, reset et le tout le tralala.

    Seule petite contrainte, mes programmes doivent commencer par une étiquette DEBUT: à la ligne 0005. Mais ca me gène pas c'est toujours comme cà

    Par contre, j'ai modifié le BL mais je ne sais pas si ca ne peut pas engendrer des gros problèmes en cas d'une erreur de transmission :-/

    Donc ne prenez pas cette solution comme la solution absolue, je suis sur qu'il y a une solution sans modifier le BL d'origine.

    Ah oui j'oublié, le downloader ne programme pas l'EEPROM, ce qui m'ennui pour mon écran LCD Mais je vais faire un programme qui programme l'EEPROM
    Du genre :
    CLRF ADR_EE
    MOVLW h'XX'
    W_EEPROM
    MOVLW h'XX'
    INCF ADR_EE,1
    W_EEPROM
    ...
    En espérant que ca fonctionne ^^

    Encore merci a tous, si quelqu'un peut tenter de trouver une autre solution, ca serai sympa

  12. #11
    JP

    Re : Problème bootlader

    Et tu as vu ça ? :
    http://jmandon.free.fr/bootutil/bootutil.htm

    Pour moi c'est du charabia donc si tu avais un petit programme d'exemple à me montrer pour savoir quoi rajouter et où ca serait sympa.

    a+

  13. #12
    invite49856ed4

    Talking Re : Problème bootlader

    sa métode est bizzare et pas super explicite
    Je détail la mienne ^^ :
    Dans le bootloader fournis par microchip, il vous donne la source asm du bootloarder.
    *Ouvrez-le et modifiez juste pour qu'il corresponde a votre PIC :
    le model
    le quartz
    * Descendez et recherchez ceci :
    ;------------------------------------------------------------------------------
    ORG 0x0000
    nop
    pagesel Main
    goto Main

    ;------------------------------------------------------------------------------
    ORG LoaderStart
    TrapError
    pagesel TrapError
    goto TrapError

    UserStart

    clrf PCLATH


    pagesel UserStart
    goto UserStart

    ;------------------------------------------------------------------------------
    * Commencer par mettre en commentaires : pagesel TrapError et pagesel UserStart.
    * Modifiez les GOTO en leur mettant DEBUT comme adresse de saut.
    * Juste après le GOTO MAIN rajouté ceci :
    ORG 0x0005
    DEBUT: NOP
    * Voila, lors d'une erreur ou d'une fin de téléchargement le PIC se dirigera vers l'étiquette DEBUT.

    Je répète c'est peut etre pas fiable à 100% mais ca fonctionne

  14. #13
    invite49856ed4

    Re : Problème bootlader

    Pour ceux que ca intéresserait (on sais jamais) je met à disposition la source du bootloader modifié.

    Il est configuré pour un PIC16F876 4Mhz, mais en changeant les variable du début vous pouvez vous la configurer pour votre PIC.

    Donc je rappelle que le début de vos programmes devra être a l'adresse 0x0005 avec une étiquette "DEBUT".
    Bootloader.asm

    Ensuite pour l'histoire de l'EEPROM j'au remarqué que le bootloader programmer l'EEPROM si il recevait une adresse supèrieur ou egale à 0x2000. La mémoire programme s'arrête à 0x1FFF. Donc la question est comment faire en sorte d'ajouter au .hex les lignes pour que le bootloader programme l'EEPROM ??

    Bonne nuit à tous ^^

  15. #14
    inviteb6d767d2

    Re : Problème bootlader

    Salut
    -----

    Donc ne prenez pas cette solution comme la solution absolue, je suis sur qu'il y a une solution sans modifier le BL d'origine.
    Pour info, mon programme de bootloader, disponible gratuitement sur mon site, fait ça automatiquement.
    C'est pris en charge par la partie PC, qui détecte et modifier si c'est possible l'emplacement de démarrage pour lancer le bootloader.

    C'est expliqué en détails dans le cours-part3.

    Je réouvre très prochainement.

    A+
    Bigonoff

  16. #15
    invite4cdcf18b

    Cool Re : Problème bootlader

    Bonjour,

    J'ai également rencontré quelques difficultés avec le bootloader de Petr Kolomaznik francisé par JP Mandon, MAIS en fait il fonctionne merveilleusement bien ... à condition de ne rien changer à vos bonnes habitudes de programmation PIC, je m'explique

    - 1 - Le bootlaoder (BLD dans la suite de ce massage) est conçu pour reloger la portion de code utisateur 0x0000 à 0x0003 dans une zone spécifique : UserStart+1

    - 2 - A l'issue du chargement, ou aprés 0.2 sec (TIMEOUT) le BLD branche sur UserStart qui redirige en page 0 (crlf PCLATH) puis exécute le code utilisateur sensé se trouver aux adresses 0x0000 à 0x0003.

    - 3 - Cette portion de code DOIT contenir un call à une adresse de début de programme, soit située en page 0, soit précédée d'une redirection de page. (pagesel ou bsf/bcf PCLATH).

    - Donc si votre code est structuré comme suit, il n'y a rien à changer au code source et à plus forte raison au bootloader :

    ORG 0x0000
    goto init
    ORG 0x0004
    code de gestion des interruptions
    ...
    ...
    init
    début de prog principal
    ...
    ...

    ------------ ou ----------------------
    ORG 0x0000
    pagesel init
    goto init
    nop
    ORG 0x0004
    code de gestion des interruptions
    ...
    ...
    init
    début de prog principal
    ...
    ...



    A noter :

    - Il est plus propre de compléter les 4 premières adresses avec des nop afin de bien charger les 4 adresses qui sont relogées :

    ORG 0x0000
    goto init
    nop
    nop
    nop
    ORG 0x0004

    ...

    - Le BLD s'auto protège, il donc donc inutile d'essayer de le modifier via le code utilisateur, et pas de risque d'écrasement accidentel.

    - La programmation de l'EEPROM fonctionne très bien :
    ORG 0x2100 + case à cocher dans l"application VB.

    - Le BLD est compatible avec CC5X à condition d'utiliser les fichiers include livrés avec le compilateur par JP Mandon.

    - Les interruptions fonctionnent parfaitement et les zones RAM utilisées par le BLD sont réutilisables de manière transparente pour l'utilisateur.

    - La liaison série RS232 est utilisable au terme du TIMEOUT de 0.2 sec.

    - Pour utiliser le BLD il suffit donc d'adapter les paramètres (DEFINE) FOSC et BAUD : 19200 avec un PIC16F876 à 4Mhz fonctionne très bien.

    - La seule limitation semble être le paramètrage du WatchDog qui est paramétré à la programmation du PIC avec le BLD, mais il n'y a pas d'autre façon de procéder.

    Merci à JP Mandon et M. Bigonoff pour la mine d'informations qu'il mettent à disposition.


Discussions similaires

  1. Réponses: 11
    Dernier message: 26/05/2011, 13h27
  2. Un petit problème qui me pause problème lol
    Par invitef2853e5d dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 31/03/2009, 16h28
  3. problème avec un lecteur mp4(le problème vient de l'ordinateur)
    Par inviteaca1b987 dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 29/10/2007, 17h53
  4. TPE : le problème de la problématique... pose problème
    Par invitedea46a4f dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 21/09/2006, 19h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...