Arduino comme FAI sans ordinateur


12

Quelqu'un a-t-il vu ou connu une méthode de préchargement (à l'aide d'un ordinateur ou autre) d'un micrologiciel en tant que données sur un arduino configuré pour fonctionner comme un FAI, puis en utilisant cet arduino, branchez l'interface du FAI dans un autre et téléchargez le micrologiciel.

Pour être clair - je cherche un moyen de rendre possible le téléchargement de croquis Arduino sans connexion directe à un ordinateur complet.

Idéalement, les étapes impliquées seraient les suivantes:

  1. Rédiger un nouveau croquis / firmware
  2. Compiler le firmware
  3. Écrire un firmware de copie sur Arduino A en tant que données (Arduino A est configuré pour fonctionner comme FAI)
  4. Détachez Arduino A de l'ordinateur
  5. Dans un emplacement séparé, connectez Arduino A à Arduino B à l'aide d'en-têtes ISP
  6. À l'aide d'une méthode (peut-être un bouton-poussoir), déclenchez Arduino A pour télécharger le firmware préchargé sur Arduino B.

Je suppose que cela pourrait théoriquement fonctionner, car le téléchargement du micrologiciel n'est qu'un échange d'octets sur l'interface SPI, mais je ne suis pas sûr de la réalité.

Le scénario pour lequel j'envisage est que si j'installe un Arduino (en permanence) dans un endroit éloigné de mon ordinateur (je n'ai pas d'ordinateur portable et je ne veux pas en avoir un), il serait difficile de reprogrammer il.

L'autre méthode que j'ai envisagée consiste à utiliser l'ATMEGA emballé DIL que je peux ensuite retirer de la carte et programmer sur l'ordinateur et revenir à la carte - mais je préférerais de loin ne pas risquer de plier les broches et les tracas d'avoir à retirer la puce chaque fois que je veux reprogrammer.


Le résultat serait que vous ne pourriez programmer d'autres Arduinos qu'avec l'esquisse / firmware exact qui a été chargé dans le programmeur (Arduino A). Il ne serait donc utile de faire des copies que dans une chaîne de production, c'est ça? Si vous devez modifier quoi que ce soit sur l'esquisse, vous devrez revenir sur l'ordinateur pour le modifier et le charger à nouveau. Ai-je bien compris?
Ricardo

1
N'est-il pas possible de conserver "l'image flash" à copier sur la cible sur un autre support (comme une carte SD)?
jfpoilpret

Oui. Je suppose que ce serait également bon pour une chaîne de production. Ma situation est que j'ai un Arduino collé dans un boîtier difficile à déplacer et dans une pièce différente de mon ordinateur (également difficile à déplacer). Je serais donc heureux de charger le croquis sur Arduino A chaque fois que je voulais le changer.
m3z

2
Cela a été fait dans le but limité de programmer un chargeur de démarrage - github.com/WestfW/OptiLoader - mais devrait fonctionner pour toute charge utile plus petite que le flash disponible moins la taille de l'outil. Pour un micrologiciel de charge utile plus important, un périphérique de stockage externe (ou simplement un Arduino Mega?) Devrait fonctionner.
Chris Stratton

@ChrisStratton qui semble parfait pour moi de m'adapter. Merci
m3z

Réponses:


5

Je pense que µProg - un petit programmeur AVR portable rapide avec SD fait ce que vous voulez. Vous pouvez stocker plusieurs fichiers sur la carte SD (hex, eep, etc.) et sélectionner dans le menu de l'appareil celui que vous souhaitez écrire sur le MCU cible sans avoir besoin d'un PC.
La meilleure partie est qu'il est disponible gratuitement (PCB, schéma, firmware, etc.).

Unique en son genre, programmeur AVR portable! Aide partout où vous devez mettre à jour le micrologiciel de l'appareil, où l'appareil cible est dans un endroit difficile à atteindre et où vous ne pouvez pas (ou ne voulez pas) amener votre ordinateur portable avec un tas de fils avec vous. Facilement facile à utiliser, super bon marché à fabriquer, super petit, super rapide, utilise des cartes SD…

Fonctionnalités:

  • super petit - dimensions 44 x 39 x 5,5 mm
  • super rapide - écriture jusqu'à 12,5kB / s, lecture jusqu'à 14,5kB / s
  • utilise un support de stockage bon marché - petites cartes MICRO SD
  • prend en charge les systèmes de fichiers FAT16 et FAT32
  • peut lire, écrire, vérifier la mémoire flash et eeprom
  • peut lire, écrire, vérifier les fusibles et les verrous
  • écrire et lire dans des fichiers BIN, HEX et TXT
  • peut définir les valeurs par défaut des fusibles, effacer les mémoires
  • écran graphique LPH7779 bon marché et facile à obtenir
  • affiche des animations amusantes après chaque opération
  • en-tête de programmation standard - Atmel 6-PIN ISP
  • a une fonction de mise à jour automatique de son propre firmware (à partir de SD)
  • très simple à utiliser, navigation 4 boutons
  • menu de réglage de l'utilisateur
  • programmation de la sélection automatique de la vitesse (jusqu'à 4 MHz)
  • Fonctionne à 3V, programme des puces fournies de 3V à 5V

Liste des puces prises en charge

entrez la description de l'image ici


Cela semble bon. Enquêtera le week-end.
m3z

Je ne sais pas comment j'ai raté cette question l'autre jour. Je n'ai parlé à un ami que de la création de ce projet exact nous-mêmes. Et puis je vois votre réponse.
Madivad

4

Je n'ai pas de solution directe pour ce que vous voulez, mais oui il est possible de le faire. Vous pouvez pirater un micrologiciel de chargeur de démarrage afin qu'il lit le code flash du micrologiciel et le télécharger via ISP.

Bien que vous ne puissiez évidemment pas télécharger 32k de firmware sur l'AVR cible si les deux arduinos n'ont que 32k de flash total dans leurs MCU, vous aurez besoin que le flasher ait plus de flash que la cible si vous voulez le faire (un 1284p ou 2560 Mega sera assez loin, ou un 328 / 32u4 sera bon pour flasher un 168 ou un attiny). La seule exception serait d'avoir le firmware à flasher beaucoup plus petit que la mémoire totale (comme pour un croquis clignotant).

Au final, ce ne sera pas facile, c'est du code AVR 100% pur, mais vous pouvez le faire. Jettes un coup d'oeil à:

La façon dont j'implémenterais cela serait soit de faire en sorte que tout rentre dans le chargeur de démarrage du périphérique clignotant, de sorte qu'il lit le firmware (tout de 0x00 à l'adresse de démarrage du chargeur de démarrage) et le fait clignoter via ISP en fusionnant AVRISP avec Optiboot.

Quoi qu'il en soit, c'est un projet intéressant pour un atelier sur les chargeurs de démarrage et les AVR que je peux suggérer dans mon hackerspace local! ;-)

HTH


Merci, le code source AVRISP ne semble pas aussi complexe que ce à quoi je m'attendais.
J'examinerai

Où est votre hackerspace local? :)
Madivad

c'est en France Le Loop
zmo

aucun problème, c'est à ça que sert le vote ;-)
zmo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.