我的 NEC 微控制器有一个 8 位的定时器控制器寄存器 - 我需要在 ioremap 的第二个参数中传递 8 吗?
阅读规范后,我了解了它的以下属性。
Address |Function Register Name |Symbol |R/W Manipulatable Bits |Default Val
FFFFF590H |TMP0 control register 0 |TP0CTL0 |R/W √ √ |00H
所以,我认为Timer寄存器TP0CTL0映射到的物理地址是0xFFFFF590。
现在,我将这个寄存器重新映射如下。阅读更多描述后,我知道该寄存器的大小为 8 位。
规范说“TPnCTL0 寄存器是一个控制 TMPn 操作的 8 位寄存器。”
这是正确的吗?我使用基地址为 0xFFFFF590,这个寄存器的大小是 8 位。因此,我将大小设为 8 位。这是对的吗?ioremap_nocache 的第二个参数是位大小吗?我的以下 API 是否正确?我是否在函数中正确使用了参数 - ioremap_nocache。
无效 *tp0ctl0 = ioremap_nocache(0xFFFFF590, 8);
接下来,我正在执行以下操作 -
unsigned int val = ioread8(tp0ctl0);
val = 2;
iowrite8(val, tp0ctl0);
请在这里纠正我。如果我根据我拥有的微控制器信息正确使用 API,请告诉我。