2015-11-07 17 views
6

Ich habe etwas Erfahrung kompilieren Bare-Metal-Code für ARM-Cortex-M-Geräte sowie die Linux Kernal, uBoot und Anwendungen für die Beaglebone Black (BBB) ​​(mehr Feature ARM mit MMU, für diejenigen, die unter einem Felsen leben). Es macht für mich, dass der Cortex-M-Code mit arm-none-eabi-gcc kompiliert werden sollte (da es kein Betriebssystem gibt) und der Anwendungscode für die BBB sollte mit arm-linux-gnueabi-gcc (wie dort) kompiliert werden ist ein OS, für das Systemaufrufe gemacht werden können und Programmlader und geteilte Objekte, die verwendet werden können).Warum arm-linux-gnueabi-gcc und nicht arm-none-eabi-gcc beim kompilieren von Linux kernel und uBoot?

Was ich nicht verstehe ist, warum uBoot und der Kernel auch mit arm-linux-gnueabi-gcc kompiliert werden sollten. Meiner Meinung nach ist zumindest UBoot ein Bare-Metal-Programm, für das es kein schickes Betriebssystem gibt. Das nervt mich schon seit einiger Zeit, aber ich kann keine Antwort finden. Gibt es jemanden da draußen, der mich erleuchten kann?

+0

Wo hast du das gelernt * "uBoot [sic] und der Kernel sollte auch mit arm-linux-gnueabi-gcc kompiliert werden" *? Ich habe gesehen, U-Boot und der Linux-Kernel mit der gleichen Toolchain (z. B. in Buildroot) vermutlich aus Bequemlichkeit kompiliert. Aber ich verwende normalerweise eine Baremetal Toolchain für Bootloader wie U-Boot (d. H. Ich baue zwei Toolchains). – sawdust

+0

Ich habe nur von Beispielen wie [this] (http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User'Guide#Building_U-Boot) ausgegangen. Willst du sagen, dass uBoot mit beiden kombiniert werden kann? Was ist mit dem Kernel? –

+1

Ja. Gleicher Deal. – sawdust

Antwort

0

U-Boot wurde entworfen, um die Linux-Design-Philosophie so weit wie möglich zu spiegeln. Es verwendet das gleiche Konfigurationssystem, die allgemeine Verzeichnisstruktur usw. Es teilt einige APIs mit Linux - siehe das include/linux-Verzeichnis. Wie die obigen Kommentare erwähnen, spielt die ABI-Kompatibilität zu diesem Zeitpunkt keine Rolle, aber die Verwendung eines Linux-Compilers ist für U-Boot nicht philosophisch ungeeignet.

Verwandte Themen