当前位置: 首页 > 编程日记 > 正文

Linux0.11内核引导启动过程概述

Linux0.11仅支持x86架构。它的内核引导启动程序在文件夹boot内,共有三个汇编代码文件。按照启动流程依次是:

(1)bootsect.s。boot是启动引导的意思,sect即sector,是扇区的意思,二者合在一起启动引导扇区。这是磁盘引导程序
(2)setup.s
(3)head.s
前两个汇编程序采用近似Intel的汇编语言语法,第三个采用GNU的AT&T语法。必须采用相应的编译器才能进行编译。
系统上电后,Intel的CPU自动进入实模式,CS:IP=FFFF:0000,也就是说CPU在上电或者复位时总是执行物理地址0xFFFF0处的代码。这个地址默认是ROM-BIOS中的地址,在嵌入式系统来说,这里存放的是一级bootloader的执行代码。它完成的操作就是执行系统自检,在物理地址0x00000处开始初始化中断向量表。最后,将启动盘的第一个扇区(0磁道,0磁头,引导扇区)装载到物理地址0x07C00处,并且跳转到这里开始执行此处的代码。而此处代码的作用是将自己移到物理地址0x90000处,因为第一个扇区的代码共512KB=0x0200,所以复制过去的范围就是0x90000-0x901FF。然后,把启动设备中第二个扇区开始的连续4个扇区共2KB代码(setup.s)读入到物理地址0x90200处,内核的其他部分(system模块)则被读入到物理地址0x10000处。因为当时system模块的长度不会超过0x80000字节大小,所以不会覆盖0x90000处开始的bootsect和setup模块。装入完成后,控制转向setup.s。
setup.s首先设置一些硬件设备,然后将内核文件从0x10000处移至0x00000处。系统转入保护模式,执行0x00000处的代码。内核文件的头部是用汇编语言编写的代码,即head.s。
head.s会把IDT(中断向量表)、GDT(全局段描述符表)、LDT(局部段描述符表)的首地址装入到相应的寄存器里,初始化处理器和协处理器,设置好分页,最后调用init/main.c中的main()程序。
这个流程跟嵌入式系统中的bootloader要完成的功能是一致的。在AT91RM9200上移植U-boot时,也是要有三个文件load.bin、boot.bin、u-boot.bin。它们共同点都是先从上电起始位置(硬件设置)跳转到ROM的一级bootloader处,经过处理,跳转到二级bootloader处。完成引导,就可以启动内核,挂载文件系统了。下面的工作是详细分析三个汇编程序完成的工作,对整个启动过程有进一步的了解。以后还要研究一下AT91RM9200的bootloader部分,争取自己写一个比较简单的bootloader。

相关文章:

用Python分析5000+抖音大V,粉丝最喜欢的视频类型是它

作者 | 小F来源 | 法纳斯特头图 | CSDN下载自视觉中国最近,小F在知乎上看到一个关于抖音的问题。里面提到了,目前我国人均每天刷短视频110分钟。看这数据,看来小F又被平均了。不过老实说,只要一打开抖音,小F确实是有一…

JSTL 读取数组 和 字符串连接

2019独角兽企业重金招聘Python工程师标准>>> JSTL读取数组&#xff1a; 从后台取得一个字符串&#xff0c;如&#xff1a;AA-50-3&#xff0c;通过-划分成字符串数组。然后读取每个字符串。 <c:set var"cle" value"${fn:split(AA-50-3,-)}"…

《Photoshop Lab修色圣典(修订版)》—第1课1.7节言归正传

本节书摘来自异步社区《Photoshop Lab修色圣典(修订版)》一书中的第1课1.7节言归正传&#xff0c;作者【美】Dan Margulis,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.7 言归正传Photoshop Lab修色圣典(修订版)上面的讨论说明&#xff0c;与其他方法相比&#x…

PHP获取当前时间差8小时的问题

<?php echo date("Y-m-d H:i:s"); //当前时间 ?> 这个方法获取的时间和标准时间差8小时&#xff1b;从php5.1.0开始&#xff0c;php.ini里加入了date.timezone这个选项&#xff0c;默认情况下是关闭的也就是显示的时间&#xff08;无论用什么php命令…

四连通,和八连通的详解(MATLAB)

转至&#xff1a;http://www.cnblogs.com/xiaojidan/archive/2012/08/20/2647261.html 功能&#xff1a;标注二进制图像中已连接的部分。语法&#xff1a;L bwlabel(BW,n) [L,num] bwlabel(BW,n) 其中BW为输入图像;N可取值为4或8表示连接四连通或八连通区域;NUM为找到的连通…

梅花桩上练真功,腾讯公布机器人移动技术探索新突破

出品 | AI科技大本营11月20日&#xff0c;腾讯公布了其在移动机器人研究方面的新进展&#xff1a;四足移动机器人 Jamoca 和自平衡轮式移动机器人首次对外亮相。Jamoca 是国内首个能完成走梅花桩复杂挑战的四足机器人&#xff0c;自平衡轮式移动机器人的相关研究成果还入选了机…

《Redis入门指南(第2版)》一第2章 准备

本节书摘来异步社区《Redis入门指南&#xff08;第2版&#xff09;》一书中的第2章&#xff0c;作者&#xff1a; 李子骅 责编&#xff1a; 杨海玲&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 第2章 准备 Redis入门指南&#xff08;第2版&#xff09;“…

深度学习中的注意力机制(二)

作者 | 蘑菇先生 来源 | NewBeeNLP目前深度学习中热点之一就是注意力机制&#xff08;Attention Mechanisms&#xff09;。Attention源于人类视觉系统&#xff0c;当人类观察外界事物的时候&#xff0c;一般不会把事物当成一个整体去看&#xff0c;往往倾向于根据需要选择性的去…

DataGrid列操作

DataTable检测是否存在某个DataColumn 1.if (dt.Columns.Contains("aa") true){ //存在aa} 2.foreach(DataColumn mDCol in dt.Columns) { if(mDCol.ColumnName"aa") { //存在aa } } 怎么样移除DataGrid列private void OnDataBound(object send…

【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...

HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件&#xff0c;组件代号为 HP-Socket。现在把 HP-Socket 的所有代码向大众公开&#xff0c;希望能对大家有所帮助&#xff1b;另外&#xff0c;为了让大家能更方便的学习 HP-Socket&#xff0c;因此…

【数据库优化专题】MySQL视图优化(一)

本期数据库优化专题分享&#xff0c;为大家带来的是DBA社群MySQL领域原创专家——李海翔所著的MySQL视图优化系列文章。以下是第一部分的内容&#xff0c;未完部分敬请关注后续更新。 专家简介 李海翔 网名&#xff1a;那海蓝蓝 DBA社群MySQL领域原创专家 从事数据库研发、数…

使用Repeater的Template

.NET FX提供了一个方法,就是使用Template来在程序运行时对Repeater的显示进行控制. 这里我就不多说了,可以去看MSDN中的相关资料.(嘿嘿,其实我也没搞多少 )..其实主要是private void lc_DataBinding(object sender, EventArgs e)函数,在DataSource中的数据进行Bind的时候,每Bin…

获取文件最后修改时间的VC代码

作者&#xff1a;朱金灿来源&#xff1a;http://blog.csdn.net/clever101很多时候我们需要知道系统是什么时候编译生成的。我想到的一个直接的思路的是获取exe文件的最后修改时间。下面的一段代码可以做到这一点&#xff1a;CWinApp* pApp AfxGetApp();std::string strAppName…

BAT新风向标:程序员有福利了!

人工智能已成为新时代的风向标&#xff0c;如果你是对人工智能感兴趣的互联网工作者、大学生、研究生并期望在 AI 方向发展&#xff0c;建议你一定要深入学习一下人工智能。因为&#xff0c;未来将是人工智能的时代&#xff01;为什么会有这个判断呢&#xff1f;第一&#xff0…

《C++代码设计与重用》——1.2 重用的神话

本节书摘来自异步社区出版社《Imperfect C中文版》一书中的第1章&#xff0c;第1.2节&#xff0c;作者&#xff1a; 【美】Martin D.Carroll , Margaret A.Ellis&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 重用的神话 C代码设计与重用1.2 重用的神…

控件的呈现方法(Rendering)的内核

Asp.net中所有的控件都是从System.Web.UI.Control类,在control类中定义了三个与呈现有关的方法,分别是Render方法,RenderChildren方法和RenderControl方法.其中RenderControl方法是public的方法,先看看这三个方法的实现: Public void RenderControl(HtmlTextWriter writer) {//…

清华、北大教授同台激辩:脑科学是否真的能启发AI?

作者 | 高卫华出品 | AI科技大本营头图 | CSDN下载自视觉中国广义的智能科学是研究智能背后的科学&#xff0c;需要不断扩展科学研究范围&#xff0c;没有最后的疆域。但脑在几千年内的进化中都相对静止&#xff0c;因此脑科学是“自然科学最后的疆域”。脑科学是一个重要的研究…

CentOS 5 升级mysql5.1启动服务时报错

CentOS 5 升级mysql5.1启动服务时报错&#xff1a; [ERROR] Error message file /usr/share/mysql/english/errmsg.sys had only 481 error messages, but it should contain at least 641 error messages.解决方法是&#xff1a;1.mv /usr/share/mysql/english/errmsg.sys /us…

《JavaScript设计模式》——11.2 一切只因跨域

本节书摘来自异步社区《JavaScript设计模式》一书中的第11章&#xff0c;第11.2节&#xff0c;作者&#xff1a;张容铭著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 11.2 一切只因跨域 “哦&#xff0c;为什么会出现&#xff0c;什么是跨域&#xff1f;…

程序员:我不学Python了!!

总学不会Python的原因&#xff0c;归根结底只有一个——学习方法不对。 作为一个唯一将易用性与功能取得平衡的编程语言&#xff0c;无论是编程新手还是多年经验的BATJZ技术大牛&#xff0c;都无可否认如今Python对于一个程序员职业发展的重要性。 所以&#xff0c;你现在能在网…

Javascript Tip(1) 操作剪贴板

javascript可以轻松操作客户端剪贴板内容&#xff0c;不过只适用IE5以上浏览器 javascript可以使用window.clipboardData对象处理剪贴板内容 保存到剪贴板的方法 setData(param1, param2) param1 :数据类型 text 或 URL等. param2 :数据内容 从剪贴板读出数据的方法 getdata(p…

MySQL 自增ID

http://hi.baidu.com/517898291/item/9cac18066030cac6905718e0 http://jiangshuiy.iteye.com/blog/751060 Sina 转载&#xff1a; MySQL: Get next AUTO_INCREMENT value from/for table Note to self: To get the next auto_increment value from a table run this query: SE…

《算法基础:打开算法之门》一1.5 拓展阅读

本节书摘来自华章出版社《算法基础&#xff1a;打开算法之门》一书中的第1章&#xff0c;第1.5节&#xff0c;作者 &#xff3b;美&#xff3d;托马斯 H 科尔曼&#xff08;Thomas H Cormen&#xff09;&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.…

Python画出心目中的自己

作者 | 李秋键责编 | 晋兆雨头图 | CSDN下载自视觉中国引言&#xff1a;人脸图像的生成在各个行业有着重要应用&#xff0c;例如刑事调查、人物设计、教育培训等。然而一幅逼真的人脸肖像&#xff0c;对于职业画家也要至少数小时才能绘制出来&#xff1b;对于从未接触过绘画的新…

认识 PHP 的hash函数

Hashing function (散列函式) 在网页应用中被广泛采用&#xff0c;从数码签署、错误检测、登入验证、到压缩储存空间&#xff0c;由于它的原理比较复杂&#xff0c;很多人把它跟加密函式混淆&#xff0c;对于如何运用hash function&#xff0c;如何选择合适的hash function&…

const在函数前与函数后的区别 [转]

[转] http://blog.csdn.net/clozxy/article/details/5679887 一 const基础 如果const关键字不涉及到指针&#xff0c;我们很好理解&#xff0c;下面是涉及到指针的情况&#xff1a; int b 500; const int* a &b; [1] int const …

《HTML5游戏编程核心技术与实战》——2.8 小结

本节书摘来自异步社区《HTML5游戏编程核心技术与实战》一书中的第2章&#xff0c;第2.8节,作者&#xff1a; 向峰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 小结 本章介绍了canvas的一些常用的操作&#xff0c;作为HTML5的最重要的特性&#xff0c;canvas使得…

IANA保留地址

IANA 就是指(Internet Assigned Numbers Authority) &#xff0c;Internet号分配机构。负责对IP地址分配规划以及对TCP/UDP公共服务的端口定义。国际互联网代理成员管理局&#xff08;IANA&#xff09;是在国际互联网中使用的IP 地址、域名和许多其它参数的管理机构。IP地址、自…

张亚勤世界互联网大会谈AI:将变革传统行业,催生新业态

11月23日至24日&#xff0c;一年一度的世界互联网大会互联网发展论坛如期召开。全球疫情冲击下&#xff0c;科技创新成为了海内外共同关注的焦点。其中&#xff0c;人工智能作为新一轮科技革命和产业变革的重要驱动力量&#xff0c;同样饱受关注。 在24日上午的"人工智能…

如何通过参数来切换图表和数据

在报表设计的过程中有时候我们想在一张报表中既可以看到数据又可以看到图表&#xff0c;但是如果把数据和图表放在同一页面中似乎不太美观&#xff0c;所以我们可以用参数来控制是要显示数据还是显示图表。下面来看看如何实现通过参数来切换图表和数据 设计一张既有数据又有图表…