自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 第七步 实现打印函数

现在接力棒意见交到内核手中啦,只不过我们的内核现在可谓是一穷二白啥都没有,为了让我们设计的内核能被看见被使用,那首先就得有在屏幕输出信息的能力。因此,我们就先来实现打印函数,它的功能就是在屏幕上输出字符信息。

2024-05-24 22:31:53 912 1

原创 第六步 设计我们的LOADER——加载内核

我们在前面利用LOADER进入了保护模式、开启了分页机制,如今也到了它交出控制权的时候了,接下来我们将完善LOADER,看看它是如何将控制权交给内核的。

2024-05-22 00:00:06 856

原创 第五步 设计我们的LOADER——开启内存分页机制

现代 CPU 都采用的虚拟内存空间技术,其功能是依靠硬件实现的,但是它所需要的某些数据仍然需要我们进行设置,本章就来看看实现最简单的虚拟内存,我们需要做些什么。

2024-05-20 23:52:40 1000 1

原创 第四步 设计我们的LOADER——获取内存容量

我们在第三步 设计我们的LOADER——跨入保护模式已经知道了如何进入保护模式,但是我们其实还忘记了一件事,那就是获取物理内存的大小!这是为了后续开启分页机制做准备,具体的到时候再说,咱们先来看看如何获取物理内存大小。

2024-05-19 23:58:23 1306 1

原创 第三步 设计我们的LOADER——跨入保护模式

我们在第二步 完善MBR中简要介绍了一下什么LOADER,那么在这篇文章中简要介绍一下如何实现LOADER。

2024-05-18 07:26:44 1112

原创 x86 CPU的保护模式——全局描述符表(二)

在前一篇文章我们主要讲了一下保护模式和实模式之间的主要变化,在这篇文章中,我们主要讲一下保护模式下的寻址过程,也就是如何得到真实的物理地址。本文在好几个地方都提到了特权级或者系统段,这一部分知识和 GDT 关系不大,而且一两句话说不清楚,等到后面专门在讲解啦!持续更新中~~

2024-05-17 08:10:49 1198

原创 x86 CPU的保护模式——概述(一)

我们在前面已经介绍过实模式了,它是32位 CPU 的一种工作模式,模拟了16位 CPU 的工作环境,但是大多数时候 CPU 并不会处于实模式,而是保护模式,我们接下来看看实模式和保护模式有什么区别。

2024-05-16 09:28:20 804

原创 第二步 完善MBR

在上一篇文章第一步 从启动BIOS开始中,我们介绍了BIOS系统,知道了它只负责做一些硬件检测和初始化的工作,然后控制权就到MBR手中了,那我们这一节就来介绍一下MBR是什么,又有什么作用叭!MBR也叫做“ 主引导程序 ”,从名字不难看出,它是主要的引导程序。引导的程序就是“ 次引导程序 ”,可以叫做“ 内核加载器 ”,总的来说就是加载内核也就是操作系统的程序。也就是MBR并不加载操作系统,其原因在于有时候我们希望计算机可以在不同的分区使用不同的操作系统,所以MBR。

2024-05-15 13:17:58 839

原创 x86 汇编如何控制硬盘?

CPU 要想控制硬盘,就必须要通过硬盘控制器,本文只介绍最基础的使用,以满足《操作系统真象还原》一书中的需要,更详细的内容请参考ATA手册。CPU 要控制的硬件非常多,不可能为每个硬件都设计专门的电路,所以需要一个通用的方法来操作硬盘,因此,硬盘控制器就诞生了。它作为CPU与硬盘间中转站,不仅有帮助CPU控制硬盘的作用,还有缓存的作用,用来解决CPU和硬盘速度不一致的问题。硬盘控制器属于I/O接口,因此我们需要通过读写硬盘控制器的端口,以此来操作硬盘控制器,完成我们的读写需求。

2024-05-14 07:18:15 841 1

原创 x86 文本模式显示适配器

本文介绍了如何在文本模式下在显示器上打印字符。

2024-05-13 00:32:03 341

原创 x86 CPU的实模式——内存布局(四)

在实模式下,CPU一共有20根地址线,故最多可寻址1MB大小的内存,虽然看起来非常小,但实模式下需要做的事也不多,接下来我们看看实模式下CPU是如何利用这1MB的空间。

2024-05-12 14:21:54 261 1

原创 x86 CPU的实模式——调用与跳转(三)

在上一节x86 CPU的实模式——寻址(二)中,我们介绍了如何获取数据,但是光有数据没有什么用,还要有代码才行。我们知道在内存中有非常多少代码段,它们互相配合共同为我们提供各种各样的服务,接下来我们来看看如何将这些代码段联系起来。这一节的东西非常多,但还是有有一些规律的,不过大多数时候,不会全部用到的,记住一些常用的,就足够啦!持续更新~~

2024-05-11 21:53:01 1365 1

原创 x86 CPU的实模式——寻址(二)

在前一节CPU的实模式——寄存器(一)中,我们已经介绍了8086常用的寄存器,也知道了寄存器的主要作用就是为了给CPU提供计算的数据,为了找到数据并传递给CPU,那么就必须要设计一套规则,这套规则就是寻址方式,接下来一起看看8086 CPU有哪些寻址方式。总的来说8086 CPU的寻址方式并不复杂,反而很简单很固定,缺少变通,这是由于硬件设计原因导致的,不过只要一到保护模式,一切都不一样咯。持续更新~~

2024-05-10 15:22:16 479 1

原创 x86 CPU的实模式——寄存器(一)

x86系列CPU在诞生之初是16位,而如今16位的CPU已经成为历史,但CPU的发展是兼容的,也就是说即便是32位的CPU也应当能完成16位CPU的功能,因此,实模式就是指8086这款划时代的CPU的工作环境、工作方式、工作状态、寻址方式、寄存器、指令用法等等。上面已经介绍完8086 CPU的常用寄存器啦,其它没有介绍的寄存器就留到保护模式啦!持续更新~~

2024-05-09 17:31:09 649 1

原创 第一步 从启动BIOS开始

当我们按下电源键,我们电脑第一个运行的软件就是BIOS,即基本输入输出系统。很显然它并不是我们电脑上的操作系统,它的工作是检测、初始化硬件,确认一切没有问题,BIOS会将控制权交给MBR(主引导记录),然后它的使命就结束了。

2024-05-08 20:22:29 661

原创 第四章 ARM汇编程序设计入门(二)

本节主要举一些简单的例子,加深对ARM汇编编程的理解。

2024-05-07 16:08:54 980

原创 第四章 ARM汇编程序设计入门(一)

GBLA伪指令用于定义一个全局的数字变量,并初始化为0;GBLL伪指令用于定义一个全局的逻辑变量,并初始化为F(假);GBLS伪指令用于定义一个全局的字符串变量,并初始化为空;GBLA ( GBLL 或 GBLS ) 全局变量名定义一个全局的数字变量,变量名为NumberGBLL Flag;定义一个全局的逻辑变量,变量名为FlagLCLA伪指令用于定义一个局部的数字变量,并初始化为0;LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);LCLS伪指令用于定义一个局部的字符串。

2024-05-06 17:24:09 1427 1

原创 第三章 ARM指令集

ARM指令的基本格式如下:其中<>号内的项是必须的,{ }号内的项是可选的。各项的说明如下:opcode:指令助记符;cond:执行条件;S:是否影响CPSR寄存器的值;Rd:目标寄存器;Rn:第1个操作数的寄存器;operand2:第2个操作数;形式1:#immed_8r——常数表达式MOV R0,#1;R0 ←1R2与0x0F,结果保存在R1先将R1指向内存中的数存入R0之后,;传送完成后 R1← R1-4,后变址形式2:Rm——寄存器方式R1-R2→R1。

2024-05-05 23:19:54 1370 4

原创 第二章 ARM体系结构

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM处理器支持Thumb(16位)和ARM(32位)双指令集,大多数数据操作都在寄存器中完成,并且指令长度固定、寻址方式灵活简单,指令执行速度更快、效率更高。

2024-05-04 23:43:42 841

原创 第一章 嵌入式系统概述

以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。

2024-05-04 15:04:40 865

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除