首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核学习(二)之head.S文件分析前期准备

大家好,今天我们来分享linux内核的工程建立以及一些我在工作当中使用source insight 经常会用的一些快捷操作;然后会分享一些有用的汇编指令,主要是经常会遇到的汇编指令,汇编指令没必要去专门学...,当你在看启动汇编代码的时候,只要稍微看的懂它的意思就行,因为在上班中,你很少去写汇编,我们只是用它分析,体会一下linux内核是如何启动的。...一、使用Sourc Insight 来建立一个linux工程: 1、为什么要使用SourceInsight: 对于一个真正的一个项目,往往有几十几百甚至上万个c文件、h文件,代码量非常大,代码之间关联非常复杂...在左侧选择选择kernel这个目录(这个是你放linux kernel的地方),然后点右侧边栏的add tree即可添加。...三、总结: 今天先暂时分享这么多汇编指令,主要是一些伪指令,明天会继续分享,先消化这些,慢慢来,不要急,为什么要分享这些汇编指令,这里主要是下次带大家分析head.S文件,同时也可以让大家熟悉一下汇编常用指令

90630
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux 考古笔记

    2 流程分析 2.1 引导内核阶段 2.2 内核启动阶段 2.3 init 进程启动 2.4 shell 命令执行 Linux0.11 考古笔记 最近读完《Linux 内核完全注释》和《品读 Linux0.11...核心代码》,大致理解下 Linux0.11 内核的全貌。...2 流程分析 根据《品读 Linux0.11 核心代码》这个专栏,它是按照系统启动到运行的时间顺序结合 Linux0.11 源码来展开的,我根据专栏的内容进行二次整理。...触发一个读磁盘的中断,通过 BIOS 的中断处理读取一些硬件参数到内存 0x9000 这个位置,然后将 system 模块重定位到 0x0000 地址,然后切换实模式到保护模式,最后跳转执行 system/head.s...4)head.s 程序 head.s 程序执行时,重新设置中断描述符表和全局描述符表,然后设置几个相关的段寄存器,然后启动内存管理的分页机制,最后跳转到 main 函数。

    1.1K30

    ARM Linux 启动时的自解压过程 | Linux 内核

    最近业余时间都在学习 Linux 内核和英语,或者是陪家人玩耍,没有投入太多的时间在文章。 今天起得比较早,就给大家翻译一篇 linus 的文章吧,大家可以感受一下大神的写作能力。...OK,Let's go. ---- ARM Linux 一般都使用压缩的内核,例如 zImage。 这样做有两个主要原因: 1、节省存放内核的闪存或其他存储介质的空间。...本文将对 ARM Linux 的自解压过程进行一个简单介绍。arch/arm/* 下的大多数机器都会使用压缩的内核,其自解压过程是一样的。...2002 年,Russell King 就在 Booting ARM Linux 文档中定义了 Booloader 引导 Linux 内核的 ABI。...zImage 的解压 如果使用的是压缩内核,则执行开始于 arch/arm/boot/compressed/head.S 中的 start 符号。出于遗留原因,它以 8 或 7 个 NOP 指令开头。

    2.9K10

    8分钟掌握Linux内核分析的核心科技

    作者: OUYANG_LINUX007 来源: http://blog.csdn.net/ouyang_linux007/article/details/7422346 Linux的最大的好处之一就是它的源码公开...保护模式下的初始化在内核源码中对应的程序是/Arch/i386/boot/compressed/head.S 和 /Arch/i386/KERNEL/head.S ;以下部分主要是针对这两个文件进行的分析...1.几个相关文件: /Arch/i386/boot/compressed/head.S /Arch/i386/KERNEL/head.S //Arch/i386/boot...> /include/i386/desc.h /include/asm-i386/processor.h 2.保护模式下的初始化过程分析: 一、/Arch/i386/KERNEL/head.S...流程: 二、/Arch/i386/boot/compressed/head.S流程: 1.从流程图中可以看到,保护模式下的初始化主要干了这样几件事: a.解压内核到0x100000处、

    1.5K50

    Linux学习笔记之Linux启动引导过程

    这就是 Linux 引导的整个过程。现在让我们深入挖掘一下这个过程,并深入研究一下 Linux 引导过程的一些详细信息。 系统启动 系统启动阶段依赖于引导 Linux 系统上的硬件。.../arch/i386/boot/head.S 的 start 汇编例程开始执行(主要流程图请参看图 3)。这个例程会执行一些基本的硬件设置,并调用 ..../arch/i386/boot/compressed/head.S 中的 startup_32 例程。.../arch/i386/kernel/head.S 中。 在这个新的 startup_32 函数(也称为清除程序或进程 0)中,会对页表进行初始化,并启用内存分页功能。...结束语 与 Linux 本身非常类似,Linux 的引导过程也非常灵活,可以支持众多的处理器和硬件平台。最初,加载引导加载程序提供了一种简单的方法,不用任何花架子就可以引导 Linux。

    10.5K41

    linux 编译汇编,linux下的汇编教程

    linux下的汇编教程 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。...基于ARM平台的工具分别为 arm-linux-as、arm-linux-gcc、arm-linux-g++、arm-linux-ld和arm-linux- objcopy。...分别用如下命令生成目标文件: arm-linux-gcc-c-O2-oinit.oinit.s arm-linux-gcc-c-O2-oxmrecever.oxmrecever.c arm-linux-gcc-c-O2...2.Makefile实例 example: head.s main.c arm-linux-gcc -c -o head.o head.s arm-linux-gcc -c -o main.o main.c...对于Linux内核的调试,可以采用kgdb工具,同样需要通过串口与上位机上的gdb通信,对目标板的Linux内核进行调试。

    3.5K31
    领券