Interface de programmation et de débogage de microcontrôleur
Important
Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).
Le MT3620 expose deux composants UART dédiés et deux signaux de contrôle (réinitialisation et récupération) à utiliser pendant le provisionnement et la récupération de l’appareil. En outre, une interface SWD est disponible pour le débogage de RTApps et un autre UART est réservé aux diagnostics Microsoft.
Les outils logiciels de PC Azure Sphere nécessitent l’utilisation d’une puce d’interface USB-UART qui expose ces interfaces à un PC d’une façon qui permet aux outils de les reconnaître et d’interagir avec elles. Les outils Azure Sphere incluent la prise en charge du chargement d’une application sur USB à l’aide de l’UART de service et de la récupération du système d’exploitation Azure Sphere à l’aide de l’UART de récupération. Les outils de PC nécessitent l’utilisation de la puce d’interface UART-USB FTDI (Future Technology Devices International) FT4232HQ pour exposer les interfaces. Pour l’instant, les outils ne prennent pas en charge les autres puces FTDI ni les puces d’interface provenant d’autres fabricants.
Pour les cartes de développement, cette puce d’interface se trouve généralement sur la même carte de circuits imprimés que la MT3620. Cette approche est documentée dans la conception du tableau de développement de référence MT3620 (RDB). Pour une carte ou un module personnalisé qui utilise le MT3620, il peut être approprié d’avoir la puce d’interface sur une carte OU un module DEC distinct, car ce matériel est nécessaire uniquement pendant la fabrication ou la maintenance, ce qui permet des économies par unité de coût. Cette approche est documentée dans la conception autonome de la programmation et du débogage de la carte d’interface.
Vue d’ensemble des ports
Le MT3620 expose trois UART et une interface SWD qui sont utilisées pour la programmation, les diagnostics Microsoft et l’approvisionnement de la puce. Les quatre interfaces ont les fonctions suivantes :
Déboguer UART : L’UART de débogage permet à Microsoft d’effectuer des diagnostics. Notez que cet UART n’est pas utilisable pour le débogage ou les diagnostics des applications.
Sous la direction de Microsoft, cette interface fournit un moyen de capturer des informations de diagnostic supplémentaires qui peuvent être utiles lors du débogage de certains problèmes. Il est donc recommandé d’inclure cette interface pour les appareils utilisés pour le développement logiciel ou matériel, mais il peut être considéré comme facultatif pour les appareils qui ont atteint l’étape de fabrication.
Interface SWD : l’interface SWD est utilisée lors du débogage d’applications compatibles en temps réel (RTApps) qui s’exécutent sur les cœurs M4F ; cette interface est partagée entre les deux cœurs M4F.
Si vous avez besoin de la possibilité de déboguer des applications RTApps (par exemple pendant le développement d’appareils), votre appareil doit prendre en charge cette interface. Une fois que votre appareil atteint la phase de fabrication, cette interface peut être considérée comme facultative et peut être omise.
UART de service : L’UART de service fournit l’interface de programmation et de débogage principale entre le MT3620 et l’ordinateur hôte.
Cette interface active toutes les opérations Azure Sphere CLI qui nécessitent un appareil attaché, à l’exception de la récupération (comme décrit dans le paragraphe suivant). Étant donné que l’UART du service est l’interface principale entre le MT3620 et l’ordinateur hôte, cette interface doit être disponible pour les appareils qui prennent en charge le développement de logiciels, ainsi que pendant la fabrication d’appareils de vente au détail. Si cette interface est disponible pour un appareil dans le champ, elle peut également être utilisée par les ingénieurs de service, par exemple pour charger de nouvelles versions du logiciel d’application, si l’appareil ne reçoit pas de mises à jour cloud, car il n’est pas connecté à Internet.
UART de récupération : le port de récupération fournit un moyen de récupérer un appareil vers la dernière version du système d’exploitation.
Cette interface doit être prise en charge pendant la fabrication, car la récupération d’un appareil vers la dernière version du système d’exploitation est une tâche courante lors de la fabrication de l’appareil. Toutefois, une fois qu’un appareil a été vendu à un client (et qu’il l’a connecté à Internet), les mises à jour cloud garantissent que l’appareil est tenu à jour avec la dernière version du système d’exploitation.
Présentation des composants
Le diagramme suivant fournit une vue d’ensemble des principaux composants de l’interface FTDI 4 ports et leurs interconnexions avec le MT3620 :
Vous pouvez choisir d’utiliser la puce FTDI et des circuits dans le cadre de la même carte que le MT3620 (par exemple, si vous créez une carte de développement) ou dans une carte d’interface distincte qui se situe entre votre appareil MT3620 et le PC.
Affectations de ports
Pour garantir la compatibilité avec les outils PC, il est important de s’assurer que chacun des UART exposés et de l’interface SWD qui seront utilisés dans votre conception sont connectés aux ports FTDI, comme décrit dans le tableau suivant.
Fonction | Fonction de broche FT4232HQ (numéro de broche) | Fonction de broche MT3620 (numéro de broche) | ||
---|---|---|---|---|
UART de récupération, broche de connexion de réinitialisation et récupération | Port-D | DDBUS0 (48) | RECOVERY_RXD (134) | |
DDBUS1 (52) | RECOVERY_TXD (135) | |||
DDBUS2 (53) | RECOVERY_CTS (137) | |||
DDBUS3 (54) | RECOVERY_RTS (136) | |||
DDBUS5 (57) | DEBUG_RTS (96)* | |||
DDBUS6 (58) | SYSRST_N (125) (et éventuellement WAKEUP (70) via un circuit détaillé ci-dessous) | |||
UART de service | Port-C | CDBUS0 (38) | SERVICE_RXD (129) | |
CDBUS1 (39) | SERVICE_TXD (127) | |||
CDBUS2 (40) | SERVICE_CTS (130) | |||
CDBUS3 (41) | SERVICE_RTS (128) | |||
SWD et réinitialisation |
Port-B | BDBUS0 (26) | SWCLK | Consultez Interface SWD pour plus d’informations sur les circuits SWD |
BDBUS1 (27) | SWDIO sortie | |||
BDBUS2 (28) | SWDIO entrée | |||
BDBUS4 (30) | Direction de SWDIO | |||
BDBUS5 (32) | Activation SWD | |||
BDBUS6 (33) | SYSRST_N (125) (et éventuellement WAKEUP (70) via un circuit détaillé ci-dessous) | |||
UART de débogage |
Port-A | ADBUS0 (16) | DEBUG_RXD (94) | |
ADBUS1 (17) | DEBUG_TXD (95) | |||
ADBUS2 (18) | DEBUG_CTS (97) | |||
ADBUS3 (19) | DEBUG_RTS (96)* |
*DEBUG_RTS est l’une des « broches de sanglage » de MT3620, qui, si elles sont extraites à haut lors d’une réinitialisation de puce, entraîne l’entrée de la puce en mode de récupération. Le reste du temps, cette broche est la broche RTS de l’UART de débogage.
Schémas
Les schémas suivants montrent les principaux composants requis pour prendre en charge la puce FT4232HQ. La conception de carte de référence MT3620 fournit une conception de référence intégrant ce schéma.
Schématique 1 :
Remarques : schématique 1 :
- Les résistances 1K de série avec la ligne de réinitialisation sont incluses pour éviter un court-circuit dans le cas où un utilisateur appuie sur le bouton de réinitialisation (s’il est inclus dans la conception) en même temps que la ligne de réinitialisation est contrôlée par programme pendant la récupération.
- Lors de la disposition du CCP, assurez-vous que la paire différentielle, USB_P et USB_N, sont routées parallèlement les unes aux autres pour donner une impedance différentielle caractéristique de 90Ω.
- Les résistances de 33Ω en série avec les lignes SWD (en option) sont destinées à réduire les transitoires et doivent être placées près de la puce FT4232HQ.
Schématique 2 :
Remarques : schématique 2 :
- SYSRST_N est tiré haut avec une résistance de 100 K (R8). Cela signifie que la réinitialisation de puce n’est pas déclarée par défaut.
Les deux éléments suivants sont facultatifs. S’ils sont présents, ils autorisent le bouton RÉINITIALISATION physique et l’interface FTDI au PC à réveiller automatiquement le MT3620 lorsque RESET aurait été désactivé. Il est recommandé pour toute conception qui utilise le mode Power Down où le bouton de réinitialisation ou l’interface PC doit continuer à fonctionner en mode Power Down.
- Une paire de diodes Schottky est connectée en série entre SYSRST_N et WAKEUP et la connexion cathode commune des diodes est connectée au bouton de réinitialisation et aux signaux de réinitialisation FTDI. Cela empêche SYSRST_N de basculer bas lorsque WAKEUP bascule bas.
- WAKEUP est tiré haut avec un résistance de 100K connecté à l’alimentation 3V3_RTC. La résistance de 100K garantit que WAKEUP est bas quand SYSRST_N est bas ; la connexion à 3V3_RTC garantit que WAKEUP continue d’être extrait haut si l’alimentation MT3620 est désactivée pour le mode Power Down.
Mémoire EEPROM FTDI
La puce d’interface FTDI fournit un ensemble de broches qui doivent être connectées à une petite mémoire EEPROM utilisée pour stocker les détails du fabricant et un numéro de série. Après l’assembly de carte, ces informations sont programmées dans l’EEPROM sur USB à l’aide d’un outil logiciel fourni par FTDI, comme décrit plus loin dans FTDI FT_PROG Programming Tool.
Les composants suivants de la mémoire EEPROM sont compatibles avec la puce FTDI :
- 93LC46BT-I/OT
- 93LC56BT-I/OT
- 93LC66BT-I/OT
Notez l’utilisation de la variante LC, qui est compatible avec une alimentation 3,3V. À des fins de développement interne, Microsoft a toujours utilisé le composant 93LC56BT-I/OT.
Connectez la mémoire EEPROM à la puce FTDI comme suit :
Circuit de la mémoire EEPROM | Connexion à la puce FTDI |
---|---|
Interfaces UART
Les connexions UART Recovery, Service et Debug entre mt3620 et FTDI ne nécessitent aucun circuit spécial. Toutefois, notez le croisement de TXD et RXD, et CTS et RTS. La documentation FTDI décrit la broche 0 de chaque port comme TXD et la broche 1 comme RXD. Ces définitions sont relatives à la puce FTDI ; autrement dit, la broche 0 est une sortie et la broche 1 est une entrée. Par conséquent, il est nécessaire de croiser les connexions RXD et TXD pour le MT3620 (et aussi pour CTS et RTS). Le diagramme suivant illustre ceci pour l’UART de service ; utilisez également le même schéma pour les UART de récupération et de débogage :
Interface SWD
Bien que les puces FTDI soient généralement utilisées pour fournir un pont entre des UART et USB, l’interface de programmation et de débogage d’Azure Sphere utilise un circuit supplémentaire basé sur une mémoire tampon quadruple à trois états pour permettre au composant FTDI de fonctionner comme une interface SWD à haut débit.
L’exemple suivant illustre le circuit requis et la connexion à la puce FTDI. Notez que le signal SWDIO se connecte à la broche MT3620 98 et SWCLK se connecte à la broche 99.
Disposition de la mémoire tampon à trois états | Connexions Port-B FTDI |
---|---|
Voyant LED d’activité USB (en option)
Une LED d’activité USB peut être utile pour indiquer le transfert de données via la connexion USB pendant le fonctionnement normal. Vous pouvez implémenter un voyant LED d’activité USB de plusieurs manières. Le circuit suivant est simplement un exemple.
Le circuit relie les lignes d’horloge et de données qui connectent la puce FT4232HQ à la mémoire EEPROM. Même si ce n’est pas évident, ces deux lignes alternent quand les données sont envoyées et reçues via USB et peuvent par conséquent être utilisées pour indiquer l’activité USB. Toutefois, le délai de la sortie de la porte AND est trop court pour allumer un voyant LED ; par conséquent, ce signal est utilisé pour commander un circuit monostable, qui à son tour commande le voyant LED.
Le délai du circuit monostable est défini sur 100 ms, afin que même de courts pics de trafic USB allument le voyant LED.
Outil de programmation ftDI FT_PROG
Pour faciliter la programmation de l’EEPROM, FTDI fournit un outil logiciel gratuit appelé FT_PROG. L’outil est disponible à la fois sous la forme d’une application d’interface utilisateur graphique Windows et d’un outil de ligne de commande ; les deux options sont installées en même temps à partir du même package. Téléchargez l’outil à partir du site web FTDI et installez-le à l’emplacement par défaut.
outil en ligne de commande FT_PROG
La version de ligne de commande de FT_PROG est la méthode préférée de programmation de l’EEPROM, car elle prend le nom d’un fichier de configuration en tant que paramètre, puis programme plusieurs appareils avec une seule commande.
Le référentiel Conceptions matérielles Azure Sphere sur GitHub contient un fichier de configuration EEPROM à utiliser avec l’outil en ligne de commande. Nous vous recommandons vivement d’utiliser ce fichier et l’outil en ligne de commande dans les scénarios de fabrication. Le fichier de configuration programme l’EEPROM avec les paramètres suivants :
- Active le mode direct D2XX et désactive le port COM virtuel
- Génère automatiquement un numéro de série, en commençant par « AS »
- Définit la description du produit sur « MSFT MT3620 Std Interface »
Pour programmer l’EEPROM, vous devez utiliser ce fichier comme sans modification, car les outils PC Azure Sphere recherchent la chaîne Description du produit et échouent si cette valeur est modifiée.
Instructions pas à pas pour la programmation de la mémoire EEPROM
Pour utiliser la version de ligne de commande de FT_PROG pour programmer eEPROM pour une puce FTDI à quatre ports :
Installez les outils FTDI à l’emplacement par défaut :
C:\Program Files(x86)\FTDI\FT_Prog
.Connectez une ou plusieurs cartes MT3620 au PC.
Ouvrez une invite de commandes (par exemple, cmd.exe) et accédez au dossier dans lequel vous avez enregistré le fichier de configuration.
Tapez la commande suivante pour répertorier tous les appareils attachés :
"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan
Si quatre appareils sont attachés, la sortie ressemble à ceci :
Device 0: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 1: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 2: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 3: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36
Tapez la commande suivante pour programmer tous les appareils attachés. Spécifiez les index des appareils attachés (0, 1, 2, etc.) après les paramètres et
cycl
lesprog
paramètres :"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan prog 0,1,2,3 MT3620_Standard_Interface.xml cycl 0,1,2,3
L’outil doit afficher :
Scanning for devices... Device 0: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 1: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 2: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 3: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 0 programmed successfully! Device 1 programmed successfully! Device 2 programmed successfully! Device 3 programmed successfully! Finished Re-enumerating Device 0.... Re-enumerating Device 1.... Re-enumerating Device 2.... Re-enumerating Device 3....
Pour vérifier que la programmation a réussi, analysez une fois de plus :
"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan
Notez que les numéros de série ont des modifications dans la sortie et commencent maintenant par AS :
Scanning for devices... Device 0: FT4232H, MSFT MT3620 Std Interface, AS5AW7FD Device 1: FT4232H, MSFT MT3620 Std Interface, AS5AHG3C Device 2: FT4232H, MSFT MT3620 Std Interface, AS5DWM2I Device 3: FT4232H, MSFT MT3620 Std Interface, AS5JQ0LJ
application gui FT_PROG
La version de l’interface utilisateur graphique Windows de l’application est utile pour la lecture et la vérification de l’état des informations de la mémoire EEPROM. Vous pouvez également l’utiliser pour modifier les informations ; Toutefois, nous vous recommandons d’utiliser la version de ligne de commande de l’outil pour programmer l’appareil.
Une fois que vous avez démarré l’application, cliquez sur le bouton d’analyse (avec l’icône de la loupe) pour lire et afficher le contenu actuel de la mémoire EEPROM.
Si une boîte de dialogue Appareil inconnu s’affiche, comme dans l’exemple suivant, cliquez sur OK jusqu’à ce que la fenêtre de l’application affiche les informations correctement.
L’exemple suivant montre l’affichage correct :
Pour plus d’informations sur l’utilisation du logiciel, consultez la documentation FT_PROG.