Ich arbeite in einer Managementrolle und habe nur sehr begrenzte Elektronikkenntnisse (genug, um einfache Arduino-Projekte usw. zu erstellen).
Wir arbeiten derzeit an einem Produkt mit 3 STM32F303 und 2 STM32F103. Der Hauptprozessor ist ein AM5718.
Ich habe mich nur gefragt, wie Sie die Firmware und den Bootloader für jeden Prozessor einschließlich des AM5718 hochladen und aktualisieren sollen.
Die 5 STM32 sind über UART mit dem AM5718 verbunden und befinden sich alle auf derselben Platine.
Ich möchte eine gute Vorstellung davon bekommen, wie dies geschehen würde, nachdem die Leiterplatte hergestellt wurde und das Produkt im Einsatz ist.
Ich würde natürlich den Elektronikingenieur fragen, der an dem Projekt arbeitet, aber wir sind für Weihnachten fertig.
quelle
Antworten:
Wenn das Hardware-Design korrekt ausgeführt wird und UART für die Programmierung verwendet wird, lauten die Schritte ungefähr wie folgt:
Hier ist ein Bild, das die Bootloader-Auswahl für STM32F10xxx-Teile zeigt:
Die gleichen Schritte würden für jede MCU wiederholt.
Der Hauptprozessor kann auf zahlreiche Arten aktualisiert werden, aber normalerweise sieht es so aus:
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 es herausfinden können. Die Kontrolle über die Reset-Leitung nicht zu haben, ist allerdings ein kleines Versehen.
quelle
Ich vermute, Sie müssen die AM5718-Firmware über JTAG laden, aber ich bin mit dieser CPU-Familie nicht allzu vertraut.
Der STM32 (wie viele andere ARM-CPUs heutzutage) verfügt über einen von ST integrierten ROM-Bootloader. Bei einigen STM32-Serien erfolgt dies, indem der BOOT0-Pin während des Zurücksetzens hoch gehalten wird. Um Ihr normales Programm zu starten, müssen Sie den Pin niedrig halten. Dies steht jedoch zweckmäßigerweise nicht immer im Datenblatt, sondern häufig im Benutzerhandbuch.
Der ST-Bootloader unterstützt häufig mehrere Protokolle, und UART ist sehr verbreitet. Es werden jedoch nicht alle UARTs oder Pin-Positionen auf dem STM32-Chip unterstützt. Sie müssen daher die Pins der seriellen Schnittstelle auswählen. Dieses Dokument ist sehr hilfreich, wenn Sie die richtige Familie finden können.
Das von Armandas beschriebene Verfahren ist korrekt. Wenn Ihre AM5718-CPU über einige Ersatzstifte verfügt, können Sie die Aktivierung des ST-Bootloaders über Software automatisieren. Dies kostet einige GPIO-Pins auf der CPU - theoretisch 1 zusätzliche Rücksetzleitung für jede hinzugefügte CPU. Möglicherweise müssen Sie auch überlegen, wie Ihr Board in diesem Setup gestartet wird, während der AM5718 nicht vollständig ausgeführt wird.
Eine kleine Einschränkung: Bei einigen STM32-Teilen wird der ROM-Bootloader ausgeschaltet, sobald Sie den Leseschutz aktivieren. Sie können weiterhin über JTAG (nach dem Löschen) auf den Chip zugreifen, jedoch nicht über den Bootloader. Wenn Sie die automatische Aktivierung nicht in die Hardware integrieren können, müssen Sie sie möglicherweise manuell über Jumper und ein Papierverfahren ausführen. Dies ist jedoch nur im Werk praktikabel - es ist keine sehr vor Ort zu wartende Lösung.
Beide Gründe können Sie zu einem internen Bootloader führen, der über einen seriellen Befehl aktiviert werden kann. Es bietet außerdem den Vorteil, dass Sie Ihre Firmware-Images durch Verschlüsselung schützen können, da Sie die Entschlüsselung im Bootloader selbst vornehmen.
quelle
Wenn alle Teile JTAG-kompatibel 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 jedes 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 klar zu sein, jeder STM hat seinen eigenen UART für den großen Prozessor, oder teilen sie sich (was etwas seltsam ist ...)? In letzterem Fall benötigen Sie, wie auf den anderen Postern angegeben, einen GPIO pro, um auszuwählen, wer aktiv ist.
quelle