Frage:
Empfohlene erste Schritte mit dem BeagleBoard
Kevin Boyd
2010-12-26 22:23:25 UTC
view on stackexchange narkive permalink

Wie kann ich mit dem BeagleBoard XM problemlos mit der beruflichen Entwicklung beginnen?

  1. Mit welchem ​​Betriebssystem soll ich arbeiten? Zu meinen Auswahlmöglichkeiten gehören:

    • Ubuntu
    • Android
    • MeeGo
    • WinCE
    • QNX
    • Angstrom (vorinstalliert)
    • Symbian
    • Gentoo
  2. Wie installiere ich ein Betriebssystem? auf die Platine?

  3. Welche IDE verwende ich?

  4. Wie debugge ich oder führe meinen Code auf dem Ziel aus?

  5. ol>

    Ich habe ein brandneues Beagleboard XM gekauft, um eine Schnittstelle zu einem Kameramodul herzustellen, Videos aufzunehmen und Bilder zu verarbeiten. Die Kamera verwendet eine 8-Bit-Parallelport-Schnittstelle zum Übertragen von Bildern.

    Was empfehlen Sie?

Drei antworten:
pingswept
2010-12-27 06:12:09 UTC
view on stackexchange narkive permalink

Ich würde mit Angstrom Linux beginnen und dann zu Ubuntu wechseln, wenn Sie müssen. Ich bezweifle, dass Sie wechseln müssen, damit die Kamera funktioniert.

Ich glaube, das Betriebssystem für das Beagleboard XM ist auf der SD-Karte gespeichert. Wenn Sie also entscheiden, dass Sie zu etwas anderem wechseln müssen, Möglicherweise erhalten Sie eine zweite SD-Karte, sodass Sie das ursprüngliche Betriebssystem intakt lassen können. Abhängig vom Betriebssystem finden Sie wahrscheinlich ein vorgefertigtes SD-Karten-Image, mit dem das Beagleboard gestartet werden kann.

Für eine IDE würde ich empfehlen, mit einem Texteditor zu beginnen, der über SSH funktioniert. Sie können mit Nano beginnen, es sei denn, Sie haben zuvor Vim oder Emacs verwendet.

Ich bin mir nicht sicher, ob ich C ++ auf dem Beagleboard debuggen soll, aber Sie können mit Ang ++ in Angstrom kompilieren. Sie können Code über die Befehlszeile ausführen.

Wenn Sie ssh können, können Sie gdb zum Debuggen von Code verwenden oder möglicherweise den gdb-Verkehr weiterleiten und einen grafischen Debugger auf Ihrem Computer verwenden
Es tut mir leid, aber ich bin neu in dieser Art von Entwicklung. Nur um zu verdeutlichen, würde ich meine gesamte Entwicklung auf dem BeagleBoard selbst durchführen oder würde ich ein PC + Beagleboard-Setup benötigen. Ich habe ein Windows-Betriebssystem auf dem PC, aber es würde mir etwas ausmachen, Linux einzurichten, wenn dies die Entwicklung erleichtern würde.
Entschuldigung, ich hätte klarer sein sollen. Die übliche Methode ist die Verwendung eines SSH-Terminals auf einem lokalen PC (könnte Windows mit Cygwin oder Mingw sein, aber Linux passt besser). Sie SSH zum Board und führen dann den Editor auf dem Board aus. Sie können die Codierung auch auf Ihrem PC durchführen und die Binärdateien kopieren. Dies bedeutet jedoch, dass Sie auf Ihrem PC einen ARM-Compiler ("Cross-Compiling") einrichten, was etwas schwierig sein kann.
Nur um hinzuzufügen: Earlz und Johan empfehlen gdb und JTAG zu Recht. Es ist schwierig einzurichten, und die Hardware kann teuer sein, aber es ist großartig, wenn Sie sie erst einmal in Betrieb genommen haben. Ich würde nicht denken, dass es notwendig ist, loszulegen.
Ich glaube nicht, dass Sie ein JTAG benötigen, es sei denn, Sie beabsichtigen, den Kernel und / oder die Treiber zu debuggen. Bei Standard-Apps ist die Verwendung von gdbserver auf der Karte, auf die über eine gdb-kompatible IDE in einem PC zugegriffen wird, weitaus einfacher.
Johan
2010-12-27 14:36:09 UTC
view on stackexchange narkive permalink

OS

Es hängt wirklich davon ab, was Sie tun möchten?

Sie haben drei Optionen, die auf dem Linux-Kernel basieren:

  • Angstrom ist eine klassische GNU / Linux-Distribution, die für diese Art von Geräten entwickelt wurde.
  • MeeGo ist die coole Nokia / Intel Qt-basierte Plattform, die häufig in Infotainmentsystemen in Autos (und einigen Nokia-Handys) verwendet wird.
  • Android, das Betriebssystem des Google-Telefons, hauptsächlich Java

und einige Desktop-Linux-Distributionen:

  • Ubuntu
  • Gentoo

Und dann noch ein anderes Betriebssystem:

  • Symbian, das zu 99% aus einem Telefon besteht (ich würde es nicht empfehlen)
  • Ich denke, QNX hat einige Echtzeit-Dinge, die Spaß machen könnten, mit
  • WinCE zu spielen. Und Sie haben die klassische Windows-Plattform, die nach unten geschaut hat.

Und ich würde tatsächlich anfangen mit dem Zeug in dieser Reihenfolge zu spielen

  1. Angstrom, da es auf dem Beagleboard
  2. MeeGo am einfachsten zu sein scheint, da Qt eine wirklich nette Bibliothek ist, mit li zu arbeiten >
  3. Android, da es gut zu wissen ist
  4. QNX
  5. ol>

    Aber für den Rest dieser Frage werde ich mich nur auf die Linux-basierten Optionen konzentrieren. P. >

    Betriebssystem installieren

    Es hängt davon ab, aber die meisten verwenden die SD-Karte.

    Im Debug-Modus können Sie jedoch eine Kombination verwenden, die den Kernel über tftp und das lädt führt das Root-Dateisystem über die IDE nfs

    aus und debuggt

    Um den Kernel abzuspielen, benötigen Sie den Befehl d line, ein guter Editor wie vim / emacs.Um den Kernel zu debuggen, benötigen Sie einen Debugger, um den jtag auszuführen.

    Für die Anwendungsentwicklung können Sie jedoch den klassischen Weg verwenden (mit einem guten Editor und vielem) von Makefiles). Oder vielleicht so etwas wie Eclipse.

    Das Debuggen von Anwendungen erfolgt normalerweise mit gdb.

    Unter Linux können Sie einen normalen Texteditor oder vielleicht Eclipse verwenden.

Ich müsste ein USB- oder Parallel-Port-Tool kaufen, um über jtag zu debuggen, oder? Was würden Sie dafür empfehlen?
@Kevin: Í hat versucht, einen erschwinglichen OpenOCD-basierten jtag zu verwenden, aber heute hat dieses Projekt Probleme mit internen Caches auf dem Cortex A8-Chip, den das BeagleBoard verwendet. Ich weiß jedoch, dass die teuren jtags aus Lauterbach funktionieren, um den Kernel zu debuggen. (Sie sind gut, aber teuer) ...
Vielen Dank! Irgendeine Idee, wie ich an Cam-Treiber komme, wenn ich eine Schnittstelle zu einem Cam-Modul herstellen muss?
@Kevin: Keine Ahnung, aber es kann nicht schaden, den Hersteller der Kamera zu fragen? Und schauen Sie sich ein Video 4 Linux an, http://en.wikipedia.org/wiki/Video4Linux
fceconel
2010-12-28 03:22:07 UTC
view on stackexchange narkive permalink

Ich habe Meego und Angstrom ausprobiert und mich für Angstrom entschieden. Es ist viel einfacher, es zum Laufen zu bringen und sehr stabil. Der Meego-Port für Beagleboard hatte dagegen viele Pannen. Ich habe die anderen Betriebssysteme nicht getestet, aber ich würde sagen, Angstrom scheint die beste Wahl für Community-Unterstützung und Stabilität zu sein.

Die Installation des Betriebssystems ist ganz einfach: Sie laden ein Betriebssystem-Image auf ein SD-Karte und nehmen Sie einige Änderungen im Bootloader vor, damit er von der SD bootet. Auf der Angstrom-Website finden Sie einige vorgefertigte Betriebssystem-Images sowie Rezepte für die Installation auf der SD. Grundsätzlich erstellen Sie zwei Partitionen: eine kleinere FAT für den Start und den Kernel und die andere für das Root-Dateisystem, das alles andere enthält. Hier ist eine Site mit Anweisungen für den SD-Start: http://www.xora.org.uk/2009/08/14/omap3-sd-booting/

Sie können dies auch Lassen Sie es vom NAND-Flash booten, aber ich würde empfehlen, diese Option für später zu speichern, wenn Sie mit dem Gerät besser vertraut sind. Da das NAND begrenzt ist, müssen Sie mit Bitbake ein benutzerdefiniertes Image erstellen, damit es passt. Dies ist die Art von Arbeit, die Sie derzeit nicht ausführen möchten.

Über das Debuggen am besten ist für Sie, um eine Ethernet-zu-USB-Schnittstelle + USB-Hub zu kaufen. Dann führen Sie gdbserver in Ihrem Beagleboard aus und können jede gdb-kompatible Debugging-IDE auf Ihrem PC verwenden (ich verwende Eclipse CDT).

Für die Kamera-Schnittstelle ist es am einfachsten, die GPIO-Pins am zu verwenden Erweiterungsstecker; Der Nachteil ist, dass Sie aufgrund der Bandbreitenbeschränkung möglicherweise eine begrenzte Bildrate haben und der Prozessor während der Übertragung des Bildes beschäftigt ist. Andererseits ist der GPIO so flexibel, dass Sie wahrscheinlich keinen zusätzlichen Stromkreis benötigen, um sie anzuschließen - vorausgesetzt, ihre Spannung ist kompatibel (der GPIO arbeitet mit 1,8 V). Es gibt andere Möglichkeiten, wenn Sie eine höhere Bildrate wünschen und den Prozessor für andere parallele Aufgaben benötigen. Ich würde jedoch empfehlen, dies für eine zweite Entwurfsrunde zu belassen.

Ich habe das BeagleBoard XM, Version A3, und es hat kein Nand, daher müsste ich mich für die SD-Kartenoption entscheiden. In Bezug auf die Kamera-Schnittstelle jede Idee, was die Bandbreitenbeschränkung ist. Ich möchte eine 5MP-Kamera anschließen und volle Auflösung bei 15fps erhalten. Wie finde ich auch die Treiber für die Kamera? Hat Angstrom integrierte Cam-Treiber? Das Cam-Modul, auf dem sich ein Omnivision-Bildsensor befindet.
Es sieht so aus, als hätte jemand gerade einen Linux-Treiber geschrieben: http://boundarydevices.com/blogs/omnivision-ov5642-camera-driver-for-linux Das sind gute Nachrichten, aber es ist sehr wahrscheinlich, dass er noch nicht im Beagleboard-Kernel enthalten ist. Es sieht so aus, als ob der XM derzeit 2.6.35 verwendet.
@Kevin: gut, ich habe einige Tests gemacht und die höchste Frequenz, die ich zum Umdrehen bekam, war ungefähr 4 MHz in einer einfachen Schleife. Wenn Sie eine Logik setzen, dann geht es auf 1 MHz. Das würde bedeuten, dass ein QVGA-Frame 320x200 / 1M = 64ms benötigt. Das würde Ihnen eine maximale Bildrate von 15 fps geben, wenn Sie die Prozessorzeit ausschließlich dafür verwenden können.
@Kevin # 2: Ich sollte auch erwähnen, dass die Tests, die ich durchgeführt habe, in C waren, und als ich den generierten Assembly-Code untersuchte, sah ich, dass er viel effizienter gemacht werden könnte, wenn er direkt in Assembly geschrieben wird (für diesen speziellen Fall). Ich habe es zwar nicht versucht, aber vielleicht gibt es Hoffnung auf bessere Ergebnisse.
Haben Sie den BB oder den BBXM ausprobiert? Sie sehen, dass der BBXM über einen dedizierten Kamera-Schnittstellenanschluss verfügt, sodass er einen guten Durchsatz haben sollte, nicht wahr? Ein weiterer wichtiger Punkt ist, dass Leopard Imaging Kameramodule für das BBXM herstellt. Diese Module haben eine Auflösung von bis zu 5 MP. Sie müssen auch die Treiber für diese Module erstellt haben. Ich denke, sie haben es möglicherweise zum Laufen gebracht, aber ich bin mir nicht sicher, welcher Frame bewerten sie unterstützen.
@Kevin, Mine ist BB Rev C3. Wenn Sie einen dedizierten Port haben, können Sie diese Einschränkungen aufheben. Sie müssen nur überprüfen, ob der von Ihnen verwendete OV5642 über eine kompatible Schnittstelle verfügt. Ich schlug diesen Ansatz nicht als endgültigen vor, sondern als ersten Versuch, das Gerät zu testen.
@fceconel: Wie kann der Prozessor des BB, der mit 1000 MHz läuft, Ihnen eine maximale Bit-Flip-Geschwindigkeit von 4 MHz geben? Ist das nicht ironisch? Liegt es am Betriebssystem?
Ich denke nicht, dass das Betriebssystem sehr schuld ist; Obwohl die Tatsache, dass es sich um Multitasking handelt und daher ein gewisser Overhead anfällt, ist es wahrscheinlich nicht wirklich wichtig. Ich denke, es ist ein Teil des Overheads im generierten Code und ein Teil der maximalen Geschwindigkeit, mit der GPIO arbeiten kann. Denken Sie auch daran, dass 1000 MHz (oder in meinem Fall 600 MHz) nur der interne Takt des Prozessors ist. Dies wird im Prozessor durch eine PLL verfügbar gemacht, die einen externen Takt von 30 MHz multipliziert.
Eines habe ich vergessen zu erwähnen: Ich habe die Tests im Benutzermodus durchgeführt. Vielleicht hat das Betriebssystem tatsächlich etwas mit der Leistungseinbußen zu tun. Ein Test im Kernel-Modus wäre hilfreich. Ich beschäftige mich jetzt mit einer anderen Aufgabe, aber ich werde diese Probleme später noch einmal behandeln. Ich werde die Ergebnisse veröffentlichen, wenn ich sie bekomme.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...