0

我有一块 Jetway NF81-T56 主板,它有一个提供 8 条 I/O 线的接头,标有 GPIO30-GPIO37。我的 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]”符号语法?我曾尝试在互联网上搜索并尝试联系制造商,但无济于事。

4

1 回答 1

0

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

如果我在脑海中正确地做,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 访问。但是,您需要确保正确配置了电路板,更重要的是,您需要确保在这些地址上没有其他任何东西。

于 2012-05-02T00:19:19.793 回答