MSTR10总结

本文详细介绍了MSTR,一个来源于《自己动手写嵌入式操作系统》的项目,包括BootSect.bin、RealInit.bin、MiniKer.bin和Master.bin四个部分。MSTR通过软盘加载,BootSect.bin负责加载其余部分到内存,RealInit.bin初始化硬件,MiniKer.bin建立内存管理和多线程环境,最后Master.bin运行。系统包含了键盘驱动、显示驱动,并实现了多线程、中断处理和设备管理,但缺乏进程和存储保护机制。
摘要由CSDN通过智能技术生成

      MSTR是《自己动手写嵌入式操作系统》的源码,又名"Hello China"。MSTR包括BootSect.bin、RealInit.bin、MiniKer.bin和Master.bin四部分。MSTR的加载设备为软盘,但是没有设计软盘格式,镜像的加载都是直接从固定扇区中加载的。

      BootSect.bin为512字节,固化在软盘的启动扇区。它首先将自身从0x07c0移动到0x9f00,然后跳转到新映像的相关位置开始执行。先显示相关信息,然后将RealInit.bin、MiniKer.bin和Master.bin三部分载入内存。这三部分保存在软盘中,从第三扇区开始(第二扇区保留),将被原样加载到其实位置为0x1000的内存区域。加载完毕后跳转到RealInit.bin处开始执行。

      RealInit.bin显示相关信息后,开始初始化CRT、KEYBOARD、DMA、8259、CLOCK和系统参数。然后开启20号地址线,装载gdt,显示相关信息,关中断,进入保护模式。然后跳转到MiniKer.bin处开始执行。目前对硬件的初始化保留未用,默认的gdt有两个——4GB的平坦代码段和4GB的平坦数据段。

      Miniker.bin首先将自身和Master.bin从0x2000搬运到0x100000处(由于此时20号地址线已开,可以访问到0x100000以上的内存了)。然后装载新的gdt,它的所有段都是平坦模式的,包括代码段、数据段、堆栈段、附加段和视频段。接着初始化相关的段寄存器,填充相关的idt并装载,然后初始化8259a,开中断,最后跳转到Master.bin处开始执行。Miniker.bin中包含了一个显示驱动程序和一个键盘驱动程序,供Master.bin直接调用。

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值