我了解到c ++有很多低级别的硬件访问权限,因此我们用c ++编写驱动程序。但是当我们用c ++编写一个普通的桌面应用程序时,它是否能够直接访问硬件? 我问这个是因为桌面应用程序在应用程序层上运行。应用层和硬件之间存在OS层和OEM层。那么我们的应用程序如何直接用c ++访问硬件编写? 请有人解释一下c ++桌面应用程序是如何工作的。
感谢。
答案 0 :(得分:6)
通常,桌面应用程序必须通过操作系统来访问任何资源,从额外的内存到硬盘驱动器和声音芯片。
在嵌入式系统中,通常可以通过指针直接访问硬件。因此,要写入UART寄存器,可以将寄存器的地址分配给指针并取消引用指针。
许多编译器库为各种平台和嵌入式系统提供支持。我正在将IAR编译器用于ARM嵌入式系统并使用C ++进行编程。我们不使用流,因为我们没有终端I / O.
编辑1:cout示例
例如,要通过cout
或printf
打印到控制台,编译器会提供一个调用操作系统函数来显示文本的库。
操作系统功能可以将文本直接发送到控制台,也可以弹出“控制台窗口”并将文本发送到控制台窗口。
控制台功能将文本转换为位图并将位图发送到图形控制器。
图形控制器在屏幕上显示位图。