如何使用寄存器和偏移地址

How do I use registers and offset addresses?

本文关键字:地址 何使用 寄存器      更新时间:2023-10-16

目前,我正在尝试编写一个GPIO驱动程序,并试图了解一些事情。在互联网上搜索后,我还没有找到关于基本地址、寄存器和偏移地址的几个问题的明确答案。

对于下面的问题,假设我有一个任意寄存器D1:F0和一个10h-13h(大小为32位)的偏移地址。位0始终为1并保留,位10:1为GPIO基址,位31:11始终为0。此寄存器的默认值为0000000 1h。使用此信息:

1) 关于D1:F0,函数号到根端口映射是什么?

2) D1:F0是否包含可在代码中使用的端口?

3) 偏移地址与问题1/问题2的关系如何?

4) 寄存器的默认值关闭了除第一个保留位(应为1)之外的所有位,对吗?

偏执狂检查问题:比特[4:1]的意思是比特1-4,对吧?

提前感谢各位!

注意:我需要指出的是,这篇文章中的所有数据、寄存器、内存地址和偏移量都是任意的,并不能反映我将要使用/可以访问的数据。这只是概念性的,只是为了说明一点。

经过研究,我发现了一些东西:

1) 对于D1:F0的示例,函数号到根端口映射是一种表示法,表示寄存器位于D设备1上,对于PCH和总线,F函数0。总线设备可以具有多种"功能",例如,可以由不同的外围设备使用。

2) 是和否。由于没有更好的术语,NRP表示法为您提供了总线设备到函数的逻辑映射,并屏蔽了寄存器的实际十六进制基址和偏移量。处理器/芯片集文档具有总线起始位置的物理地址,并将这些地址与NRP表示法相关联。

3) 偏移地址与D1:F0的示例NRP表示法无关D1:F0只是寄存器相对于总线的基地址的表示,而不是实际的寄存器地址。您可以将偏移量(或偏移范围)应用于寄存器的基址。

4) 正确。只是用了一个位字段来验证,并把它写在纸上进行验证。

额外问题:[Number1:Number2]关于比特的符号表示从左到右读取比特(高位到低位)的比特。因此,例如,对于总共12个比特,比特[15:4]意味着从比特4到比特15