Arduino Bootloader

9

Je suis très nouveau dans le monde intégré. J'avais jusqu'à présent travaillé uniquement sur S / W

Quelqu'un peut-il m'expliquer l'utilisation du chargeur de démarrage Arduino? Je veux qu'Arduino exécute quelques mathématiques simples en utilisant des composants supplémentaires qui doivent être insérés dans la puce.

Ai-je nécessairement besoin d'un chargeur de démarrage?

Johnny
la source

Réponses:

10

L'Arduino est simplement un microcontrôleur AVR Atmel, avec juste assez d'électronique de support pour lui permettre de fonctionner. L'AVR a un flash intégré pour lui permettre de garder les programmes hors tension, mais pour programmer directement une puce AVR, vous avez besoin d'un outil comme le STK-500 pour faire le travail. L'Arduino surmonte cela en ayant également une petite interface USB sur la carte et le code du chargeur de démarrage Arduino déjà sur la puce. Cela permet à l'application côté PC de transférer vos programmes vers l'appareil et, essentiellement, de la faire clignoter elle-même.

Donc, en fin de compte, si vous obtenez un Arduino, le chargeur de démarrage est déjà là et fait son travail automatiquement. Vous codez votre programme sur le PC, appuyez sur le bouton «télécharger» de l'IDE, et en quelques instants, votre programme s'exécute sur l'Arduino. Le chargeur de démarrage fait son travail de manière totalement transparente.

fwiw, j'ai personnellement un Arduino 2009 et un STK-500 et je peux faire de la programmation sur le métal sur des AVR, mais je n'ai trouvé aucun besoin de contourner le chargeur de démarrage de l'Arduino.

JustJeff
la source
J'aimerais voir plus d'informations sur l'utilisation d'un Arduino pour programmer un AVR.
Greg
@Greg il y a en fait une esquisse prise en charge par arduino pour le duemilanove pour flasher le chargeur de démarrage sur un atmega328 nu. De toute évidence, cette fonctionnalité pourrait être étendue pour flasher n'importe quel programme sur un atmega328 nu. Vous n'avez pas besoin d'un connecteur ISP. Essentiellement, vous transformez votre arduino micro en FAI.
NickHalden
5

L'Arduino a besoin d'un chargeur de démarrage pour programmer vos croquis via série / USB. Sans cela, vous avez besoin d'un AVR In-System-Programmer (ISP) pour programmer directement la mémoire flash dans la puce AVR.

Si vous achetez un Arduino, il viendra avec le chargeur de démarrage déjà gravé dans la puce AVR. Vous n'avez à vous en préoccuper que si vous construisez votre propre planche.

Cela devrait aider: je ne comprends pas le concept Arduino

Toby Jaffey
la source
4

Je vais donner une réponse un peu plus théorique; les autres réponses sont assez bonnes d'un point de vue pratique. Un chargeur de démarrage est un code qui réside dans un segment spécial de la mémoire flash. Le code qui réside dans ce segment est autorisé à exécuter des instructions d'auto-programmation, ce qui permet de modifier la mémoire flash (c'est-à-dire où réside le code utilisateur) sans programmeur conventionnel (c'est-à-dire ISP de programmation dans le système ou HVP de programmation à haute tension) comme le STK500 ou AVRISP mkII.

En principe, le sous-programme UART Recieve Data Interrupt Service (ISR) effectue un appel de fonction dans le code du chargeur de démarrage qui copie l'image de programme envoyée en série dans l'espace de programme utilisateur dans la mémoire flash. Au démarrage, quel que soit le programme sur la puce commence à fonctionner, mais si des données série correctement formées sont reçues dès le début, l'AVR passe dans une sorte de mode d'auto-programmation. Il existe une certaine logique dans l'UART ISR qui ne diffère que le code du chargeur de démarrage pendant une courte période de temps au démarrage. Les détails sont un peu plus compliqués que cela, mais c'est l'idée de base.

La beauté de ceci est que vous pouvez acheter un Arduino, et rien d'autre, télécharger gratuitement l'environnement de développement intégré (IDE), et commencer à écrire des croquis Arduino (programmes), et les télécharger sur l'AVR comme ça, via USB pas moins merci à la petite puce CI FTDI sophistiquée intégrée à la carte Arduino.

vicatcu
la source