Ich arbeite in einer Managementrolle und habe nur sehr begrenzte Elektronikkenntnisse (genug, um einfache Arduino-Projekte usw. zu machen).
Wir arbeiten derzeit an einem Produkt, das aus 3 STM32F303 und 2 STM32F103 besteht und der Hauptprozessor ein AM5718 ist.
Ich habe mich nur gefragt, wie Sie die Firmware und den Bootloader für jeden Prozessor, einschließlich des AM5718, hochladen und aktualisieren würden.
Die 5 STM32 sind über UART mit dem AM5718 verbunden und befinden sich alle auf derselben Platine.
Ich würde gerne eine gute Vorstellung davon bekommen, wie dies geschehen würde, nachdem die Leiterplatte produziert wurde und das Produkt im Einsatz ist.
Ich würde natürlich den Elektroniker fragen, der an dem Projekt arbeitet, aber wir sind für Weihnachten fertig.
Wenn das Hardwaredesign korrekt durchgeführt wird und UART für die Programmierung verwendet wird, würden die Schritte ungefähr wie folgt aussehen:
Hier ist ein Bild, das die Bootloader-Auswahl für STM32F10xxx-Teile zeigt:
Die gleichen Schritte würden für jede MCU wiederholt werden.
Der Hauptprozessor kann auf zahlreiche Arten aktualisiert werden, aber normalerweise geht es so:
Aktualisieren.
Basierend auf Ihrer aktuellen Hardware müssten Sie den Bootloader ausführen, indem Sie zur entsprechenden Speicheradresse springen (siehe Seite 20 von AN2606 ). Ich weiß nicht viel darüber, aber Ihr Hardware-Designer sollte in der Lage sein, es herauszufinden. Die Kontrolle über die Reset-Leitung nicht zu haben, ist jedoch ein kleines Versehen.
Ich vermute, dass Sie die AM5718-Firmware über JTAG laden müssen, aber ich bin mit dieser CPU-Familie nicht allzu vertraut.
Der STM32 (wie viele andere ARM-CPUs heutzutage) hat einen von ST eingebauten ROM-Bootloader. Bei einigen STM32-Serien wird dies erreicht, indem der BOOT0-Pin während des Zurücksetzens hoch gehalten wird. Um Ihr normales Programm zu booten, müssen Sie den Pin niedrig halten. Das steht aber praktischerweise nicht immer im Datenblatt, sondern oft in der Bedienungsanleitung.
Der ST-Bootloader unterstützt oft mehrere Protokolle, und UART ist ein sehr verbreitetes. Nicht alle UARTs oder Pin-Positionen auf dem STM32-Chip werden jedoch unterstützt - daher müssen Sie die Pins der seriellen Schnittstelle auswählen. Dieses Dokument ist sehr hilfreich, wenn Sie die richtige Familie finden können.
Das Verfahren, das Armandas beschreibt, ist richtig. Wenn Sie einige freie Pins auf Ihrer AM5718-CPU haben, können Sie die Aktivierung des Bootloaders von ST per Software automatisieren. Dies kostet einige GPIO-Pins auf der CPU - theoretisch 1 zusätzliche Reset-Leitung für jede hinzugefügte CPU. Möglicherweise müssen Sie auch berücksichtigen, wie Ihr Board in diesem Setup hochfährt, während der AM5718 nicht vollständig läuft.
Eine kleine Einschränkung: Bei einigen STM32-Teilen wird der ROM-Bootloader deaktiviert, sobald Sie den Leseschutz aktivieren. Per JTAG (nach dem Löschen) kann man immer noch auf den Chip zugreifen, aber nicht über den Bootloader. Wenn Sie die automatische Aktivierung nicht in Hardware passend erscheinen lassen können, müssen Sie sie möglicherweise manuell über Jumper und ein Papierverfahren durchführen. Dies ist jedoch nur in der Fabrik praktikabel - es ist keine sehr vor Ort wartbare Lösung.
Beide Gründe können Sie zu einem internen Bootloader führen, der über einen seriellen Befehl aktiviert werden kann. Es bietet auch den Vorteil, dass Sie Ihre Firmware-Images durch Verschlüsselung „schützen“, da Sie die Entschlüsselung im Bootloader selbst vornehmen.
Wenn alle Teile JTAG-konform sind und sich alle in derselben Leistungsdomäne befinden (oder sich anderweitig in einem Zustand befinden, der die Kettenintegrität garantiert), können Sie eine Scan-Kette erstellen und diese verwenden, um nacheinander jeden Teil zu treffen.
Es hört sich jedoch so an, als ob das Projekt abgeschlossen ist und Sie im Management sind :), daher denke ich, dass die UART-Option die beste Route ist. Um es klar zu sagen, jeder STM hat seinen eigenen UART für den großen Prozessor, oder teilen sie sich (was etwas seltsam ist ...)? Wenn letzteres, wie die anderen Poster sagten, benötigen Sie einen GPIO pro, um auszuwählen, wer aktiv ist.
Daniel
Neuling Noob
Armandas