Le javascript est désactivé sur votre navigateur
 
Prononcer /'po.bot/
Accueil du siteProgrammation et logicielsLes micro-contrôleurs
  publication inférieure à 7 jours
  publié < 7j sous cette rubrique
     
À propos de l'article
    Publié le 29 mai 2006
    par Julien H. , Gilles , Thierry , Fabrice

    Mis à jour le 1er juin 2011
Mots-clés de cet article
    Communications :
    JTAG ,
    Electronique :
    bootloader , ISP
Articles de cette rubrique
Choisir votre langue :

Bootloader série

une interface de téléchargement de programme pour AVR

Le service rendu par un bootloader AVR est de télécharger votre programme compilé dans un micro-contrôleur Atmel par la liaison série.

Notre projet consistait à développer une interface graphique (sous Windows et Linux) permettant de faciliter la programmation de nos puces. Depuis lors, des projets comme AVRdude ou même Arduino sont apparus qui facilitent le chargement, par ISP ou par téléchargement série, qui ont rendu obsolète ce type d’outil supplémentaire : tout se fait depuis l’environnement de développement et de compilation.

Nous conservons cet article à des fins documentaires, car il existe encore régulièrement des besoins spécifiques pour développer son propre bootloader.

 Pourquoi utiliser la liaison série

Son utilisation permet de n’avoir qu’une connexion entre le PC et le µC. Cette connexion série peut être filaire ou radio, donnant une autonomie plus grande à des projets mobiles, comme un robot, un radeau, etc...

L’ISP (In Situ Programming) nécessite en effet un câble dédié, de même que le JTAG, ce qui n’est pas pratique quand on relie déjà son montage à un port série permettant une télécommande ou le débogage.

 2006

Lancement du projet : définir un cahier des charges.

Démonstration du bootloader PIC par Thierry. Fabrice rejoint le projet.

Proposition 1 : utilisation de Java et de l’API java Comm de Sun (existe pour Win comme pour Linux, cf. projet RXTX)

Réalisation 1 : nouveau projet Eclipse sous CVS, module "Bootloader/GUI/BootloaderGUI".

Différents projets : diagramme des classes de la partie GUI + Terminal + interface série + implémentation Win + implémentation Linux

Fabrice propose d’utiliser SWT pour la GUI. Question : est-ce que ça fonctionnera avec une JRE simple ou bien ça nécessitera une installation particulière ?

L’accès aux ports séries depuis Windows est OK. Il faut utiliser la version 2 de l’API Sun javacomm car la dll windows a été retirée en v3.

Cahier des charges OK. interface GUI pratiquement terminée. problème de test d’accès aux ports sous Linux, car différences selon les distribs.

En attente du protocole de communication avec le bootloader µC. Démarrage des recherches de bootloader si pas d’évolution.

Fin du projet.

 
Répondre à cet article
Vous avez aimé cet article ? Merci de nous recommander !
Commentaires :
  1. Julien
    dimanche 9 juillet 2006 à 11:25
    Répondre Fil de discussion

    S27 : IHM ok. En attente du protocole série du bootloader de Gilles. Sinon chercher un bootloader, au moins pour faire des tests.

    Mettre les sources sur CVS (Freepository)

  2. Fabrice
    dimanche 23 juillet 2006 à 14:04
    Répondre Fil de discussion

    Les sources sont sous Freepository

    Le module s’appelle BootloaderSWT

    Gilles a envoyé le protocole mais j’ai pas encore regardé

    voili voulou

  3. Julien
    mercredi 14 juin 2006 à 13:03
    Répondre Fil de discussion

    Thierry m’a présenté hier soir une fonctionnalité très interessante : pouvoir taguer le nom et la version du programme dans le µC de telle sorte qu’au démarrage du µC, on puisse voir dans l’interface quel est le programme déjà chargé (par exemple "coupe2006.hex - nouv. traj." ou "cartecnp.hex - ajout tests i2c").

    Sinon, la question a été encore posée : "pourquoi utiliser une interface plutôt qu’un bête terminal ?". C’est une discussion intéressante qui mériterait un article d’introduction sur le site public. Qui se lance ? thèse, antithèse, synthèse ;-)

  4. Gilles
    mercredi 14 juin 2006 à 14:20
    Répondre Fil de discussion

    J’y avait déjà commencé à y répondre dans les messages sour "Index". Mais revoici mes arguments :

    Ca peut être intéressant de dévelloper un BootLoader sur PC : ca permet de connaitre les mécanisme de bootloader, la gestion de la liaison série, le flashage de la mémoire et les formats des fichiers hexa, binaires, ...

    D’autre part, avec un ’bete Terminal’, il faudrait qu’il puisse s’interrompre entre deux lignes de données, afin que le µC ait le temps de vérifier la trame de donnée et de la flasher. Terminal peut faire, mais je ne suis pas sur que l’utilisateur pense systématiquement à le paramétrer ...

    Et enfin, le logiciel de reconnaissance du format de fichier (Intel/Motorola/Binaire) devrait être intégré dans le µC, ce qui prends plus de place et donc réduit la place pour le programme utilisateur. N’oublions pas que le BootLoader doit tenir dans moins de 2Ko.

  5. Julien
    lundi 5 juin 2006 à 21:25
    Répondre Fil de discussion

    je vais essayer de lister les ports série de ma machine (windows). il faudra aussi le faire sous linux.

    le premier qui réussit prévient les autres !

  6. Julien
    lundi 5 juin 2006 à 21:28
    Répondre Fil de discussion
    http://christophej.developpez.com/tutoriel/java/javacomm/
  7. Fabrice
    lundi 12 juin 2006 à 14:02
    Répondre Fil de discussion

    J’arrive a lister les ports mais uniquement en root (problème de droits sur les ports)

    L’interface en SWT avance

    Par contre, j’ai pas eu beaucoup de courage pour freepository, j’ai commencé (avec des screenshots pour la doc), mais j’ai pas fini

    Faudra qu’on parle de l’IHM, savoir ce qu’on peut choisir, parametrer, ...

  8. Julien
    lundi 12 juin 2006 à 21:08
    Répondre Fil de discussion

    tu as pu récupérer le source existant ? projet BootloaderGUI

    super pour le SWT, j’ai hate d’essayer. tu utilises un plugin pour designer l’interface ?

    pour l’IHM, il faut mettre ce qui existe déjà dans l’interface actuelle (euh... c’est vrai qu’il y a les widgets mais pas leur signification..) :
    - sélection du port
    - sélection du .hex par filechooser
    - sélection dy .hex dans l’historique des derniers hex chargés
    - bouton Go
    - barre de chargement qui serve aussi à passer des messages (étapes ou erreurs)

    et surtout, plein de raccourcis clavier pour aller plus vite.

  9. Fabrice
    mercredi 14 juin 2006 à 08:55
    Répondre Fil de discussion

    J’ai tout récupérer sur freepository.

    C’est juste le plugin que j’ai pas installé donc tout est en locale sur ma machine.

    Et l’interface est faite a la mimine, je sais pas si il existe un plugin pour SWT... a voir

    l’interface est presque fini, ce week-end je pense qu’elle sera finalisée

    That’s all folks...

  10. Julien
    lundi 29 mai 2006 à 22:53
    Répondre Fil de discussion

    Concernant l’interface graphique, voici quelques idées

    Contraintes :
    - fonctionnant sous Windows et Linux
    - rapide d’utilisation, manipulation clavier

    Fonctionnalités :
    - sélection du port série (combo)
    - sélection du fichier (file chooser)
    - bouton d’envoi
    - barre de progression + message d’erreur
    - affichage du nom du programme (combo d’historique)

    Possibilités : interface Java Swing avec communication série javax.comm et DLL win32 ou RXTX linux

  11. Julien
    lundi 29 mai 2006 à 16:37
    Répondre Fil de discussion

    Un bootloader pour les ATmega :

    http://projects.gbdt.com.au/boot162/