分析环境reactos0.3.1 ,i386体系]
freeldr 主引导阶段
进入freeldr的主引导函数后,freeld会做些什么工作呢?前期的有个疑问,就是在arch.s中包含了打开I386的A20地址总线功能的函数(标签)_EnableA20,但是在切换成保护模式时没有调用这个函数(标签)记得在 《80x86汇编语言程序设计教程》里说过打开A20地址总线和是否切换到保护模式没有关系,但是在看arch.s这里的代码时还是觉得有点奇怪,既然都切换到保护模式为什么不打开A20,不过在MachInit()中发现了答案...(PcMachInit即i386机器的初始化)言归正传,稍后在说
freeldr 进入BootMain后主要完成以下工作
- 处理命令行参数
- 初始化机器类型
- 调试初始化
- 初始化内存管理单元
- 进入多系统引导控制
Freeldr.c该文件位于 (srcroot\boot\freeldr\freeldr)
VOID BootMain(LPSTR CmdLine)
{
CmdLineParse(CmdLine);
MachInit(CmdLine);
DebugInit();
DbgPrint((DPRINT_WARNING, "BootMain() called.\n"));
if (!MmInitializeMemoryManager())
{
printf("Press any key to reboot.\n");
MachConsGetCh();
return;
}
RunLoader();
}
(额外话,freeldr有自己的内存管理、文件管理、后面还有一个可执行文件的装载器,也许还有其它一些什么管理,现在还不知道,要是在搞个简单的进程管理,设备管理岂不是自己就可以是一个简单的操作系统了!在把那个microwindows(一个单任务的嵌入式图形用户界面)也搞进去岂不是也可以是一个很简单的窗口系统,作为嵌入式系统使用。)
[如需转载请注明出处:(雄)blog.csdn.net/mickey139]