无名商城论坛

搜索
查看: 240|回复: 0

[其他技术] 【技术分享】linux arm32启动代码分析

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 16:54:37 | 显示全部楼层 |阅读模式

话不多说 直接开更[滑稽][心碎]
(其实也没啥说的[狂笑])

linux arm32启动代码分析
首先将 linux kernel 代码编译好以后,在目录 arch/arm/kernel 下生成链接脚本文件 vmlinux.lds (vmlinux.lds由vmlinux.lds.S编译而来)。首先分析此脚本来熟悉 linux kernel 二进制代码分布结构。

在 vmlinux.lds.S 中

ENTRY(stext)
1
指明了linux内核入口,入口为stext。符号stext定义在 arch/arm/kernel/head.S 文件中:

        .arm

        __HEAD
ENTRY(stext)
ARM_BE8(setend        be )                        @ ensure we are in BE8 mode

THUMB(        adr        r9, BSYM(1f)        )        @ Kernel is always entered in ARM.
THUMB(        bx        r9                )        @ If this is a Thumb-2 kernel,
THUMB(        .thumb                        )        @ switch to Thumb now.
THUMB(1:                        )

ENTRY在 include/linux/linkage.h 中定义

#ifndef ENTRY
#define ENTRY(name) \
        .globl name ASM_NL \
        ALIGN ASM_NL \
        name:
#endif
继续楼层更新[狂笑]
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表