Wie programmiere ich ein BeagleBone-Board?

Bisher habe ich Microchip PIC verwendet, um diesen Mikroprozessor zu programmieren gibt es MPLAB. Ich möchte einen Schritt nach vorne machen und mehr über andere Mikrocontroller erfahren.

Ich fand den BeagleBone Black recht vielversprechend für mein DIY-Projekt, da er 2 GB Flash und 1 GHz Takt hat. Als Anfänger habe ich ein paar Fragen: Im eewiki habe ich ein Tutorial gefunden, in dem beschrieben wird, wie man anfängt, aber dieses Tutorial basiert auf einer SD-Karte. Wenn ich nur die 2-GB-Flashkarte verwenden möchte, wie kann ich dann meine Software darauf laden, ohne eine SD-Karte zu verwenden?

Ich habe auf dieser Seite gesehen, dass es einen Bootloader (UBoot) gibt, wofür ist das? Zum Beispiel möchte ich nur eine LED blinken lassen, mit PIC sind es ein paar Codezeilen, die ich hochlade, und das ist alles. Wenn ich dasselbe mit einem BeagleBone Black machen möchte, was soll ich tun? Brauche ich UBoot? Wie kann ich diesen Code in das eMMC des BeagleBone schreiben?

Wenn ich ein Board ohne vorinstallierte Software (einschließlich Bootloader) habe, wie kann ich mit dem Hochladen einer Software beginnen?

Wenn Sie BeagleBone Black verwenden, laden Sie kein Programm direkt hinein, sondern Sie haben ein Betriebssystem darauf ausgeführt, beispielsweise Linux, und Sie arbeiten damit auf hoher Ebene, genau wie Sie Ihren Computer verwenden.
Das stimmt nicht, es gibt Beispiele für Raspberry PI. Werfen Sie einen Blick auf das folgende Repository github.com/dwelch67/raspberrypi
Hm, ja viel Glück dabei :)

Antworten (3)

Der Prozessor auf dem BeagleBone ist kein Mikrocontroller, sondern ein Mikroprozessor (der Sitara AM3359 von Texas Instruments), der keinen nichtflüchtigen Speicher auf dem Prozessor selbst hat, sondern versucht, Programme (z. B. ein Betriebssystem) hineinzuladen RAM über eine Kommunikationsschnittstelle (UART, USB, Ethernet) oder von einem externen Speicher (FLash oder Speicherkarte). Der Initialisierungs-/Bootvorgang für diesen Prozessor wird im Detail ab Seite 4667 des technischen Referenzhandbuchs beschrieben .

Letzteres (Booten von einem Speichergerät) scheint beim BeagleBone der Fall zu sein, was bedeutet, dass Sie das BeagleBoard "programmieren" können, indem Sie den Inhalt des integrierten Flash (eMMC) ändern oder es zum Booten von der microSD -Karte zwingen . Aus ihrer Dokumentation geht nicht ganz klar hervor, wie einfach oder schwer es ist, eigene Speicherabbilder (für SD-Karte oder eMMC) zu erstellen. Ich vermute, es ist nicht trivial.

Link für "Technisches Referenzhandbuch" nicht mehr gültig.

Bei seinem ersten Lauf hat der BeagleBone Black keine Stufe 1, keine Stufe 2 ( U-Boot funktioniert hauptsächlich als Stufe 2, es stellt nur eine Stufe 1, den Secondary Program Loader oder SPL bereit, aber die meiste Arbeit wird im sekundären Programm erledigt) . .

Wenn es ausgeliefert wird, hat es eine SPL, U-Boot und Linux auf seinem eMMC. Wie wurde geflasht? Wahrscheinlich über USB : siehe 26.1.8.6 USB - Boot - Verfahren . Ein Prozessor kann in verschiedenen Boot-Modi booten. Beim USB-Boot können Sie eine Software in den internen SRAM-Speicher laden. Interner RAM ist 64kB groß (1kB ist reserviert). Die SPL wird geladen und im internen RAM ausgeführt. Während die SPL in eMMC nach U-Boot sucht, erhält die in der Produktion verwendete Stage1 wahrscheinlich ein anderes Programm über USB (damit sie Linux ohne Verwendung von eMMC oder SD-Karte ausführen und dann die eMMC mit dem endgültigen Programm flashen kann). Das stage1 kann alles machen was du willst, solange es in 64kB passt (Anweisungen + Daten).

Wenn Sie also eine LED zum Blinken bringen möchten, können Sie einfach eine Stufe1 schreiben, die dies durchführt, aber seien Sie sich bewusst, dass dies eine ineffiziente Verwendung eines Cortex-A-Boards ist.

Ich habe das USB-Boot-Verfahren verlinkt, aber nicht erklärt, wie Sie es auf Ihrem BBB verwenden können. Tatsächlich können Sie nicht. Der Prozessor kann, aber die BBB erlaubt es nicht, diesen Boot-Modus zu verwenden. Es erlaubt 2 Boot-Modi: On-Board eMMC und SD-Karte. Dies ändert nicht wirklich das, was ich zuvor gesagt habe: Anstatt Ihr stage1 auf USB zu senden, müssen Sie es nur auf die SD-Karte schreiben (als Datei namens MLO).

Der einfachste Weg, eine LED zum Blinken zu bringen, besteht darin, ein Programm zu schreiben und es im Userspace unter Linux auszuführen. Die GPIOs sollten als Dateien im Dateisystem verfügbar gemacht werden, die Sie von einem Userspace-Programm, zB einem einfachen C-Programm, öffnen und manipulieren können. Sie könnten dieses Programm auf Ihrem PC entwickeln, es dann crosskompilieren und auf das Ziel übertragen und es dann ausführen.

Oder Sie könnten alternativ versuchen, ein Programm auf dem "Bare Metal" zu schreiben, um das Umschalten durchzuführen, dh einen Ersatz für U-BOOT schreiben. Dies wäre jedoch viel mehr Arbeit, da Sie alle Peripheriegeräte selbst initialisieren müssten, aber es wäre machbar.