嵌入式实际操作系统_第1页
嵌入式实际操作系统_第2页
嵌入式实际操作系统_第3页
嵌入式实际操作系统_第4页
嵌入式实际操作系统_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式实际操作系统基于i386体系结构的Linux启动代码分析Embedded Operating Systems3源代码来源加压缩后,建立SourceInsigt工程阅读linux目录下的README关于Linux的介绍该版本内核支持的体系结构如何配置、编译、安装Embedded Operating Systems4考虑Arch为i386在arch/i386下存在如下目录I386的启动源代码文件目录I386的核心源代码文件目录I386的库源代码文件目录I386的数学仿真源代码文件目录I386的内存管理源代码文件目录I386的配置文件I386的体系相关部分的MakefileI386的Linux

2、内核的链接描述文件Embedded Operating Systems5I386的启动代码文件在arch/i386/boot目录下在arch/i386/boot/compressed目录下I386的体系结构相关部分的启动代码都采用汇编码写的启动扇区中的启动代码,其目标码必然是512字节I386初始化内核解压缩Embedded Operating Systems6在arch/i386/kernel目录下的.S文件在init目录下32位启动代码这是体系结构无关部分,i386体系结构相关部分的启动,其目的就是进入中的start_kernel处执行Embedded Operating Systems7

3、阅读对于i386平台,由于一些历史的原因,因此Linux的启动比较复杂这个文档包含如下内容1、Linux/i386的启动协议(4个)2、内存布局图3、实模式下的内核头结构4、内核的命令行(command line)Embedded Operating Systems85、启动配置示例6、装载Linux的剩余部分7、特殊的命令行参数8、运行内核9、高级启动回调函数关于其中的一些内容,我们将在合适的时候说明Embedded Operating Systems9阅读顶层目录下的Makefile找到缺省目标链接Embedded Operating Systems10找到vmlinux找到vmlinux

4、所依赖的各个文件或者目标可以看到vmlinux包含如下内容+ CORE_FILES + DRIVERS+ NETWORKS + LIBSEmbedded Operating Systems11若make install在i386的Makefile中有install规则若make boot/bzImage/zImage等等,则要找到对应的目标然后进行make boot在顶层的Makefile中可以找到boot规则bzImage/zImage可以在i386的Makefile中找到相应规则其他的zXXX/bzXXX也都依赖于boot下的zImage/bzImage它们最终都找到i386/boot的M

5、akefileEmbedded Operating Systems12i386/boot的Makefile看i386/boot的Makefilez代表压缩;b代表大内核可见compressed下的vmlinux/bvmlinux为compressed/head.S + 压缩后的顶层目录下的vmlinuxzImage为bootsect + setup + compressed/vmlinuxbzImage为bbootsect + bsetup + compressed/bvmlinuxEmbedded Operating Systems13下面根据在bzImage/zImage中的顺序,我们依次

6、看启动相关的源代码和相关概念最后进入Embedded Operating Systems14I386内核的启动启动方式软盘启动硬盘启动软盘启动从开始运行在进入的源代码讲解之前,我们先看一下加载i386内核的内存布局图Embedded Operating Systems15硬件角度:I386实模式下的内存布局图RAM1-MBROM-BIOSVIDEO-BIOSVRAM0 xA00000 xC00000 xF00000 x00000Embedded Operating Systems16I386内核从实模式开始运行首先看一下什么是实模式 实模式是为了兼容早期的CPU而设置的 i386系统总是始于实

7、模式 实模式下 地址总线:20位 内存范围:01MB 逻辑地址 = 段地址 + 段内偏移段地址 = 段寄存器中的值*16 (或左移4位)段寄存器长度:16bitEmbedded Operating Systems17加载I386内核的内存布局图zImage/Image的内核加载器所使用的经典的内存布局(1M=0 x100000)为Embedded Operating Systems18软盘启动, 0 x7c000 x90000 0 x7c00, BIOS 0 x90000, lilo 堆栈,0 x3ff4(0 x4000-12), 向下增长 磁盘参数表,12Bytes,0 x3ff40 x40

8、00 显示“Loading” Setup0 x90200 系统 小内核,0 x10000(64KB处),低装载 大内核,0 x100000(1MB处),高装载 setupEmbedded Operating Systems19硬盘启动,两阶段引导装载LILO(LInuxLOader)第一个扇区装载LINUX0 x900000 x90200系统0 x100000 x100000跳转到setupEmbedded Operating Systems20启动第一步,小结总之,在跳转到setup的时候,内存里面的代码布局为0 x90000:bootsect0 x90200:setup低装载:0 x100

9、00:带解压的vmlinux高装载:0 x100000:带解压的bvmlinux 实模式下的内核头结构包括bootsect的最后和setup开始的位置从bootsect的偏移0 x1F1开始,具体描述参见Embedded Operating Systems21Setup:0 x90200 初始化硬件设备并为内核程序的执行建立环境 内存检测 键盘 视频 磁盘控制器 IBM微通道总线MCA PS/2设备(总线鼠标) APM BIOS 若低装载,将系统移动到0 x1000处(4KB处)否则,不必 临时IDT和临时GDT FPU PIC, 16个硬件中断中断向量3247 实模式保护模式 Startup

10、_32Embedded Operating Systems22 在和中都定义了startup_32 但是中,被压缩在vmlinux中还没有解压缩 只有的startup_32是可用的 zImage中,在0 x1000处 bzImage中,在0 x100000处Embedded Operating Systems23Startup_32初始化段寄存器和一个临时堆栈初始化BSS段解压缩高装载或低装载解压缩0 x100000(1MB)跳转到0 x100000处Embedded Operating Systems24解压缩后,vmlinux在0 x100000处根据,vmlinux的地址被链接为0 xc

11、0000000+0 x100000处如何正确运行呢?此时仍然是实模式,还没有进入保护模式、分页、映射好没有长跳转,只使用采用相对地址的近距离跳转Embedded Operating Systems25 Startup_32 初始化段寄存器 建立进程0的内核堆栈 Setup_idt 拷贝系统参数 识别处理器 GDT、IDT Start_kernelEmbedded Operating Systems26与内存相关的一些概念在实模式下,地址总线20位,访存范围为1MB,物理地址使用段址:偏移的方式表示段址保存在段寄存器中,段寄存器有:cs/ds/es/fs/gs16位寄存器,偏移也是16位,因此最

12、大段长为216=0 x10000=64KB物理地址= 段寄存器16+偏移Embedded Operating Systems27保护模式下,地址总线32位,访存范围为4GB原来的段寄存器现在被称作段选择子,与GDT表配合使用GDT表由gdtr指示其位置和长度使用特殊的指令进行操作:sgdt/lgdtEmbedded Operating Systems28图示descriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptordescriptorInterrupt Descriptor TableGlobal Descriptor TableGDTRIDTREmbedded Operating Systems29查看和中的gdt/ldt一般装载gdt和idt之后,要重新装载段寄存器cs、ds、es、fs、gscs通常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论