七:Register Abstraction Layer(从Registers/Specification开始)

上一篇 / 下一篇  2019-02-20 11:00:56

   Registers/Specification 

     连接到主处理器的硬件功能块通过存储器映射寄存器进行管理。这意味着软件地址映射中的每个位对应于硬件触发器。为了控制硬件并与之交互,软件必须读取和写入寄存器,因此使用抽象(称为硬件 - 软件接口或寄存器描述)来组织寄存器描述。
       该硬件 - 软件接口将I / O存储器映射中的地址分配给由助记符标识的寄存器。然后可以将每个寄存器分解成域,或者再次给予助记符的各个位组。域可以只是一个比特,也可以与寄存器位宽本身一样宽。每个域可以具有不同的访问属性,例如,它可以是只读,只写,读写或读取时清除。寄存器可以具有保留域,换言之,寄存器中的位未被使用但可以在设计的未来版本中使用。以下是寄存器描述示例 - 来自SPI主控DUT的控制寄存器:

      【此处省略一张表】

       对于给定的功能块,可能存在多个寄存器,并且每个寄存器将具有从块的基地址偏移的特定地址。要访问寄存器,处理器将对其地址进行读或写操作。软件工程师使用寄存器映射来确定如何编程硬件设备,他可能会使用一组define语句将寄存器名称和字段名称映射到头文件中的数值,以便他可以在更抽象的级别工作细节。例如,如果他希望在SPI主控制器中启用中断,则可以从CTRL读取,然后使用IE对该值进行“或”运算,然后将结果值写回CTRL:

spi_ctrl = reg_read(CTRL);
spi_ctrl = spi_ctrl | IE;
reg_write(CTRL, spi_ctrl);

       SPI主控制器的寄存器地址映射如下表所示。注意,控制寄存器与参考SPI主基地址来看的偏移地址为0x10。

   SPI Master Register Address Map

        【此处省略一张表

        :在SPI主控制器中,RXn和TXn寄存器实际映射到相同的硬件触发器上,在字符发送和接收期间,它们的内容会发生变化。因此,从软件接口抽象中,TX寄存器是只写的,并且RX寄存器是只读的,并且Rx内容仅在字符传输结束时有效。
       如果SPI主设备集成到更大的设计中,则SPI主设备的基地址将发生变化,软件工程师通过更新其头文件来保护自己免受该更改的影响,但底层固件代码无需更改。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-03-12  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 24919
  • 日志数: 79
  • 建立时间: 2018-09-03
  • 更新时间: 2019-02-20

RSS订阅

Open Toolbar
重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 秒速赛车 重庆时时彩