文档章节

LiteOS-从bios到MBR引导代码

梦想游戏人
 梦想游戏人
发布于 2017/05/14 21:02
字数 356
阅读 118
收藏 0

 

启动步骤

1.BIOS 加电启动后,开始进入计算机启动流程

2.自检,该过程主要用于检查基本硬件故障,如内存,CPU等,该过程可以再BIOS设置里面关闭,自检通过后许多旧年代的主板会蜂鸣器 表示通过。

3.从BIOS配置的启动设备启动,可以是HDD 光驱,也可以是软盘。找到后开始读取MBR(主引导记录),这里就是关键了,

扇区开始的

第一段为:引导程序占用446个字节,并且引导程序第一段指令为org 7c00h,bios吧程序加载到0000:7c00处开始执行,为什么是这个值 http://blog.csdn.net/mirage1993/article/details/29908929  解释地清楚

第二段为分区表:16*4个字节

第三段为结束标示值为0xaa55 ,2字节

一共512字节。

4.加载引导程序

前面446字节记录着引导程序代码,

编写引导代码boot.asm

 


org 7c00h

mov ax, cs
mov es, ax 
mov ax, logo
mov bp, ax
mov cx, len
mov ax, 1301h
mov bx, 000fh
mov dl, 0
int 10h

logo: db "LiteOS 0.1 (c) 2013-2017 dreamyouxi.com"
len: equ $ - logo
times 510 - ($ - $$) db 0
dw 0aa55h

用masm工具 生成二进制代码  start nasm boot.asm -o boot.bin,生成的文件就是我们需要的512字节的MBR。

新建一个vm虚拟机 ,把设备文件设置为生成的BMR

运行

 

 

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 34
博文 422
码字总数 120151
作品 0
成都
Contiki、TinyOS、LiteOS、Nano-RK、t-Kernel的操作系统性能和利弊

来至SICS的权威比较分析报告。 报告中比较了Contiki、TinyOS、LiteOS、Nano-RK、t-Kernel的操作系统性能和利弊,对于广大的物联网研究者和应用开发者不无裨益。 http://www.smeshlink.com/a...

龙鸟
2012/09/22
0
0
物联网将呈爆发式发展,华为OceanConnect物联网平台连接海量设备

前不久全球5G标准的确立,对物联网产业来说是极大的推动力。经过前几年的技术发展,NB-IoT、eLTE、LoRa等市场相继启动。预计2020年,物联网连接数将到达300亿;2025年将达到近1000亿。其中,...

云科技时代
06/28
0
0
Chino 操作系统开发日志 (1) - 为 IoT 而生

引言 很多人都听说过 IoT (物联网)这个词,越来越多的人在装修时开始选择智能家居,很多人也购买智能音箱做智能家居控制,想必未来一定是 AI + 物联网的时代。 一种技术要发展并走向成熟必...

SunnyCase
08/22
0
0
华为沟通会:“吓人的”GPU Turbo技术核心思路公开

近两周围绕余承东口中“吓人的技术”GPU Trubo图形处理技术外界有着许多猜测与解读。基于此,华为召开了一场EMUI主题沟通会。从系统到新技术做了讲解。首先是数据上的一些分享,目前EMUI的日...

程序师
07/02
0
0
计算机如何启动(How Computers Boot Up)

How Comuputers Boot Up 计算机如何引导启动 前面的博文介绍了Intel计算机的底板芯片组与内存映射,为理解计算机引导初始过程打下了基础。引导是一个复杂的、多阶段的、有趣的“东西”。下面...

人生能绕几个圈
2013/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
31
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部