如何直接与硬件交互?

时间:2014-08-22 01:42:39

标签: c windows controls hardware

我知道这必须是可能的,因为有些程序可以控制硬件(例如键盘上的LED灯或CPU风扇)我想知道的是我要做的事情与这个硬件互动。
更具体地说,我希望(作为一个学习项目)控制我的笔记本电脑(Sony Vaio Flip SVF14N13CXB)背光键盘亮起时。我想知道每个字母/分段的LED是否可以单独控制,如果可以,那么做一些只会点亮所按区域的编码会很酷(例如,如果每个key有自己的LED,当我按下" W"键时,只有" W"键的LED会亮起)。我主要是将这作为一个学习项目,但举例说明你可以知道我想要什么。我希望你明白我在问什么。感谢。

1 个答案:

答案 0 :(得分:2)

我不知道控制硬件不同组件的确切目的是什么。我建议你使用语言C和汇编语言。推荐C的理由有:

  1. 它直接在硬件抽象层上运行并给出 大多数硬件控件。

  2. 大多数硬件制造驱动程序都是用C语言制作的 他们更灵活。

  3. 它可以移植到多个O / S并且它们改变了很少的代码 根据硬件要求。

  4. 我会提供有关控制硬件的知识的快照,但它需要非常谨慎和技巧。由于做错了一段时间也会损坏硬件。

    如何控制它们?

    通过写入和读取寄存器来控制每个器件。大部分的 设备有多个寄存器的时间,它们是在连续的地址访问的, 无论是在内存地址空间还是在I / O地址空间中。

    虽然一些CPU制造商在其芯片中实现了单个地址空间,但其他人认为外围设备与存储器不同,因此需要单独的地址空间。 I / O端口是驱动程序与许多设备进行通信的手段,至少在某些时候。就其性质而言,I / O指令依赖于高度处理器。因为它们处理处理器处理数据移入和移出的细节,所以很难隐藏系统之间的差异。

    I / O内存只是设备提供的类似RAM的位置区域 通过总线到处理器。该存储器可用于多种用途, 例如保存视频数据或以太​​网数据包,以及实现设备寄存器 其行为与I / O端口相同(即,它们具有与读取相关的副作用 并写下它们。)

    访问I / O内存的方式取决于计算机体系结构,总线和 正在使用的设备,尽管各地的原则都是一样的。