【问题标题】:How c++ applications access hardware directly?c++ 应用程序如何直接访问硬件?
【发布时间】:2013-07-31 01:15:34
【问题描述】:

我了解到 c++ 对硬件有许多低级访问权限,因此我们用 c++ 编写驱动程序。但是当我们用c++写一个普通的桌面应用程序时,是不是可以直接访问硬件呢? 我问这个是因为桌面应用程序在应用程序层上运行。 OS 层和 OEM 层位于 App 层和硬件之间。那么我们用 c++ 编写的应用程序如何直接访问硬件呢? 请有人解释一下 C++ 桌面应用程序的工作原理。

谢谢。

【问题讨论】:

  • 如果你的操作系统是DOS,那么应用程序和驱动程序没有区别...
  • C++ 不必直接使用硬件。桌面应用使用某种 GUI 库或 API。
  • 看看达夫设备的历史。他想要一种将数据写入映射到硬件设备的字节的快速方法。他想出了一个非常奇特的想法。这就是将volatile 放入语言的原因之一;它用于映射到硬件设备并且可以自行更改的位置。

标签: c++ operating-system hardware layer


【解决方案1】:

一般来说,桌面应用程序必须通过操作系统才能访问任何资源,从额外的内存到硬盘驱动器和声音芯片。

在嵌入式系统中,可以直接访问硬件,通常是通过指针。因此,要写入 UART 寄存器,可以将寄存器的地址分配给一个指针并取消对指针的引用。

许多编译器库为各种平台和嵌入式系统提供支持。我正在为 ARM 嵌入式系统使用 IAR 编译器并使用 C++ 进行编程。我们不使用流,因为我们没有终端 I/O。

编辑 1:cout 示例
例如,要通过coutprintf 打印到控制台,编译器提供了一个调用操作系统函数来显示文本的库。

操作系统功能可以将文本直接发送到控制台,也可以弹出一个“控制台窗口”并将文本发送到该控制台。

控制台函数将文本转换为位图并将位图发送到图形控制器。

图形控制器在屏幕上显示位图。

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 2010-11-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多