2009-10-05 7 views
11

Ich muss ein Embedded-ARM-Design erstellen, das Anforderungen an viele Dinge hat, die Embedded Linux tun würde. Das Design ist jedoch kostensensibel und benötigt keine großen Pferdestärken. Meist wird mit seriellen Schnittstellen gesprochen. Idealerweise würde ich gerne einen der Low-End-ARMs verwenden. Was ist die niedrigste Konfiguration eines ARM, auf dem Sie erfolgreich Embedded Linux verwendet haben?Minimale Konfiguration zum Ausführen von Embedded Linux auf einem ARM-Prozessor?

Edit:

Die Anwendung muss ein Dateisystem auf irgendeine Art von Flash-Gerät und die Fähigkeit, Anwendungen für die Verarbeitung der Daten auszuführen. Einige der Anwendungen werden möglicherweise von anderen als mir selbst geschrieben. Ich muss auch neue Anwendungen laden oder alte Apps über die seriellen Schnittstellen aktualisieren, um die Apps zu akzeptieren.

Wenn ich andere eingebettete OSes ausgesehen haben scheinen sie eher eine Echtzeit zu sein Threading-Lösung als mit der Fähigkeit, Anwendungen auszuführen. Ich bin offen für alles, was die Arbeit erledigen wird.

+0

Könnten Sie einige weitere Informationen über die Anwendung zur Verfügung stellen? Wenn Sie wirklich nur mit einigen seriellen Geräten reden und Informationen weitergeben und ARM + Linux ist wahrscheinlich zu viel Aufwand und Komplexität, vor allem, wenn Sie die Tool-Ketten und die Konfiguration des Betriebssystems auf einem solchen Gerät nicht bereits vertraut sind. – Mark

Antwort

12

Ich denke, dass Sie Ihre Kostenoptionen hier abwägen müssen.

ARM + Linux ist eine Option, aber Sie werden eine sehr hohe Betriebsaufwand für eine solche einfache (aus Ihrer Beschreibung) Satz von Funktionen zahlen. Sie können nicht nur die Kosten für den ARM-Chip betrachten, sondern auch das externe RAM, das sehr wahrscheinlich benötigt wird, sowie das Flash berücksichtigen, um genügend Speicherplatz für die Ausführung der kernel + -Apps verfügbar zu machen.

Hinweis: Sie können in der Lage sein, die externen Anforderungen mit einem sehr geringen Kernel und einfachen Anwendungen mit einem uC mit großen internen Ressourcen kombiniert zu vermeiden.

Eine zweite Option ist ein viel einfacherer Mikrocontroller mit einem leichten Betriebssystem. Dies wird Ihre Hardwarekosten auf der CPU reduzieren und Sie können wahrscheinlich so etwas ohne externen RAM oder Flash (abhängig von Anwendungs-RAM und Programmplatzbedarf)

dritte Option: Ich sehe eigentlich nichts in Ihren Anforderungen verlangt, dass irgendein Betriebssystem überhaupt benutzt wird. Einfache Dateisysteme sind sehr einfach, zum Beispiel gibt es sogar FAT-Treiber für 8-Bit-PICs. Die Anbindung an eine SD-Karte erfordert nur einen SPI-Port und eine minimale externe Schaltung.

Das Anwendungsbit könnte einfach oder komplex sein. Ich habe Systeme rund um PIC18 Microcontoller gebaut, die einen Webserver betreiben und Programmaktualisierungen über einen einfachen Upload-Bildschirm erlauben, speichert das neue Programm einfach in einem EEPROM oder Flash, bootet in einen Bootloader und kopiert das neue Programm in den internen Programmspeicher. Sie könnten wahrscheinlich einen Weg entwerfen, dies ohne den Neustart über eine kooperative Multitasking-Architektur zu tun. Auf jeden Fall müssen die Programmierer, die die Apps schreiben, Kenntnisse über die Architektur und den Zugriff auf Bibliotheken/Treiber, die Sie schreiben, besitzen. Um dies zu vereinfachen, sollten Sie eine möglichst einfache API bereitstellen und versuchen, den Build-Prozess für sie zu automatisieren.

Die dritte Option ist die "günstigste" Hardware, da bei der Verarbeitung Ihrer Anwendungen nur ein sehr geringer Aufwand anfällt, so dass Sie mit minimaler Prozessorleistung und minimalem Arbeitsspeicher auskommen. Es wird wahrscheinlich etwas mehr Programmier-/Software-Architektur von Ihrer Seite erfordern, aber Sie werden nicht annähernd die Forschung benötigen, die Sie unternehmen müssen, um Linux zum Laufen zu bringen und zusätzlich die benötigten Gerätetreiber unter einem Linux-Paradigma zu schreiben.

Wie immer müssen Sie die Softwareentwicklungskosten in die Baukosten des Geräts einbeziehen. Wenn Sie vorhaben, mehr als 10.000 davon zu bauen, ist es wahrscheinlich besser, die Hardwarekosten niedrig zu halten und mehr Manpower in die Entwicklung einer Softwarelösung zu investieren, die es dieser Hardware ermöglicht, die Designziele zu erreichen. Wenn Sie 10 davon bauen, geben Sie am besten 15-20 US $ für Hardware aus, wenn Sie Ihre Softwareentwicklungskosten reduzieren können. Zum Beispiel ein ARM mit MMU mit voller Linux-Kernel-Unterstützung und verfügbaren Gerätetreibern.

Ich glaube, dass Sie die schlechteste aus beiden Welten im Moment wählen, Ihre extra zahlen, um ein UC zu erhalten, können Sie Linux ausführen, aber dabei wählen Sie auch ein Teil, das wahrscheinlich die komplexeste sein wird linux up und running on, vor allem mit Linux auf Embedded-Plattformen noch nicht gearbeitet.

2

Ich hatte Erfolg sogar auf ARM7TDMI, also glaube ich nicht, dass Sie irgendwelche Schwierigkeiten haben werden. Wenn Sie ein System mit geringen Anforderungen haben, können Sie jede Art von leichtem Echtzeit-Manager verwenden und viel bessere Erfahrungen machen, als wenn Sie Linux zum Arbeiten bringen würden.

2

Ich habe ein TS-7200 für etwa fünf Jahre verwendet, um einen Web-Server und Mail-Server laufen zu lassen, Debian GNU Linux verwenden. Es ist 200 MHz und hat 32 MB RAM und ist für diese Aufgaben völlig ausreichend. Es hat einen eingebauten seriellen Port. Es basiert auf einem ARM920T.

Dies wäre für Ihre Arbeit Overkill; Ich erwähne es, damit Sie einen anderen Datenpunkt haben.

2

ucLinux ist speziell für Ziele ressourcenbeschränkten, aber vielleicht noch wichtiger ist für Ziele ohne MMU.

Aber Sie müssen einen guten Grund haben, Linux auf einem solchen System zu verwenden, anstatt eine kleine Echtzeit-Exekutive. Out-of-the-Box-Netzwerke, leicht verfügbare Treiber und Protokollstacks für komplexe Hardware und Unterstützung für vorhandenen POSIX-Legacy- oder Open-Source-Code sind vielleicht einige. Wenn Sie das jedoch nicht benötigen, ist Linux immer noch groß und Sie verschwenden möglicherweise Ressourcen für keinen wirklichen Nutzen. In den meisten Fällen benötigen Sie immer noch Off-Chip-SDRAM und Flash, wenn Sie Linux mit einem beliebigen Geschmack wählen.

Ich würde nicht seriell halte ich/O als ‚komplexe Hardware‘, so, wenn Sie eine komplexe laufen, aber Standardprotokoll, Ihre kurze Beschreibung scheint nicht die Verwendung von Linux IMO

2

Seit einigen Jahren zu rechtfertigen Ich habe a gumstix verwendet, um Prototyping und Tests zu machen, und ich hatte gute Ergebnisse damit. Ich weiß nicht, ob der Prozessor, den sie benutzen (Intel PXA255 auf meinem Board), als günstig angesehen wird, aber die gesamte Verdex-Linie scheint mir ziemlich billig für ein anpassungsfähiges Gerät zu sein.

0

Mein DLINK DIR-320 Router läuft Linux im Inneren.

Und ich kenne ein paar Handwerker, blinkt es mit Optware und verbindet USB-Hub, HDDs, USB-Flash und vieles mehr.

Es ist Low-Cost-einsatzbereit "Plattform". (Wenn Sie keine Massenproduktion benötigen). Aber vielleicht stärker als Sie brauchen.

Zusätzlich kann es drahtlos per Web-Interface auch über Ihren PDA konfiguriert werden :)