驱动程序如何在x86中而不是在嵌入式计算机(如Android手机)中开箱即用

我很好奇驱动程序如何在x86主板上开箱即用,例如显示器,USB控制器等。

例如: 在x86上启动玩具自定义内核可以显示在屏幕上,而无需在驱动程序空间上做任何额外的工作,但是对于作为嵌入式系统的Android手机,似乎几乎不可能使用我自己的玩具自定义内核在屏幕上显示(因为有关该设备的内存映射以及显示器与该设备的接口方式的可用信息。

为什么I / O在x86主板上开箱即用,而不在嵌入式计算机上工作?

ksf0204ksf 回答:驱动程序如何在x86中而不是在嵌入式计算机(如Android手机)中开箱即用

x86 PC 固件具有标准的软件接口(非常类似于系统调用),现代UEFI或旧版BIOS int 0x10和其他中断。

关键点是它不是裸机x86,它是IBM PC兼容的,这意味着软件,甚至是模拟的旧硬件,例如PS / 2端口,VGA,甚至旧的中断控制器

如果您没有固件提供的所有这些帮助(为了使引导程序和玩具OS受益),那么您的工作将会艰巨得多,例如至少需要一个基本的USB-hid和USB主机控制器驱动程序才能获得键盘输入。 The lowest level function to handle a user input

  

为什么I / O在x86主板上开箱即用,而不在嵌入式计算机上工作?

这不是您的真正问题。嵌入式计算机具有有效的I / O硬件,只是它们没有随驱动程序包装在一起的便携式软件API / ABI,它们是固件的一部分。

我认为大多数供应商的SDK都具有访问I / O硬件的功能(在经过一些摆弄使之进入可用状态之后)。即为此编写自己的驱动程序。


嵌入式不需要固件,因为可以预期将针对硬件定制内核。

  

拥有BIOS或UEFI以获得最大的可移植性会更好吗?包含一个是否有任何缺点?

是:引导ROM中的代码大小,并且有人必须编写和调试该代码。这会花费时间和开发人员薪水。

启动几乎是一个操作系统(UEFI环境)只是为了加载要接管硬件的内核毫无意义。

在启动时间上还有一个缺点:除了将内核加载到想要加载的地方之外,任何其他运行的代码都会浪费CPU时间,这会减慢启动速度。

拥有一个 just 非常轻巧的接口,可以让您加载内核,并保留所有I / O。

与x86 PC不同,没有期望您可以将此硬件与并非专门为此硬件定制的 所下载的OS安装光盘/映像一起使用。

对于业余爱好者来说,使用转轮API并不容易。这种硬件上的真实操作系统不会使用此类API,那么为什么要首先提供它们呢?

本文链接:https://www.f2er.com/3156306.html

大家都在问