gpt4 book ai didi

linux - 如何计算我的 GPIO 端口地址

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:16 24 4
gpt4 key购买 nike

我有一个捷波 NF81-T56 主板,它有一个标有 GPIO30-GPIO37 的 8 条 I/O 线接头。我的 CentOS6 安装中没有 GPIO 驱动程序,我正在尝试编写一个驱动程序。 Fintek F71869 Super IO 芯片提供 GPIO 和其他 I/O 功能。我可以通过 0x2e/0x2f 端口访问和修改 GPIO3 寄存器,但无法使用 F71869 GPIO 寄存器中设置的 GPIO BASE_ADDR 访问数据端口。我已读取这些寄存器,并且 GPIO BASE_ADDR 设置为 0x0a00。该芯片的手册页指出:

索引端口为 BASE_ADDR[15:2] + 5,数据端口为 BASE_ADDR[15:2] + 6

我已将数据端口设置为 0x0f(如连接的 LED 显示)并尝试读取端口 0x0a00-0x0a7f。全部返回 0xff,而不是 0x0f。有谁知道如何解释“BASE_ADDR[15:2]”符号语法?我尝试过在网上搜索并尝试联系制造商,但没有成功。

最佳答案

这是硬件风格的矢量(位域)表示法,基本上是右移两位。

如果我在脑子里正确执行的话,0x0a00 就会变成 0x0280。

To draw it out here are the bits [15:0]
0x0a00 = 0000 1010 0000 0000
now select bits [15:2]
0000 1010 0000 00
which we re-format as [13:0] of a new vector
00 0010 1000 0000 = 0x0280

所以看来您应该访问 0x0285 和 0x0286。但是,您需要确保板已正确配置,更重要的是您需要确保这些地址中没有其他任何东西。

关于linux - 如何计算我的 GPIO 端口地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com