Reader

Orange Pi 使用 mmap 控制 GPIO

| I BCL. | 博客

博主曾经接手的一个项目,主控板连续好几年使用的一直是 Rapsberry Pi,但是随着 Raspberry Pi 价格长期居高不下,让人直呼伤不起,只能考虑把板子换成更便宜的方案,再三权衡之下,博主最后选了 Orange Pi One。

Orange Pi One 使用了 Allwinner H3 作为 CPU,内建 512 MB 运存,对于博主的项目来说绰绰有余,另外,Orange Pi One 的 GPIO 定义和 Raspberry Pi 相同,而且闲鱼上的售价普遍 70 左右,和树莓派现在的售价比起来,直接少了个 0,让人很难不心动。

悲催的是,这个项目恰好就用到了 Raspberry Pi 的 GPIO,而且原本的代码中并没有用外部库去操作 GPIO,只是使用了内存映射的方式,透过读写内存来操作 GPIO。

我们知道,不同的 CPU 之间,内部的寄存器集合与地址也都会有所不同,所以在博主想碰碰运气,尝试过直接换板子,发现果然运行不了之后,博主只能很不情愿地改代码去了。

这篇文章将会介绍博主如何理解 mmap 的概念,如何看懂 Allwinner H3 提供的 Datasheet,以及如何成功编写程序控制 GPIO 的一整套流程,希望能对您有所帮助。

博主的 Orange Pi One