EMBOX ist ein konfigurierbares RTOS, das für ressourcenbeschränke und eingebettete Systeme ausgelegt ist. Die Hauptidee von EMBOX ist die Verwendung von Linux -Software ohne Linux.
Mailinglisten:
Telegramm -Chats:
Hier finden Sie einen kurzen Überblick, wie Sie Embox erstellen und ausführen können.
Erforderliche Umgebung:
gcc und makeFür Debian-basierte Systeme (die meisten Pakete werden jedoch außerhalb der Box installiert):
$ sudo apt-get install build-essential gcc-multilib curl libmpc-dev python
Für Arch Linux:
$ sudo pacman -S make gcc-multilib cpio qemu
$ yay -S python2-bin
Für Fedora Linux:
$ sudo dnf install make gcc cpio qemu patch curl python
Für Mac OS X (erfordert Homebrew installiert):
$ brew install i686-elf-binutils i686-elf-gcc awk cpio qemu python
Für jedes System mit Docker (weitere Informationen zu Wiki Emdocker):
$ ./scripts/docker/docker_start.sh
$ . ./scripts/docker/docker_rc.sh
Erstens:
$ git clone https://github.com/embox/embox.git embox
$ cd embox
Da EMBOX ein hochkonfigurierbares Projekt ist, müssen Module und Parameter für sie angegeben werden. Um das Betriebssystem zu erstellen, wird Befehl make . Alle unten beschriebenen Befehle werden aus dem embox -Verzeichnis aufgerufen, das src/ , templates/ , ...
Für die Konfiguration müssen Parameter und Module in das System einbezogen werden. Es gibt zwei Möglichkeiten, eine aktuelle Konfiguration einzurichten:
make confload-<template> - Erstellen Sie Artefakte, die an einem festen Ort erzeugt werden./confset <template> - Erstellen von Artefakten, die in projektabhängigen Arbeitspfaden aufrechterhalten werden Während make confload-<template> verwendet wird, werden Dateien aus dem Ordner der Vorlage in den Ordner './conf' kopiert. Sie können sie ändern. Während confset <template> verwendet wird, werden Dateien aus dem Ordner der Vorlage in ./work/<template>/conf Ordner und ein Link './conf ./work/<template>/conf kopiert. Diese Verwendung eignet sich zum schnellen Umschalten zwischen Ihren Vorlagen, da vollständige Umbauten vermieden werden. Darüber hinaus werden auch funktionierende Konf-Settings beibehalten, wenn Sie die Erstellung von EG zwischen realem Ziel und Qemu und wieder zurückschalten. Nur der Nachteil der Konfset -Methode: Mehr SSD/HDD -Verwendung, abhängig von der Anzahl der parallelen Projekte.
EMBOX hat mehrere Vorlagen vorbereitet, um sie aufzulisten, um den folgenden Befehl zu verwenden:
$ make confload
Der einfachste Weg, eine Vorlage zu laden, besteht darin, ihren Namen im Befehl anzugeben:
$ ./confset <template>
oder
$ make confload-<template>
Für den schnellen Überblick können Sie eine der qemu -Vorlagen verwenden, die für die meisten Architekturen vorhanden sind, dh x86/qemu für x86:
$ ./confset x86/qemu (doch keine automatische Vervollständigung/-sugst, wenn nur ein Teil eingegeben wird: zu tun)
oder
$ make confload-x86/qemu
Nach dem Konfigurieren des Projekts, das gerade ausgeführt wird make zu erstellen:
$ make
Das resultierende Bild kann jetzt auf QEMU ausgeführt werden. Der einfachste Weg ist die Ausführung ./scripts/qemu/auto_qemu Skript:
$ sudo ./scripts/qemu/auto_qemu
sudo wird wieder eingerichtet, um ein TUN-/TAP -Gerät einzurichten, das für die Nachahmung der Networking erforderlich ist.
Nachdem das System geladen wurde, sehen Sie die embox> -Eingabeaufforderung, jetzt können Sie Befehle ausführen. help listet beispielsweise alle vorhandenen Befehle auf.
Um die Verbindung zu testen:
ping 10.0.2.16
Wenn alles in Ordnung ist, können Sie über telnet eine Verbindung zum EMBOX -Terminal herstellen.
Danach beenden QEMU -Typ ctrl + a und x .
Sie können dasselbe Skript mit -S -s -Machine Accel = TCG -Flags zum Debuggen verwenden:
$ sudo ./scripts/qemu/auto_qemu -s -S -machine accel=tcg
Nach dem Laufen wartet Qemu auf eine Verbindung von einem GDB-Client. Führen Sie GDB im anderen Terminal aus:
$ gdb ./build/base/bin/embox
...
(gdb) target extended-remote :1234
(gdb) continue
Das System beginnt zu laden.
In jedem Zeitpunkt im GDB -Terminal können Sie Strg + C eingeben und den Stapel des aktuellen Threads ( backtrace ) oder den Breakpoints festlegen ( break <function name> , break <file name>:<line number> ).
EMBOX unterstützt die folgenden CPU -Architekturen: x86, Arm, Microblaze, SPARC, PPC, MIPS.
Um mit anderen Architekturen als X86 zu arbeiten, benötigen Sie einen Cross -Compiler. Wiederholen Sie nach der Installation des Cross -Compiler den Schritt oben und beginnen Sie mit der Konfiguration:
make confload-<arch>/qemu
make
sudo ./scripts/qemu/auto_qemu
Die Ausgabe ist die gleiche wie im Fall der X86 -Architektur.
EMBOX unterstützt das Netzwerk auf QEMU X86, Arm, MIPS und Microblaze.