Embox est un RTOS configurable conçu pour les systèmes contraints et intégrés des ressources. L'idée principale d'Embox est d'utiliser le logiciel Linux sans Linux.
Listes de diffusion:
Chats télégrammes:
Voici un aperçu rapide de la façon de créer et d'exécuter Embox.
Environnement requis:
gcc et makePour les systèmes basés sur Debian (la plupart des packages sont installés hors de la boîte):
$ sudo apt-get install build-essential gcc-multilib curl libmpc-dev python
Pour Arch Linux:
$ sudo pacman -S make gcc-multilib cpio qemu
$ yay -S python2-bin
Pour Fedora Linux:
$ sudo dnf install make gcc cpio qemu patch curl python
Pour Mac OS X (nécessite l'installation de Homebrew):
$ brew install i686-elf-binutils i686-elf-gcc awk cpio qemu python
Pour tout système avec Docker (plus d'informations sur Wiki Emdocker):
$ ./scripts/docker/docker_start.sh
$ . ./scripts/docker/docker_rc.sh
Tout d'abord:
$ git clone https://github.com/embox/embox.git embox
$ cd embox
Étant donné que Embox est un projet hautement configurable, il est nécessaire de spécifier des modules à construire et des paramètres pour eux. Pour construire le système d' make la commande est utilisée. Toutes les commandes décrites ci-dessous sont appelées dans le répertoire embox , qui comprend src/ , templates/ , ...
Pour la configuration, il est nécessaire de spécifier des paramètres et des modules censés être inclus dans le système. Il existe deux façons de configurer une configuration actuelle:
make confload-<template> - Créer des artefacts générés dans un endroit fixe./confset <template> - Créer des artefacts maintenus dans les chemins de travail dépendants du projet Bien que make confload-<template> soit utilisé, les fichiers du dossier du modèle sont copiés dans le dossier './conf'. Vous pouvez les modifier. Bien que confset <template> soit utilisé, les fichiers du dossier du modèle sont copiés dans ./work/<template>/conf <Template>/conf et un lien './conf' est créé sur ./work/<template>/conf . Cette utilisation est adaptée à la commutation rapide entre vos modèles, car les reconstructions complètes sont évitées. De plus, les conflits de travail sont également conservés, lorsque vous changez de construction, par exemple entre la cible réelle et le Qemu et vice-versa. Uniquement l'inconvénient de l'utilisation de la méthode Confet: plus d'utilisation SSD / HDD, en fonction du nombre de projets parallèles.
Embox a plusieurs modèles préparés, pour les énumérer, utilisez la commande suivante:
$ make confload
La façon la plus simple de charger un modèle est de spécifier son nom dans la commande:
$ ./confset <template>
ou
$ make confload-<template>
Pour un aperçu rapide, vous pouvez utiliser l'un des modèles qemu qui existent pour la plupart des architectures, c'est-à-dire x86/qemu pour x86:
$ ./confset x86/qemu (mais pas de saisie semi-automatique / -suggest lorsque seule une pièce est tapée: à faire)
ou
$ make confload-x86/qemu
Après la configuration du projet, il suffit de make de la création:
$ make
L'image résultante peut désormais être exécutée sur Qemu. Le moyen le plus simple consiste à exécuter ./scripts/qemu/auto_qemu Script:
$ sudo ./scripts/qemu/auto_qemu
sudo est mis en place pour configurer un périphérique TUN / TAP nécessaire pour imiter le réseautage.
Une fois le système chargé, vous verrez l'invite embox> , vous pouvez maintenant exécuter des commandes. Par exemple, help répertorie toutes les commandes existantes.
Pour tester la connexion:
ping 10.0.2.16
Si tout va bien, vous pouvez vous connecter au terminal Embox via telnet .
Pour quitter le type Qemu Ctrl + A et X après cela.
Vous pouvez utiliser le même script avec -s -s -machine accel = TCG Flags pour le débogage:
$ sudo ./scripts/qemu/auto_qemu -s -S -machine accel=tcg
Après avoir exécuté que Qemu attend une connexion à partir d'un client GDB. Exécutez GDB dans l'autre terminal:
$ gdb ./build/base/bin/embox
...
(gdb) target extended-remote :1234
(gdb) continue
Le système commence à se charger.
À tout moment dans le terminal GDB, vous pouvez taper Ctrl + C et voir la pile du thread actuel ( backtrace ) ou définir des points d'arrêt ( break <function name> , break <file name>:<line number> ).
Embox prend en charge les architectures CPU suivantes: x86, bras, microblaze, sparc, ppc, mips.
Afin de travailler avec des architectures autres que x86, vous aurez besoin d'un compilateur croisé. Après l'installation du compilateur croisé, répétez simplement l'étape ci-dessus, en commençant par la configuration:
make confload-<arch>/qemu
make
sudo ./scripts/qemu/auto_qemu
La sortie est tout à fait la même que dans le cas de l'architecture x86.
Embox prend en charge le réseau sur Qemu x86, ARM, MIPS et Microblaze.