Was ist Linux-Kernel-Portierung?

WBOY
WBOYOriginal
2022-03-24 10:29:062972Durchsuche

Unter Linux bezieht sich die Kernel-Transplantation auf die Übertragung von Programmcode von einer Hardware-Plattform auf eine andere Hardware-Plattform, um auf einer anderen ausgeführt zu werden. Die Linux-Kernel-Transplantation umfasst drei Ebenen, nämlich die Transplantation auf Architekturebene und die Transplantation auf SOC-Ebene.

Was ist Linux-Kernel-Portierung?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Was ist eine Linux-Kernel-Transplantation?

Die sogenannte Transplantation besteht darin, den Programmcode von einer Betriebsumgebung in eine andere Betriebsumgebung zu übertragen. Bei der Kernel-Transplantation geht es hauptsächlich um den Wechsel von einer Hardwareplattform zur Ausführung auf einer anderen Hardwareplattform.

Die Transplantation des Linux-Kernels auf eine Zielplatine umfasst drei Ebenen, nämlich die Transplantation auf Architekturebene, die Transplantation auf SoC-Ebene und die Transplantation auf Motherboard-Ebene.

  • Portierung auf Architekturebene bezieht sich auf die Portierung von Linux-Kerneln auf verschiedenen Architekturplattformen. Beispielsweise sind für jede Architektur spezifische Portierungsarbeiten auf verschiedenen Architekturen wie ARM, MIPS und PPC erforderlich. Die Entstehung einer neuen Architektur erfordert eine Migration auf dieser Ebene.

  • Die Transplantation auf SoC-Ebene bezieht sich auf die Transplantation des Linux-Kernels auf eine bestimmte SoC-Prozessorplattform. Beispielsweise erfordern die beiden Prozessoren des ARM920T-IP-Kerns, S3C2410 und AT91RM9200, SoC-spezifische Transplantationsarbeiten.

  • Die Transplantation auf Motherboard-Ebene bezieht sich auf die Transplantation des Linux-Kernels auf ein bestimmtes Ziel-Motherboard. Auf dem FS2410-Zielboard sind beispielsweise Motherboard-spezifische Transplantationsarbeiten erforderlich.

Hier besprechen wir die Transplantation auf Motherboard-Ebene, wobei wir hauptsächlich die Initialisierung des Entwicklungsboards und den Treibercode hinzufügen. Der größte Teil dieses Codes bezieht sich auf die Architektur und wird entsprechend den verschiedenen Architekturen im Arch-Verzeichnis verwaltet.

Der Linux 2.6-Kernel unterstützt bereits eine Vielzahl von Hardware-Boards für den S3C2410-Prozessor, wie SMDK2410, Simtec-BAST, IPAQ-H1940, Thorcom-VR1000 usw. Wir können uns auf die SMDK2410-Referenzplatine beziehen, um den Kern der Entwicklungsplatine zu verpflanzen.

S3C2410 ist ein System-on-Chip. Der Prozessorchip verfügt über Controller für Peripherieschnittstellen wie serielle Schnittstellen und LCD. Auf diese Weise können die meisten Gerätetreiber auf der Referenzplatine direkt verwendet werden. Aber nicht alle externen Geräte sind gleich. Verschiedene Entwicklungsboards können unterschiedliche SDRAM-, Flash-, Ethernet-Schnittstellenchips usw. verwenden. Dies erfordert eine Änderung oder Entwicklung von Treibern basierend auf der Hardware.

Zum Beispiel ist der Treiber für die serielle Schnittstelle einer der typischen Gerätetreiber, und dieser Treiber erfordert fast keine Änderungen. Wenn Sie jedoch die 2.4-Kernel-Konfigurationsmethode verwenden, können Sie die Informationen zur seriellen Konsole nicht abrufen. Im 2.6-Kernel sind die entsprechenden Geräteknoten des seriellen Geräts im Verzeichnis /dev /dev/ttySAC0, /dev/ttySAC1 usw. Wenn Sie daher das frühere Gerät mit serieller Schnittstelle ttyS0 verwenden, erhalten Sie keine Konsolendruckinformationen. Dieses Problem kann nun einfach gelöst werden, indem die Konsoleneinstellung der Kernel-Befehlszeilenparameter auf console = ttySAC0,115200 geändert wird.

Nachdem der Kernel den S3C2410-Prozessor bereits unterstützt, besteht grundsätzlich keine Notwendigkeit, den Code zu ändern, um den Kernel zum Laufen zu bringen. In einigen Fällen müssen wir jedoch eine Transplantation auf Treiberebene für verschiedene Geräte durchführen, wobei zumindest die Hardwareadresse und die Interrupt-Nummer unterschiedlich sein können. Beispielsweise ist es manchmal notwendig, Treiber für Peripheriegeräte wie Netzwerkchips und NAND-Flash-Chips zu übertragen.

Verwandte Empfehlungen: „Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Linux-Kernel-Portierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn