Heim  >  Artikel  >  Computer-Tutorials  >  Erfahren Sie, wie Sie Android-Gerätetreiber entwickeln

Erfahren Sie, wie Sie Android-Gerätetreiber entwickeln

WBOY
WBOYnach vorne
2024-01-08 23:58:051040Durchsuche

So lernen Sie die Entwicklung von Android-Treibern

Angesichts der rasanten Entwicklung von Smartphones, insbesondere der explosionsartigen Entwicklung von Android-Smartphones, erfreut sich die Position des Android-Treiberingenieurs immer größerer Beliebtheit, und es lohnt sich, sich auf diese Position zu freuen, da Sie möglicherweise an der Entwicklung eines Mobiltelefons beteiligt sind. Das kann sich ändern das Leben vieler Menschen, also lasst uns vorankommen, Android-Treiber-Affe und wie man ein ausgezeichneter Android-Treiber-Affe wird. Ich hoffe, dass alle Internetnutzer nicht so schnell Fehler machen.

Grundkenntnisse über Android-Treiber

Zuallererst müssen Sie als Android-Treiberprogrammierer klar verstehen, was Sie tun werden, über die Grundkenntnisse verfügen, die Sie im täglichen Leben benötigen. Es ist immer noch sehr wichtig, das Grundgerüst von Android zu verstehen, und Sie auch Ich muss die Grundlagen der Programmierung unter Linux verstehen, da Android-Treiber streng genommen auf Linux-Treibern basieren. In diesem Buch geht es um die Grundkenntnisse von Gerätetreibern unter Linux Programmierer, Sie müssen dieses Buch am besten verstehen, und ich habe dieses Buch immer wieder gelesen, weil ich festgestellt habe, dass es sich lohnt, dieses Buch zu lesen Ich empfehle es wärmstens mit fünf Sternen; und Sie müssen auch grundlegende C-Programmierung beherrschen. Wenn Sie einige C-Programme sehr gut lesen und schreiben können, wäre es besser, wenn Sie auch einige grundlegende Java-Kenntnisse hätten, da der Code der Framework-Ebene vorhanden ist Wenn Sie ein wenig Java-Code verstehen, werden Sie feststellen, dass Sie mit dem gesamten Treiber-Framework, den zugehörigen Linux-Kompilierungsskripten und dem Linux-Kompilierungssystem besser vertraut sind , Androids eigenes Dateiarchitektursystem kann durch einige Kompilierungsskripte geändert werden. Wenn Sie neue Gerätetreiber hinzufügen, müssen Sie das gesamte Treiberkompilierungssystem verstehen, damit das Schreiben von Treiberprogrammen klarer wird!

Android/Linux-bezogene Treiber-Framework-Kenntnisse

Um mehr über die Technologien zu erfahren, die Android-Treiberprogrammierer kennen müssen, habe ich speziell nach den Rekrutierungsanforderungen für Android-Programmierer gefragt. Welches Unternehmen soll ich für inländische Mobiltelefone, ZTE, Huawei, Coolpad usw. auswählen? Lenovo, Xiaomi, Meizu und VIVO sind allesamt sehr gute inländische Mobiltelefonhersteller, und die von ihnen entwickelten Android-Smartphones werden immer besser. Ich habe mir sogar den Rekrutierungsbedarf aufstrebender Android-Smartphone-Unternehmen angesehen, einschließlich der Rekrutierung von Android-Treiberingenieuren Anforderungen auf der offiziellen Website von Smartisan, auf der offiziellen Website von One Plus One gibt es nicht einmal einen Link, um sich uns anzuschließen. Ich weiß nicht, ob das Unternehmerunternehmen vorübergehend mit Talenten gesättigt ist oder aus einem anderen Grund, aber es gibt keine Rekrutierungsinformationen Nach der Zusammenfassung habe ich festgestellt, dass die Unterschiede zwischen diesen Unternehmen nicht besonders groß sind und es keinen Bedarf gibt, das Treiber-Framework jedes Android-Moduls zu verstehen Treiber-Ingenieure einer bestimmten Hammer-Technologie stehen zur Verfügung, die angeblich das beste Mobiltelefon sind, das besser ist als die aktuellen Flaggschiff-Telefone, daher freue ich mich sehr darauf, mitzumachen Es! Die Android-Treiber-Ingenieure eines bestimmten Reisunternehmens benötigen auch Android-/Linux-bezogene Kenntnisse. Ich vermute, dass die Einstellungsanforderungen für Android auf der offiziellen Website von ZTE zu Beginn nicht zu finden sind. Mein Gott, es hat mich so viel Mühe gekostet, die relevanten Rekrutierungsinformationen zu finden!

Einschlägige Hardware-Kenntnisse und Kommunikationskenntnisse

Die übliche Aufgabe eines Android-Treibers besteht darin, verschiedene Peripheriegeräte zu debuggen. Es handelt sich um eine Position, die sich direkt mit der Hardware befasst. Sie erfordert ein Verständnis von Schaltplänen, grundlegenden Anzeigeprinzipien und grundlegenden Kamerabildgebungsprinzipien usw. Dies ist Ihrem sehr ähnlich Übliche Arbeit. Um ein Android-Smartphone herzustellen, müssen Sie auch grundlegende Kommunikationskenntnisse, Funkfrequenzprinzipien und grundlegende Modemkenntnisse verstehen besser Nur mit dem neuesten Android-Treiber können Sie zufriedenstellendere Ergebnisse debuggen!

Ich liebe Fahrerentwicklung und kontinuierliches Lernen

Tatsächlich ist dieser Punkt sehr wichtig und sollte an erster Stelle stehen, damit Sie besser werden können. Dieser Satz ist wirklich wahr Das führt dazu, dass sie am Ende sehr unzufrieden sind und dann vielleicht kein Geld mehr verdienen. Viele meiner Kommilitonen haben ihre Studiengänge aufgegeben Die Leute gehen, um Versicherungen zu verkaufen, einige gehen in Fabriken, um als allgemeine Arbeiter zu arbeiten, einige gehen zum Verkauf, und einige gehen, um eine eiserne Reisschüssel zu holen. Natürlich gibt es keinen Unterschied zwischen hohen und niedrigen Berufen, um dies anzudeuten dass sich alle daran halten, ihre ersten Träume zu verwirklichen! Mein Traum ist es, ein mobiles Endgerät zu entwickeln, das das Leben der Menschen verändern und die Welt dank mir ein wenig anders machen kann. Kinder, lasst uns gemeinsam an diesem Traum festhalten! Darüber hinaus erfordert die Arbeit als Android-Treiberentwickler kontinuierliches Lernen und die Aufrechterhaltung einer Leidenschaft. Nur durch kontinuierliches Lernen können Sie die täglichen Treiberentwicklungsaufgaben besser erledigen und ein ausgeprägtes Gespür für die Entwicklung bewahren Sehr gut gesagt. Es war immer mein Motto, mich dazu zu inspirieren, ein besserer Android-Treiberentwickler zu sein. Der Zweck des Schreibens dieses Blogs besteht darin, einige meiner kleinen Meinungen auch in Zukunft zu teilen Ich aktualisiere meinen Blog, teile einige Dokumente und Blogs im Zusammenhang mit der Treiberentwicklung und mache gemeinsam mit den meisten Fahreraffen Fortschritte!

Lernsequenz zur Windows-Treiberprogrammierung

Es ist noch zu früh, um über Kernel-Treiber zu sprechen. Dieser Lernzyklus ist sehr lang.

Kernel-Treiberprogrammierung ist nichts anderes als die Erstellung von Code gemäß der API und dem Framework des Systems. Es ist nur so, dass diese Dinge in manchen Fällen vorteilhafter und effizienter sind Programmstruktur einfach hoch. Es spielt keine Rolle, ob etwas nicht innovativ ist oder nicht, es geht nur darum, den Kürbis zu kopieren.

Wo soll ich anfangen, die grundlegende Route: Sprache – 》Algorithmus – 》Framework-Mechanismus und WINDOWS-Programm – 》Systemkernel-Implementierung usw.

Einige der unten genannten Inhalte haben alle eine gemeinsame Prämisse: weiterhin Code zu schreiben und Code zu debuggen, sonst ist alles umsonst. Ich hatte einmal einen Betriebssystemlehrer, der sagte: „Wenn Sie ein Buch lesen und Sie dazu auffordern, es zu tun, haben Sie es nicht gelernt, wenn Sie es nicht können.“

Der erste Schritt: Da Sie bereits eine Richtung vorgeschlagen haben, sind die Sprachen der Wahl natürlich C und C++. Jetzt ist der WINDOWS-Kernel gemischt, und aus dieser Perspektive müssen Sie mit beiden vertraut sein. Für verwandte Bücher kann man in China die C- und C++-Bücher von Tan Haoqiang kaufen, die relativ kurz sind und für den Einstieg geeignet sind, und man kann auch Bücher wie C++ PRIMER lesen, die C++ aus der Perspektive von C++ erklären. Um eine solide Grundlage in C und C++ zu haben, können Sie dann Bücher wie EFFECTIVE C++/MORE EFFECTIVE C++/C Language Traps usw. lesen, die alle einige Erfahrungen und Techniken auf der Sprachebene erklären Hier handelt es sich nicht um eine Diandian-Technologie, sondern nur um die grundlegendste Sprachgrundlage.

Um das spätere Lernen zu erleichtern, sollten Sie in dieser Phase grundlegende Computerkurse, Datenstrukturen, Computernetzwerke, Betriebssysteme, Datenbankprinzipien, Kompositionsprinzipien usw. und sogar einige Grundlagen der fortgeschrittenen Mathematik und der diskreten Mathematik erlernen. Dies hängt von Ihrer Situation ab, ist sehr wichtig und hat großen Einfluss auf die weitere Entwicklung.

Die zweite Stufe: WINDOWS-Programm Machen Sie sich mit dem Implementierungsmechanismus des WINDOWS-Programms vertraut, z. B. mit der Nachrichtenantwort und der Ereignisverarbeitung. Sie sollten verstehen, wie die zugrunde liegende Implementierung implementiert wird, und nicht nur ein Konzept. Zu den relevanten gehören das WINDOWS SDK, das MFC-Framework usw. Zu den Büchern gehört „WINDOWS Programming“ (Microsofts 1.300-seitiges Buch ist zwar sehr umfangreich, aber nichts weiter als ein Klassiker auf diesem Gebiet. Natürlich gibt es viele inländische, aber sie sind es Alle sind relativ einfach geschrieben und viele Orte werden auf einen Schlag behandelt), „Insider MFC in a Simple Language“, „VC Technology Insider“ usw. Dies sind Bücher, die den zugrunde liegenden Implementierungsmechanismus von MFC erklären als Ihnen beizubringen, wie man Steuerelemente zieht. >Dies dient zur Erklärung von SOCKET. Tatsächlich wird dieser Aspekt in den WINDOWS-Programmbüchern behandelt, aber viele Leute verstehen ihn immer noch nicht. Um sich damit vertraut zu machen, ist es immer noch notwendig, ihn zu lesen. Treiber, das geschieht einfach unter einem festen WINDOWS-Framework, das ist keine große Sache.

Die dritte Stufe: Kernel-bezogen. Da WINDOWS nicht Open Source ist, gibt es keinen Code, den man sich ansehen muss. Das Gute daran ist, dass ein Windows-ähnliches System wie REACTOS jetzt Open Source ist. Sie können sich die Implementierung des Codes ansehen und sich mit der Funktionsweise des Betriebssystems vertraut machen . Bei vielen dieser Dinge handelt es sich um sicherheitsrelevante Mechanismen, die Sie selbst herausfinden müssen.

Darüber hinaus sollten Sie auch verstehen, wie der Compiler kompiliert, wie der Linker verknüpft, wie das Betriebssystem Dateien lädt, wie WINDOWS den Speicher verwaltet und zahllose andere verwandte Kenntnisse. Diese haben für Ihr Programm keinen direkten Wert, sondern einen indirekten Wert ist unbegrenzt. Während des Lernprozesses sollten Sie einige grundlegende Problemlösungsmethoden, Entwurfsmuster usw. verstehen. Diese Dinge sind die eigentlichen Technologien. Ich schätze, es wird für Sie schwierig sein, etwas zu recherchieren, aber das oben Genannte reicht aus.

Heutzutage müssen viele Menschen beim Lernen systematisch lernen, aber man muss auch die Kosten verstehen. Der Fortschritt an der Front ist sehr langsam, der Lernzyklus ist sehr lang und es ist schwierig, durchzuhalten. Inwieweit haben Sie gelernt? Sobald Sie gelernt haben, wie man es benutzt, und wenn Sie es beherrschen und erklären können, können Sie später weiter lernen. Verwenden Sie NEW mehrere Jahre lang nicht und wissen Sie nicht, was NEW bewirkt hat.

So lernen Sie die Entwicklung von Linux-Treibern

Alles erweitern

1. Was genau ist ein Treiber und wofür wird er verwendet:

l-Treiber ist eine Zwischensoftwareschicht zwischen Hardwaregeräten und Anwendungen

l Es ermöglicht einer bestimmten Hardware, auf eine genau definierte interne Programmierschnittstelle zu reagieren, während die Arbeitsdetails des Geräts vollständig ausgeblendet werden

l Benutzer führen entsprechende Vorgänge über eine Reihe standardisierter Aufrufe aus, die unabhängig von bestimmten Geräten sind

l Die Aufgabe des Treibers besteht darin, diese standardisierten Systemaufrufe den spezifischen Vorgängen des jeweiligen Geräts auf der tatsächlichen Hardware zuzuordnen

l Der Treiber ist Teil des Kernels und kann Interrupts, DMA und andere Operationen nutzen

l Treiber überträgt Daten zwischen Benutzermodus und Kernelmodus

2. Grundgerüst des Linux-Treibers

Erfahren Sie, wie Sie Android-Gerätetreiber entwickeln

3. Gerätetreiber unter Linux lassen sich grundsätzlich in die folgenden drei Kategorien einteilen

1) Zeichengerät

a) Alle Geräte, auf die wie Bytestreams zugegriffen werden kann, werden durch Zeichengeräte implementiert

b) Sie werden als Knoten im Dateisystem abgebildet, normalerweise im Verzeichnis /dev/

c) Beinhaltet im Allgemeinen die Implementierung von Systemaufrufen wie open read write close

2) Geräte blockieren

d) Bezieht sich normalerweise auf Speichergeräte wie Festplatten, Speicher, Flash usw., die Dateisysteme unterstützen können.

e) Auf Blockgeräte wird auch über das Dateisystem zugegriffen. Der Unterschied zu Zeichengeräten besteht darin, dass der Kernel Daten anders verwaltet

f) Es ermöglicht den Zugriff als Byte-Stream wie ein Zeichengerät und kann auch eine beliebige Anzahl von Bytes gleichzeitig übertragen.

3) Netzwerkschnittstellengerät

g) Normalerweise bezieht es sich auf ein Hardwaregerät, manchmal kann es sich jedoch auch um ein Softwaregerät handeln (z. B. eine Loopback-Schnittstelle). Sie werden vom Netzwerksubsystem im Kernel gesteuert und sind für das Senden und Empfangen von Datenpaketen verantwortlich.

h) Ihre Datenübertragung ist oft nicht Stream-orientiert, daher ist es schwierig, sie einem Dateisystemknoten zuzuordnen.

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie Android-Gerätetreiber entwickeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:docexcel.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen