【发布时间】:2016-06-19 06:56:48
【问题描述】:
我正在为我的 RPI2 操作系统编写一个 GPIO 驱动程序。我在网上冲浪了很长时间,但我只找到了 linux 数据。我应该如何做这样的功能
void gpio_set(int pin);
void gpio_clr(int pin);
在 C 中用于驱动程序。或者,也许它可以通过内联汇编来完成?
【问题讨论】:
标签: c arm raspberry-pi inline-assembly gpio
我正在为我的 RPI2 操作系统编写一个 GPIO 驱动程序。我在网上冲浪了很长时间,但我只找到了 linux 数据。我应该如何做这样的功能
void gpio_set(int pin);
void gpio_clr(int pin);
在 C 中用于驱动程序。或者,也许它可以通过内联汇编来完成?
【问题讨论】:
标签: c arm raspberry-pi inline-assembly gpio
正如here解释的那样
BCM2836 中的底层架构与 BCM2835 相同。唯一显着的区别是移除了 ARM1176JZF-S 处理器并替换为四核 Cortex-A7 集群。
BCM2836 的可用文档没有详细说明外设硬件,只有 A7。相反,您需要BCM2835 的文档。 peripheral specification 第 6 节处理 GPIO。寄存器是内存映射的,因此您可以在 C 中直接写入它们。
【讨论】:
在 C 中实现非常简单。请记住,外围地址 RPi2 是 0x3F000000 而不是 0x20000000 (RPi)。可用的文档适用于 RPi (BCM2835),但也适用于 RPi2 以及一些内存地址更改和处理器更改 (Cortex-A7)。如需快速跳转,您可以查看valver's blog 进行裸机开发。
【讨论】: