Arm linux boot process into the kernel

  
 

It's still a process of generating vmlinux from the compiled link. It is made up of a bunch of .o files. The first one is kernel\\arch\\arm\\kernel\\head-armv.o, and we also saw lds. Link the file kernel\\arch\\arm\\vmlinux.lds, first analyze it ENTRY (stext) //entry point is stext should be in head-armv.s SECTIONS {. = 0xC0008000; //base address, is the kernel The starting virtual address .init : { /* Init code and data */_stext = .;__init_begin = .;*(.text.init)__proc_info_begin = .;*(.proc.info) __proc_info_end = .;__arch_info_begin = .;*(.arch.info)__arch_info_end = .;__tagtable_begin = .;*(.taglist)__tagtable_end = .;*(.data.init). = ALIGN(16); __setup_start = .;*(.setup.init)__setup_end = .;__initcall_start = .;*(.initcall.init)__initcall_end = .;.= ALIGN(4096);__init_end = .;}About virtual and physical addresses: After using the MMU, the system will use the virtual address, and the MMU points to the actual physical address. Here, our actual physical address of 0xC0008000 is 0x30008000. For details about the MMU, refer to "A. RM Architecture and Programming. Go to head-armv.s to find the entry to the program. section ".text.init",#alloc,#execinstr.type stext, #functionENTRY(stext)mov r12, r0mov r0, #F_BIT

Copyright © Windows knowledge All Rights Reserved