2010-11-09 169 views
0

我现在对我的项目有点困惑。我做了一些Google搜索,但无法找到能够正确解释我需要知道的答案。我之前发布了一个不同的问题,对此抱歉,但现在我更加困惑了。引导加载程序函数调用

对不起的重复问题,但通过各种来源阅读,我越来越困惑,我需要一个具体的路径,现在。 (太接近截止日期)

我有一个简单的引导程序(只需打印欢迎到操作系统现在)。遵循一个非常简单的教程。

我有一个shell代码,我可以做一个可执行文件/二进制文件(无论是需要的)。

我想从我的bootloader的ASM代码中调用该shell。我不想在两者之间加入一个内核。一个小小的研究告诉我,如果我的代码足够基本或者某种东西,就可以不使用内核作为媒介。 (我的shell非常非常基本,现在我们说它列出目录。)现在我有两个问题。

1)我是否需要编写一些键盘设备驱动程序才能使其工作? (我希望不是,)如果答案是肯定的,并且存在解决方法,请随时详细说明。

2)只是从我的ASM调用exe/binary会工作吗?就像我的引导程序启动一个打印的消息,说欢迎使用操作系统。如果我从该ASM代码调用我的shell,它会直接启动到shell中,还是我需要更多东西?我错过了什么?

回答

0

你的引导程序可以运行任何它想要的东西。通常,它用于启动操作系统,但没有理由不能启动你的shell。

但是,我不知道你的shell是否能胜任这个任务。它对输入有什么作用?它会对输出做什么?你提到了列表目录。你的shell是否知道如何读取硬盘上的文件系统?它知道如何访问硬盘吗?

使用操作系统有很多很好的理由。举一个例子:它提供了所有应用程序所需的通用服务,所以他们不必自己编写它。像磁盘,USB,键盘,视频和文件系统驱动程序。

当然,BIOS可能会为您提供对这些组件中的某些组件的最低限度访问权限。键盘I/O可能需要轮询I/O端口。同样适用于在文本显示器上打印字符。我不记得你如何访问磁盘,但它可能没有太大的差别。推测这些是在引导加载程序中已经解决的问题。您可能通过检查您的引导加载程序代码来将基本操作系统库一起入侵。