Linux-Speicherverwaltung (6): ausführliche Erklärung von start_kernel

Quellcode basierend auf: Linux 5.4

Vereinbarung:

  • Chip-Architektur: ARM64
  • CONFIG_ARM64_VA_BITS: 39
  • CONFIG_ARM64_PAGE_SHIFT: 12

0. Vorwort

Nachdem der Bootloader die Initialisierungsarbeit abgeschlossen und das Kernel-Image in den Speicher geladen hat, springt er zum Kernel-Teil, um die Ausführung fortzusetzen. Zuerst wird der Assembler-Teil des Codes ausgeführt. Nach verschiedenen Einstellungen und der Umgebungsinitialisierung springt er zum Der erste Teil des Kernels. Eine Funktion start_kernel (), start_kernel () schließt die gesamte Konfiguration und Initialisierung des Kernelsystems ab, wobei setup_arch () die Konfigurations- und Initialisierungsarbeit des frühen Systems ist. 

In dieser Kolumnenreihe werden die Prinzipien des Speicherverwaltungssystems anhand einer eingehenden Analyse des Quellcodes untersucht. Dieser Artikel ist der Ausgangspunkt für diese Reihe von Spaltencodeanalysen.

1. Speicherverwaltungscodefluss in start_kernel

----start_kernel()                         // init/main.c

    ----setup_arch()                       // arch/arm64/kernel/setup.c
        ----early_fixmap_init()            // arch/arm64/mm/mmu.c
        ----early_ioremap_init()           // arch/arm64/mm/ioremap.c
        ----setup_machine_fdt()        

おすすめ

転載: blog.csdn.net/jingerppp/article/details/132969069