在 bcm2836 上使用 GPIO
Working with GPIO on bcm2836
我正在为我的 RPI2 OS 编写 GPIO 驱动程序。我在网上冲浪了很长时间,但我只找到了 linux 数据。
这样的功能应该怎么做
void gpio_set(int pin);
void gpio_clr(int pin);
C 中的驱动程序。或者,也许可以通过内联汇编来完成?
正如解释的那样here
The underlying architecture in BCM2836 is identical to BCM2835. The only significant difference is the removal of the ARM1176JZF-S processor and replacement with a quad-core Cortex-A7 cluster.
BCM2836 的可用文档没有详细介绍外围硬件,只有 A7。相反,您需要 BCM2835. The peripheral specification 第 6 节涉及 GPIO 的文档。寄存器是内存映射的,因此您可以直接用 C 语言写入它们。
用C实现很简单。记住外设地址RPi2是0x3F000000而不是0x20000000 (RPi)。可用文档适用于 RPi (BCM2835),但适用于 RPi2 以及一些内存地址更改和处理器更改 (Cortex-A7)。快速跳转可以看valver's blog for bare-metal development。
我正在为我的 RPI2 OS 编写 GPIO 驱动程序。我在网上冲浪了很长时间,但我只找到了 linux 数据。
这样的功能应该怎么做void gpio_set(int pin);
void gpio_clr(int pin);
C 中的驱动程序。或者,也许可以通过内联汇编来完成?
正如解释的那样here
The underlying architecture in BCM2836 is identical to BCM2835. The only significant difference is the removal of the ARM1176JZF-S processor and replacement with a quad-core Cortex-A7 cluster.
BCM2836 的可用文档没有详细介绍外围硬件,只有 A7。相反,您需要 BCM2835. The peripheral specification 第 6 节涉及 GPIO 的文档。寄存器是内存映射的,因此您可以直接用 C 语言写入它们。
用C实现很简单。记住外设地址RPi2是0x3F000000而不是0x20000000 (RPi)。可用文档适用于 RPi (BCM2835),但适用于 RPi2 以及一些内存地址更改和处理器更改 (Cortex-A7)。快速跳转可以看valver's blog for bare-metal development。