Ob Sie eine Hochgeschwindigkeits-PCB oder ein komplexes eingebettetes System entwerfen, es wird ein gewisses Maß an Tests benötigen. Für die fortgeschrittenen Hochgeschwindigkeits- und RF-Systeme bedeutet das normalerweise Simulationen im Vergleich zu VNA- oder Oszilloskop-Messungen. Für eingebettete Software und Firmware können die Testphasen ganz anders sein. Tatsächlich gibt es einige Dinge, die Sie in Ihrem Prototyp-Design tun können, um den Testprozess zu beschleunigen und die Notwendigkeit zu eliminieren, mit einem Multimeter herumzusondieren.
In diesem Artikel werde ich Ihnen einige einfache Tricks zeigen, die das Testen und Debuggen eines Prototyps erheblich erleichtern können. Das bedeutet, einen Design-for-Test-Ansatz zu nehmen und ihn sowohl auf Software als auch auf Hardware anzuwenden. Hier ist ein Hinweis: Der beste Weg für das Testen von eingebetteten Systemen beinhaltet mehr als nur Testpads oder Testpunkte zu platzieren.
Wir haben viele Schlagwörter in der PCB-Industrie, und „Design für Test“ wird normalerweise mit dem breiteren DfX-Bündel gruppiert. Viele Designer werden Design für Tests für eine Platine, die eingebetteten Code ausführt, auf die gleiche Weise angehen, wie sie Tests für jede andere Platine angehen würden.
Dies bedeutet normalerweise, dass Designer viele Testpunkte auf wichtigen Signalen platzieren, aber vielleicht nicht viel mehr. Viele eingebettete Prototypen werden anfangen, wie ein Arduino-Entwicklungsboard auszusehen, wo alles, was man sich beim Hauptprozessor vorstellen kann, zu Stiftleisten und Testpunkten herausgeführt wird.
Ich habe nichts gegen Stiftleisten auf einer Platine für eingebettete Systeme oder auf irgendeiner anderen Platine. Aber es ist schwierig, jedes Signal und jeden Pin zu überwachen, während man gleichzeitig versucht, Software oder Firmware, die auf der Platine läuft, zu testen und zu debuggen. In einigen Fällen müssen Sie tatsächlich eine Anwendung schreiben, nur um Ihre Anwendung zu testen. Manchmal, wenn Sie einen Fehler in den Funktionen Ihres Designs sehen, ist es möglicherweise nicht immer offensichtlich, ob die Ursache in Ihrem Code oder in Ihrer PCBA liegt.
Auf der Hardwareseite konzentrieren Sie sich darauf, diesen vereinfachten Ansatz für Design für Test zu nehmen:
Einige dieser Konzepte wurden von Ari Mahpour in seinen Diskussionen über Tests und Continuous Integration ausführlich besprochen. Schauen Sie sich diesen Artikel an, um mehr über diesen Ansatz zu erfahren. Wenn Sie Daten zurück an Ihren Computer senden möchten, ist die einfachste Methode, eine USB-zu-Seriell-Schnittstelle zu Ihrem Prototyp hinzuzufügen. Schauen Sie sich dieses Projekt von Zach Peterson an und greifen Sie auf die Link-Design-Dateien zu.
Als Nächstes, wenn Sie eine eingebettete Anwendung auf Ihrem System ausführen, dann können Sie Fehlerbehandlung oder Testfälle in den Code einfügen, um das Testen zu beschleunigen. Das Hinzufügen der Verbindungen zu Schnittstellen mit Headern, Testpads und einer grundlegenden seriellen Schnittstelle sind alles wichtige Schritte, die Ihnen helfen, Ihre eingebettete Platine in Echtzeit zu überwachen. Das Ziel ist zu sehen, wie sich die Softwareanwendung direkt neben der Hardware verhält.
Wie können Sie also den Fortschritt Ihrer Anwendung und Hardware gleichzeitig überwachen? Nehmen Sie sich ein Beispiel an Softwareentwicklern: Fügen Sie Fehlerbehandlung und Nachrichten hinzu, um den Status jeder Funktion in Ihrer Anwendung anzuzeigen. Das kann so einfach sein wie das Anzeigen von Nachrichten, die angeben, ob wichtige Funktionen in der Anwendung bestanden haben oder fehlgeschlagen sind. Es dauert etwas mehr Zeit, all diese Fehlerprüfungen zu schreiben, aber eine Bildschirmnachricht, die anzeigt, was Ihr System während der Ausführung der Anwendung tut, kann eine Menge Debugging ersparen.
Hier ist ein Beispiel, das zeigt, wie dies in C/C++ mit einer einfachen Funktion (genannt myFunction()) und einer hypothetischen GPIO-Bibliothek implementiert würde. Nehmen wir an, Sie arbeiten mit einer Plattform, die eine einfache GPIO-Bibliothek mit Funktionen wie gpio_init(), gpio_read() usw. bietet:
#include |
Wenn deine Anwendung Signale direkt überwacht, kann deine Anwendung diese Ergebnisse bei jedem Schritt in ihren Kernfunktionen ausdrucken. Diese auf dem Bildschirm zusammen mit deinen Schlüsselsignalen auszugeben, wird dir genau zeigen, was während des Fortschritts deiner Anwendung passiert, und du musst nicht jedes Signal auf deiner Platine manuell mit einem externen Gerät messen. Sicher, es erfordert das Verlegen einiger zusätzlicher Leiterbahnen zu den GPIOs beim Entwerfen der Platine, aber du könntest feststellen, dass ein scheinbarer Logikfehler wirklich nur ein einfacher Verbindungsfehler in deiner PCB war.
Vergiss nicht, du kannst immer noch alle anderen Signale, die zu einer Sonde gehen müssen, zu einem Header führen. Auf diese Weise können diese Signale immer noch mit einem Oszilloskop oder einer Datenerfassungskarte gemessen werden. In der Zwischenzeit wird der serielle Port viel Arbeit leisten, um dir zu helfen, mit deiner Anwendungslogik zu interagieren.
Unabhängig davon, was du entwerfen möchtest, kannst du innovative Design-for-Test-Praktiken mit dem kompletten Satz von PCB-Designfunktionen in Altium Designer® implementieren. Um Zusammenarbeit in der heutigen disziplinübergreifenden Umgebung zu implementieren, nutzen innovative Unternehmen die Altium 365™-Plattform, um Design-Daten einfach zu teilen und Projekte in die Fertigung zu bringen.
Wir haben nur an der Oberfläche dessen gekratzt, was mit Altium Designer auf Altium 365 möglich ist. Starte heute deine kostenlose Testversion von Altium Designer + Altium 365.