我们知道硬件要想工作必须有软件的配合,最基础的是需要软件根据不同场景给硬件配置不同参数,所以向寄存器中配置参数是很常见也是必须的一种配合。在做这种操作时需要知道寄存器的类型,下面就介绍几种不同类型的寄存器。
WO寄存器
硬件设计时候需要考虑哪些参数是需要配置,当然这也需要和软件一起沟通,看看那些参数软件配置比较合理,这其实是软硬件划分的一部分。当确定了哪些参数软件配置后,硬件就得留出相应的寄存器给软件。那这个时候,我们就出现了一种寄存器叫可写寄存器,如果该寄存器是只可以被写的,那么它既是Write Only(WO)寄存器。
RO寄存器
我们说硬件工作需要需要软件的配合,这种配合不止上面说的软件向硬件写寄存器,这种配合是相互的。比如软件需要知道硬件的一些状态。这些状态包括,比如a.软件向硬件配置的寄存器有没有配置正确;b.硬件工作有没有出错,内部的状态是什么;c.硬件任务有没有完成等等。那软件想知道的这些信息,是通过读取指定的寄存器获取的,那么这里面就出现了可读寄存器,如果该寄存器是只读的,那么它就是Read Only(RO)寄存器。
WR寄存器
再进一步,我们想,如果某寄存器不仅可以通过软件写,还可以通过软件读取,那么该寄存器就可以读写,Writ and Read(WR)寄存器。
WC寄存器
再特殊一点,某些寄存器,如果软件对它做写操作时,它的值会变为零,那么它就是写清,Write Clear(WC)寄存器。
有人可能有疑问,既然这个寄存器是可写,我为什么不通过直接向该寄存器中写入零呢?这主要是因为这写寄存器主要是反映硬件内部状态的寄存器,它们只需要可以被读取就可以,不必要支持写入功能。写清操作对于该寄存器来说相当于软复位。