Frage

Ich suche nach Werkzeugen und Techniken für das Prototyping (virtuelles Prototyping), Simulation und Testen des tiefen eingebetteten C-Codes auf Desktop-Fenstern, einschließlich der gebürtigen realistischen Eingeborenen, bestehend aus Tasten, LEDs und LCD-Anzeigen (sowohl segmentiert als auch Grafik)).

Ich interessiere mich speziell an einem möglicherweise niedrigen Ansatz mit reinem C-Code und RAW Win32-API und nicht als MFC, .NET / C #, VXWidgets oder Qt.Ich möchte auch kostenlose Entwicklungsools verwenden, z. B. visueller C ++ - Express mit Plattform SDK und RESEDIT, um Ressourcen zu bearbeiten.

Ich suche nach Code-Beispielen, um Grafik-LCDs (von Monochrome bis 24-Bit-Farbe) mit effizienter Pixel-Level-Schnittstelle, Multi-Segment-LCDs und inhabergezogenen Tasten, die sowohl "deprimiert" und "freigelassen" reagieren" Veranstaltungen.

War es hilfreich?

Lösung

Ich bin überrascht, dass meine ursprüngliche Frage so viele Missverständnisse und nachteilige Kommentare auslöste. Die Strategie, tief eingebettete C-Code auf einer Maschine (z. B. einem PC) zu entwickeln und auf einem anderen (der eingebettete Mikrocontroller) läuft, wird als "Dual Targeting" bezeichnet und ist wirklich üblich. Zum Beispiel ist das Entwicklung und Testen von tiefem Embedded-Code auf dem PC der Eckpfeiler des jüngsten Buches "Testgesteuertes Entwicklung für eingebettete C" von James Rening.

Vermeidung von Target-Hardware-Engpass mit doppeltem Targeting

Bitte beachten Sie, dass das doppelte Targeting nicht bedeutet, dass das eingebettete Gerät mit dem PC etwas zu tun hat. Weder es bedeutet, dass die Simulation mit der eingebetteten Ziel-CPU zyklus-exakt sein muss.

Dual-Targeting bedeutet einfach, dass Ihr eingebetteter Code (normalerweise in c) von dem ersten Tag auf mindestens zwei Plattformen ausgelegt ist: die endgültige Zielhardware und Ihr PC. Alles, was Sie wirklich brauchen, sind zwei C-Compiler: Einer für den PC und ein anderes für das eingebettete Gerät.

Die doppelte Targeting-Strategie erfordert jedoch eine spezifische Art, die eingebettete Software zu entwerfen, so dass alle Zielhardwareabhängigkeiten durch eine genau definierte Schnittstelle gehandhabt werden, die häufig als Board-Support-Paket (BSP) bezeichnet wird. Diese Schnittstelle verfügt über mindestens zwei Implementierungen: eine für das eigentliche Ziel und eine für den PC, z. B. Ausführen von Fenstern. Mit einer solchen Schnittstelle kann der Großteil des eingebetteten Codes völlig unbekannt bleiben, mit welcher BSP-Implementierung er verknüpft ist und so schnell auf dem PC entwickelt werden kann, kann aber auch auf der Zielhardware ohne Änderungen ausgeführt werden .

Während einige eingebettete Programmierer das doppelte Targeting als selbstvertriebene Belastung anzeigen können, stimmen die erfahreneren Entwickler im Allgemeinen zu, dass die Beachtung der Grenzen zwischen Software und Hardware tatsächlich von Vorteil ist, da er modular mehr, tragbarer und mehr ergibt Wartbare Software mit viel längerer Lebensdauer. Die Investition in das Dual-Targeting hat auch eine sofortige Amortisation im enormen, beschleunigten COMPLEG-Run-Debug-Zyklus, der auf dem leistungsstarken PC viel schneller und produktiver ist, im Vergleich zu viel langsamerem, zurückgeschränktem, tief eingebettetem Ziel mit eingeschränkter Sicht in den laufenden Code .

Frontplatte Win32 GUI-GUI-Toolkit

Wenn Sie eingebettete Code für Geräte mit nicht trivialen Benutzeroberflächen entwickeln, läuft man oft in das Problem, dass die eingebetteten Frontplatten als GUI-Elemente auf dem PC dargestellt werden. Das Problem ist so häufig, dass ich wirklich überrascht bin, dass hier niemand eine vorhandene Bibliothek oder ein Open-Source-Projekt empfehlen kann, was eine einfache C-Nur-Schnittstelle an die Grundelemente wie LCDs, Tasten und LEDs bereitstellt. Das ist wirklich nicht so kompliziert, aber es scheint, dass jeder eingebettete Entwickler dieses Rad immer wieder neu erfinden muss.

Um Embedded-Entwickler zu helfen, interessiert an Prototyping eingebettete Geräte unter Windows zu interessiert, habe ich ein "Front-Panel Win32 GUI-Toolkit" erstellt und online unter der GPL Open Source-Lizenz geschrieben (siehe Http://www.state-machine.com/win32 ). Dieses Toolkit stützt sich nur auf die RAW Win32-API in C und liefert derzeit folgende Elemente:

    .
  1. dot-matrix-Anzeige für effiziente, pixeladressierbare Displays wie grafische LCDs, OLEDs usw. mit bis zu 24-Bit-Farbe

  2. Segmentanzeige für segmentierte Anzeige wie Segment-LCDs und Segment-LEDs mit generischen, benutzerdefinierten Bitmaps für die Segmente.

  3. Inhaber-gezeichnete Tasten mit benutzerdefinierten "deprimierten" und "freigegebenen" Bitmaps und in der Lage, separate Ereignisse zu erstellen, wenn sie depressiviert sind und wenn er freigelassen wird.

  4. Das Toolkit verfügt über ein Beispiel und eine App-Anmerkung (siehe http://www.state -machine .com / win32 / a_win32-gui.pdf ), wie Sie zeigen, wie Sie die Eingabe von den in den Eigentümer gezeichneten Tasten, regulären Schaltflächen, Tastatur und Maus handhaben. Sie können auch eine animierte Demo an der http://www.state-machine.com/win32/front_panel.html anzeigen / a>.

    In Bezug auf die Größe und Komplexität der "Frontplatte Win32 GUI-Toolkit" dauert die Implementierung der vorgenannten GUI-Elemente nur etwa 250 Zeilen von C. Das Beispiel mit allen Eingangsquellen und vielen Kommentaren beträgt rund 300 Zeilen Von C. Das Toolkit wurde mit dem kostenlosen visuellen C ++-Express 2010 (mit der Express Edition-Plattform SDK) und dem kostenlosen Ressourcen-Editor-Editor-Ressourcen-Editor getestet.

    Genießen!

Andere Tipps

Die Appliances, die Sie in Ihrer Kommentar erwähnen, klären Klarstellung auf die Frage werden niemals einen Windows-PC verwenden, sodass die Windows-Programmierung mit niedrigem Pegel in diesem Fall keine Anforderung ist. In der Tat würde ich sagen, dass es unerwünscht ist. Prototyping ist um Geschwindigkeit. Es geht darum, wie schnell Sie etwas zusammenstellen können, um potenzielle Anleger oder höheres Management oder einen anderen Entscheidungsträger zu zeigen.

Sie möchten die zusätzliche Zeit nicht mit einem niedrigen Niveau-C- und Win32-API ausgeben, bis die Projektanforderungen ausreichend ausgedehnt wurden, dass Sie wussten, dass dies eine absolute Anforderung für die endgültigen Projektergebnisse war ( vielleicht einen Server / PC Überwachungs-Tool? ). Bis dahin wollen Sie eine Entwicklungsgeschwindigkeit. Glück für Sie Die Industrie hat Werkzeuge für ein schnelles Prototyping und die Entwicklung von Hardware, wie Sie beschreiben.

meine Präferenz für das Prototyping mit eingebetteter Entwicklung

Wie für meine Meinung als Entwickler, ich mag das .NET Microframework (.NETMF), einfach weil ich bereits ein Microsoft .net-Entwickler bin und viele meiner bestehenden Fähigkeiten übertragen kann. Den i-Prototyp mit einem Fez-Mikrocontroller mit C # unter Visual C # Express 2010 (kostenlos wie Sie erforderlich). Es ist schnell, einfach und Sie arbeiten in Minuten an dem Kern Ihres Projekts.

Wenn Ihre Erfahrung als Entwickler unterschiedlich ist, können Sie nach einem Micro-Controller suchen, der mithilfe von Basis, Java oder einer anderen Sprache programmiert ist, um mit der Entwicklungsgeschwindigkeit zu helfen, indem Sie Ihren Kernkompetenz einsetzen.

Ansprache Ihrer Frage BOUNTY-Kommentare

Erstaunlich große Portionen der eingebetteten Software können entwickelt werden auf dem Desktop-Computer im Gegensatz zum tief eingebetteten Ziel. Diese Vermeidung des "Zielsystems Engpässe" kann möglicherweise sich verbessern Produktivität durch eine Größenordnung, wenn es richtig gemacht wird. Jedoch zu Entwickeln Sie eingebettete Software auf dem Desktop, muss man die Benutzeroberfläche simulieren Komponenten, wie z. B. Displays (beide segmentiert und zunehmend Grafische), LEDs, Knöpfe und Knöpfe. Ich suche eine solche UI Komponenten, die in Plain Win32 API in C geschrieben wurden, um eine einfache Integration mit Eingebetteter Code, der auf den Desktopfenstern entwickelt und getestet wird.

Ich habe seit über 4 Jahren eine Vollzeit-Vollzeit für viele Jahre sowie viele Jahre umgeben, um diese Teilzeit umzusetzen. Während das, was Sie oben gesagt haben, etwas wahr ist, spart er Sie nicht Zeit oder Geld, weshalb jeder über die Motivation für diese Strategie verwirrt ist. Wir haben versucht, einen Windows-Emulator für diese Hardwaregeräte dieses Unternehmens auszustellen, die theoretisch Zeit für das Prototyping sparen würden. Es war immer ein Schmerz und wir verbrachten viel mehr Stunden Arbeitsstunden damit, die Erfahrung nachzuahmen, als wenn wir gerade direkt von skizzierten UI-Zeichnungsspezifikationen bis zur echten Entwicklung gingen. Der Emulator stand hinter der Hardwareentwicklung und unterstützt häufig die neuesten Funktionen bis 6 Monate oder landert, nachdem die Hardware freigelassen wurde. Es war viel zusätzliche Arbeit für sehr wenig Wert.

Sie geben mehr Ihrer Zeit aus, um nicht wiederverwendbare Win32-Plattformcode- und Hardware-Emulationskomponenten zu entwickeln, als tatsächlich den Code für das Kernprojekt selbst zu schreiben. Dies ist nur sinnvoll für Hardware-Anbieter, die diesen Emulator als "Wert hinzugefügt" für potenzielle Entwickler von Drittanbietern bereitstellen, aber es ist kein Sinn für Prototyping neue Hardware-Designs.

Moderne Entwicklungsumgebungen wie Visual C # Express 2010 Mit einem Fez-Mikrocontroller können Sie das Projekt ausgeben, drücken Sie den Projektausgang an den Mikrocontroller und beginnen Sie dann, nur so schnell oder schneller zu debuggen , als Sie kompilieren und ein Laufen laufen können Level-Windows-App in C-Emulieren von LCDs oder LEDs oder Schalter usw., usw. Ihr Kommentar, "die Produktivität durch Größenordnung verbessern", trifft einfach nicht mehr mit modernen Werkzeugen zu. (Es kann vor den letzten 10 Jahren sein.)

Wenn Sie wirklich, wirklich einfach die eingebettete Hardware optisch auf einem PC simulieren möchten, verwenden Sie etwas wie Adobe Flash, um eine Benutzeroberfläche zu verspotten. Duplizieren Sie jedoch den Code jedoch nicht, indem Sie für Windows kodieren, wenn das endgültige Gerät, in dem Sie Prototyping sind, Windows nicht ausgeführt werden (vielleicht wird es sein, aber Sie haben das nicht gesagt). Verwenden Sie die schnellsten zuverlässigsten Prototyping-Tools, die heute verfügbar sind, was eindeutig nicht ist niedrig Pegel C und Win32 API!

Verwenden Sie möglicherweise Steckexchange für die Elektronik?

Da dies eine entwicklungsorientierte Website ist, ist die Diskussion über die Verdienste von spezifischer eingebetteter Hardware nicht wirklich relevant. Wenn Sie sich entscheiden, mit der Verwendung von Mikrocontroller-Elektronik für Prototyping ( arduino , fez , propeller , Basisstempel , pololu usw.) Sie können die Electronics-Hardware-Beratung auf

> Steckexchange für Elektronik .Ich werde sagen, dass die meisten dieser Plattformen, um das Prototyping von LCDs, LEDs, Schaltflächen und Schnittstellen zu erleichtern, wie Sie umrissen sind.Sie können in der Regel in wenigen Minuten ein paar vorgebaute Module zusammenbauen und bereit sein, um das Codieren Ihres Projekts zu starten.Riesige Zeiteinsparungen können hier gehalten werden.

Sie bitten um zu viel, dass Sie einen Look @ proteus nehmen müssen. http://www.labcenter.com/products/vsm_overview.cfm

Wie Mahmoud sagte, finden Sie möglicherweise Ihre Codelösung mit Prototyping-Beispiel in Proteus Professional .Es ist eine beliebte Software für Prototyping, Simulation und Codierung, Sie können Laden Sie den Proteus Professional kostenlos herunter und überprüfen Sie ihr Handbuch.

Viel Glück

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top