3.2 LED驱动都做些什么
假设我们的系统用LED来与系统的用户或者开发者沟通系统的状态,我们将需要一个LED的驱动程序。以下是我们所知的LED驱动程序的需求:
- 控制16个有两个状态的LED。
- 可以在不影响其他LED的情况下打开或者关闭任意一个LED。
- 通过单一的接口调用来打开所有的LED。
- LED驱动程序的用户可以查询任何LED的状态。
- 当加电时,硬件的默认状态是所有的LED都锁定在打开状态,需要由软件来把它们关闭。
- LED会在内存中映射到一个16位的字上(在一个尚未确定的地址上)。
- 在某一位上置1会点亮对应的LED;置0则会将之关闭。
- 最小一位对应LED 1;最大一位对应LED 16。
前4个目标的关注点是希望LED驱动做什么。第5~8个目标描述了驱动程序如何与硬件交互。在这些需求之外,有一个设计目标:让这个驱动程序在目标硬件之外可测。在目标系统中只有一套LED,所以我们只会使用单一实例设计模型。