笔记本开机原理

从按下开机键开始,机器是如何开到OS的呢?今天这篇文章和大家极少EC-BIOS-OS的整个开机流程。首先大家要对笔记本的基本架构有所了解,基本架构如下图所示(主要组成部分为大写黑体内容)。

在这里插入图片描述
一、按下PowerButton按钮,首先是最底层的ec芯片会侦测到开机按钮的变化,然后开始跑上电时序G3-S5,S5-S0,如下图所示这是个EC开机时序,我只截取了S5-S0的代码

在这里插入图片描述

二、以Intel平台为例,如果ec开机时序完整执行完后,且CPU的PLT_RST_N信号Assert后,才开始轮到BIOS执行代码。对于BIOS工程师而言,大家都知道BIOS Post 过程无非分为SEC-PEI-DXE-BDS-TSL五个阶段,但是ec时序跑完到SEC阶段,乃至于SEC阶段的代码是怎么执行的呢?其实CPU刚启动的时候,它是从BIOS ROM 中执行的代码,CPU为了找到它,硬件进行了一系列转换工作,这个过程也就是Shadow(映射)。

在这里插入图片描述
具体来讲,再CPU上电的时候Programmable Attribute Map(PAM) 寄存器缺省值会把0xD0000到0xFFFFF 的“内存decode”消息传递给DMI,同样也会把0XFFFD0000-0xFFFFFFF的Memory Decode传递给DMI ,这段内存区间也可以称为Reset Vector 。注意看红色虚线Core1作为BSP(仅举例),它在PAM范围内Memory Dcode 会转给DMI,再通过DMI总线传递到南桥PCH,PCH会把MemoryDecode 的消息传递给SPI Contorller,它会把它翻译成SPI的封包放到SPI总线上;然后从BIOS ROM中读到数据源后再原路返回给到CPU
这种操作,对Core1来说是透明的,它在Reset Vector 上开始运行程序和在普通内存上并没有什么不同,只是速度慢些。需要强调的是,保存BIOS的Flash,是一块NOR Flash,它是支持字节寻址的,可以“原地执行代码”,而不需要加载到某块内存中执行。因为其实这个时候,内存还没有进行初始化,所以这一特性很重要。
总结起来就是如下几点
1、CPU上电后,内核Core需要Reset Vector的代码,它把该地址放到地址总线上。
2、memory Decode的这块空间通过DMI总线发送给南桥
3、南桥的SPI控制器缺省decode这块地址空间,通过SPI总线问FLASH芯片索要内容
4、SPI芯片响应请求,返回内容。
5、SPI控制器相应请求,当二传手返回内容。
6、DMI控制器,当三传手返回内容。
7、CPU内核收到指令,开始解码执行。

这样一个64B的信息有了,直到运行下一个64B,循环往复。可以看到的是并没有人加载整个BIOS,而是一点点通过地址decode慢慢运行的,这个过程叫做Shadow。然后就是大致了解下BIOS的如下几个阶段的具体作用。

在这里插入图片描述
三、加载OS
值得了解MBR分区是什么

在这里插入图片描述

主引导记录位于磁盘的第一个逻辑区、即LBA0位置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

参考文章添加链接描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

说下你对Spring IOC 的理解

总结:IOC是一个容器,用来管理对象之间的依赖关系。 控制反转,依赖注入--->注入的方式。。。 说下你对Spring IOC 的理解 1. Spring IOC是一个管理对象之间依赖关系的容器,它实现了依赖注入技术,可以解决传统的紧耦…

人工智能发展历程了解和Tensorflow基础开发环境构建

目录 人工智能的三次浪潮 开发环境介绍 Anaconda Anaconda的下载和安装 下载说明 安装指导 模块介绍 使用Anaconda Navigator Home界面介绍 Environment界面介绍 使用Jupter Notebook 打开Jupter Notebook 配置默认目录 新建文件 两种输入模式 Conda 虚拟环境 添…

酷开会员丨酷开系统K歌模式,父亲节的家庭欢聚时光

K歌以其独特的魅力,为家庭娱乐带来了无限乐趣。想象一下,父亲节这天,打开电视进入K歌频道,与家人一起嗨唱,客厅里充满了欢声笑语,酷开系统的K歌应用也就成为了连接亲情的桥梁,让爸爸们都能在这个…

STM32面试题

STM32面试题通常涉及STM32微控制器的特性、功能、应用以及编程知识。以下是一些可能的面试问题: STM32微控制器的基本介绍: STM32微控制器是由哪家公司生产的?STM32微控制器主要应用于哪些领域?STM32的特性和功能: STM32微控制器有哪些主要特性?请描述STM32的GPIO(通用输…

SQL join和EXISTS效率

先看两个查询,查询目的是在a表中找出b表出现的vid 1.join查询 select a.vid, a.attach_url, a.attach_url_type, a.create_time from ods_truck.tl_vehicle_attach_log ajoin (select distinct vidfrom ods_truck.tl_truck_log_20240613where oprater in (remove,…

Nvidia芯片Jetson系列 系统烧录环境 搭建

一、序言 Jetson 系列产品烧录系统的方法一般有两种: 一种为使用 NVIDIA 官方提供 的 SDK manager 软件给 Jetson 设备烧录系统(请查看说明文档《Jetson 产品使用 SDKmanager 烧录系统》)。 另一种即为当前文档所描述的,在安装 Ub…

基于SSM+Jsp的旅游景点线路网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

开源新纪元:ChatTTS——引领对话式文本转语音的新潮流

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

好用的库函数,qsort函数大详解(干货满满!)(进阶)

前言: 小编在上一篇文章说了这一篇将要写qsort函数的模拟实现,那么废话不多说,现在开始进入今天的代码之旅喽! 目录: 1.qsort函数的模拟实现的逻辑和思路 2.qsort函数模拟实现的代码实现 3.代码展示 1.qsort函数的模…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第41课-动态添加3D对象

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第41课-动态添加3D对象 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

2.华为配置静态路由

通过配置静态路由让PC1和PC2互通 AR1 [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [Huawei]int g0/0/1 [Huawei-GigabitEthernet0/0/1]ip add 1.1.1.1 24 [Huawei]ip route-static 192.168.2.0 24 1.1.1.2AR2 [Huawei]int g0/0/0 [Huawei-Gig…

【Android面试八股文】讲一讲String、StringBuffer和StringBuilder在进行字符串操作时候的效率

文章目录 一、String二、StringBuffer三、StringBuilder四、String、StringBuffer和StringBuilder的效率测试五、String、StringBuffer和StringBuilder的选择一、String String是不可变的,final修饰,任何对String的操作都会创建一个新的String对象。在进行大量字符串拼接或修…

盘点有趣的人工智能开源项目一

字幕导出 zh_recogn是一个专注于中文语音识别的字幕生成工具,基于魔塔社区Paraformer模型。它不仅支持音频文件,还能处理视频文件,输出标准的SRT字幕格式。这个项目提供了API接口和简单的用户界面,使得用户可以根据自己的需求灵活…

前端面试题日常练-day72 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Sass中,以下哪个关键字用于定义一个占位符选择器,以便在后续使用时进行扩展? a) placeholder b) extend c) mixin d) import Sass中的函数(Function&…

GitLab、jenkins

Gitlab服务器:192.168.10.20 jenkins服务器:192.168.10.30 web应用服务器:192.168.10.100 通过容器部署gitlab: 安装容器管理软件podman 修改主机的22端口,该gitlab软件包中会使用到该端口 gitlab容器需要使用/etc/res…

一二三应用开发平台应用开发示例(3)——生成库表及后端代码

生成库表 前端页面的配置,也就是视图功能,我们先放一放,来看看生成库表和后端代码。 关闭实体配置界面,回到实体列表,勾选“文件夹”实体,点击“生成库表”,并确定。 系统提示成功后&#xff…

【每天学会一个渗透测试工具】dirsearch安装及使用指南

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨dirsearch介绍 dirsearch安装包百度网盘 disearch是基于Python开发的,因此需要确保你的系统中已经安装了pyth…

vscode连接ssh远程服务器

当使用Visual Studio Code (VSCode) 连接SSH远程服务器时,可以遵循以下步骤。这些步骤将帮助你设置并连接到远程服务器,包括免密登录的设置(如果需要)。 一、安装并配置Remote-SSH插件 下载并安装VSCode:确保你已经下…

flstudio怎么调中文

FL Studio设置中文的步骤如下: 打开FL Studio:首先,需要打开FL Studio编曲软件。 进入常规设置:在软件顶部菜单栏中,选择“OPTIONS”,然后点击“General setting”,进入常规设置窗口。 切换语言…