Firefly开源社区

打印 上一主题 下一主题

[Linux] RK3288内核运行的第一个文件是哪个

59

积分

0

威望

0

贡献

技术小白

积分
59

RK3288内核运行的第一个文件是哪个

发表于 2019-9-7 18:22:57      浏览:3830 | 回复:2        打印      只看该作者   [复制链接] 楼主
通过查看顶层的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个文件么?

请知道帮我解答下,万分感谢。
回复

使用道具 举报

781

积分

2

威望

4

贡献

技术大神

Rank: 3Rank: 3

积分
781
发表于 2019-9-9 10:09:32        只看该作者  沙发
楼主再认真看看那位博主的博客,写的挺详细了。

第一部分:汇编部分

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,也即内核代码段的头
回复

使用道具 举报

59

积分

0

威望

0

贡献

技术小白

积分
59
发表于 2019-10-30 14:22:44        只看该作者  板凳
penguin 发表于 2019-9-9 10:09
楼主再认真看看那位博主的博客,写的挺详细了。

第一部分:汇编部分

知道了,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表