Firefly开源社区
标题:
RK3288内核运行的第一个文件是哪个
[打印本页]
作者:
helloLinux
时间:
2019-9-7 18:22
标题:
RK3288内核运行的第一个文件是哪个
通过查看顶层的Makefile和arch/arm/Makefile中的文件,
在arch/arm/Makefile文件中有如下语句:
head-y := arch/arm/kernel/head$(MMUEXT).o
MMUEXT为空,因为RK3288有MMU,所以:
head-y := arch/arm/kernel/head.o
通过分析顶层Makefile文件,kernel启动后,第一个运行的文件应该是arch/arm/kernel/head.S吧?
但是看博客上有篇文章说kernel运行的第一个文件为arch/arm/boot/compressed/head.S
博客网址如下:
https://blog.csdn.net/lp542718520/article/details/38705975
请问,内核运行的第一个文件是arch/arm/boot/compressed/head.S这个么?
主要是我查看kernel的编译日志里,也确实是编译了arch/arm/boot/compressed/head.S这个文件,
而且也有arch/arm/boot/compressed/vmlinux.lds这个链接脚本文件。
LDS arch/arm/boot/compressed/vmlinux.lds
AS arch/arm/boot/compressed/head.o
在顶层Makefile文件中明明清楚的包含的是
arch/arm/kernel/head.S文件,arch/arm/kernel/vmlinux.lds文件
内核编译日志中包含如下2条语句了。
AS arch/arm/kernel/head.o
LDS arch/arm/kernel/vmlinux.lds
请问下arch/arm/boot/compressed/head.S是内核运行的第1个文件么?
请知道帮我解答下,万分感谢。
作者:
penguin
时间:
2019-9-9 10:09
楼主再认真看看那位博主的博客,写的挺详细了。
第一部分:汇编部分
Linux启动之linux-rk3288-tchip/kernel/arch/arm/boot/compressed/ head.S分析
这段代码是linux boot后执行的第一个程序,完成的主要工作是``解压内核``,然后跳转到相关执行地址。这部分代码在做驱动开发时不需要改动,但分析其执行流程对是理解android的第一步
第二部分:汇编部分
Linux启动之linux-rk3288-tchip/kernel/arch/arm/kernel/head.S
整个代码流程如下:
当解压缩部分的head.S执行完后,就开始执行kernel/目录下``真正的linux内核代码``。在内核连接文件/kernel/vmlinux/lds里定义了这部分开始所处的段空间为.text.head,也即内核代码段的头
作者:
helloLinux
时间:
2019-10-30 14:22
penguin 发表于 2019-9-9 10:09
楼主再认真看看那位博主的博客,写的挺详细了。
第一部分:汇编部分
知道了,谢谢。
欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/)
Powered by Discuz! X3.1