本文主要是介绍OK6410A 开发板 (六) 3 OK6410A linux-5.11 运行解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
url : git@github.com:lisider/linux.git
branch : ok6410a-linux-5.11
commit id : d64fe683e8d36e8fff882f1319de00f442fea1a8
config : ok6410A_sdboot_mini_defconfig
// 涉及的 .S .s .c 文件 有 824个
前提
- uImage的生成过程
vmlinux -objcopy-> arch/arm/boot/Image
arch/arm/boot/Image -gzip & add arch/arm/boot/compressed/head.S-> arch/arm/boot/compressed/vmlinux
arch/arm/boot/compressed/vmlinux -objcopy-> arch/arm/boot/zImage
arch/arm/boot/zImage -mkuboot-> arch/arm/boot/uImage
- u-boot 加载 uImage 的过程
问题 :1. U-boot中的 kernel_entry 对应 linux中的哪一条代码?
答案 :arch/arm/boot/compressed/head.S 中的 start 标号
linux-5.11 uImage 的启动过程
- 1 zImage解压缩为Image的过程
arch/arm/boot/compressed/head.S
- 2 Image 开MMU并转到 start_kernel 的过程
arch/arm/kernel/head.S
- 3 start_kernel
init/main.c
- 4.1 0 号进程 idle
cpu_idle
- 4.2 1 号进程 init
kernel_init
- 4.3 2 号进程 kthreadd
kthreadd
这篇关于OK6410A 开发板 (六) 3 OK6410A linux-5.11 运行解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!