2017-07-20 4 views
-2

Ich bin daran interessiert, Kernel für Android-Handys zu entwickeln. Ich habe im Internet über Android-Kernel-Entwicklung gesucht und ich habe Kernel auf Linux-Maschine zu bauen bedeutet nur, wie man Werkzeuge für die Erstellung eines benutzerdefinierten Kernels verwendet, aber ich möchte wissen, wie man Code schreibt, um Android-Kernel zu machen. Wie beginne ich mit c Programmierung und ALP. Bitte führen Sie mich.Android Kernel Entwicklung mit Linux

Antwort

1

Android verwendet Linux Kernel und deshalb sollten Sie sich zuerst mit Linux vertraut machen.

Von Ihnen post Ich rate, dass Sie nicht viel von C Programmiersprache wissen. Bevor Sie mit der Arbeit am Kernel beginnen, sollten Sie in der Lage sein, eine Anwendung in C zu schreiben, denn wenn Sie keine Anwendung schreiben können, werden Sie wahrscheinlich keinen Kernel verstehen.

Um zu beginnen, C lehnen gibt es Dutzende von Ressourcen überall, ich würde das Buch "C Programmiersprache" von Brian W. Kernighan empfehlen. und Denis M. Ritchie (Erfinder von C).

Die Anwendung läuft im so genannten "Benutzermodus" und hat nur Zugriff auf den virtuellen Speicher, den sie vom Kernel erhalten. Wenn die Anwendung versucht, auf Speicher zuzugreifen, der sich nicht in ihrem virtuellen Speicher befindet, sendet der Kernel ein Abbruchsignal. Dies verhindert, dass das System abstürzt. Im Kernel ist dies nicht der Fall, da der Kernel im "Kernel-Modus" läuft und somit Zugriff auf den gesamten Adressraum hat, wenn Sie etwas falsch machen. Die Konsequenzen reichen vom Anhalten des Systems bis zum Löschen des permanenten Speichers und mehr.

Also zuerst lernen, wie man Anwendungen schreibt, vielleicht eine native Anwendungen, versuchen Sie, die Funktionalität zu verwenden, die vom Kernel bereitgestellt wird, indem Sie über "Systemaufrufe" lernen. Zu diesem Zweck würde ich die Bücher "Advanced Linux Programming" von Mark Mitchel empfehlen, es ist frei auf seiner Website http://advancedlinuxprogramming.com/ gehostet. Sie können hier eine Referenz finden https://en.wikibooks.org/wiki/The_Linux_Kernel.

Wenn Sie mit C und den Diensten vertraut sind, bietet der Linux-Kernel. Dann können Sie darüber nachdenken, in den Kernel einzutauchen. Sehr beliebtes Buch ist "Linux Kernel Development" von Robert Love. Obwohl ich denke, es ist nicht sehr aktuell. Es sollte die wichtigsten Themen zu diesem Thema abdecken, gibt es wahrscheinlich Ressourcen da draußen, die aktueller sind.

Dies ist eine lange Reise und Sie sollten zuerst darüber nachdenken, je nachdem, was Sie tun möchten, können Sie es tatsächlich in "User Space" tun.

+0

Vielen Dank für Ihre Antwort. Ich weiß c Programmierung bis Zeigerstruktur Datenverarbeitung Speicherverwaltung Dateioperation usw. Aber ich weiß nicht über Dienstleistungen wie Sie erzählt. Ist das genug um Linux Kernel Entwicklung zu starten? –

+0

Wenn ich du wäre, würde ich C beherrschen und durch die Links schauen, die ich dir gezeigt habe. Schreiben Sie einige Anwendungen und wenn Sie dazu bereit sind, erhalten Sie ein Buch über den Kernel und suchen Sie immer nach Dingen, die Sie nicht verstehen. Sie sollten auch einen bestimmten Teil des Kernels wählen, zum Beispiel wollen Sie einen Gerätetreiber oder ein Dateisystem schreiben? Es ist sehr schwer, Sie zu führen, weil es viele Faktoren gibt. –

+0

Vielen Dank für die Führung .. –