Physical computing ︰《三》 GPIO 溯源《上》

自《史記‧孔子世家》開始,因為孔子後裔的封爵、世襲與祭祀等等傳承,孔子家譜的修訂一直是當代的朝廷來慎重完成,但只及於嫡長者一脈。元豐甲子年間,孔子之第四十六代孫『孔宗翰』,當時官居朝議大夫,創修『孔氏家譜』,始為刊印。一九三七年民國版的《孔子世家譜》共有四集,收錄孔子後裔五十六餘萬人。據聞《孔子世家譜》是唯一在中國歷史上,被保存最完整的家譜,也是全世界歷史裡極古久的家譜,同時為《金氏世界紀錄》認可是全世界歷史最悠遠的族譜。

事物』雖說總有『來源』,『理念』雖講其來『有自』,然而並不是都有『紀錄』和『整理』,以至於常常難以在時流中『溯源』的了。隨著 Linux 系統的發展與茁壯,很早就有像『 uClinux 』此種專案將之移植到『嵌入式系統』 Embedded system 上。現今 Linux 在 SoC系統單晶片』  System on Chip 的應用上更是方興未艾。

一般 SoC 的製造者為著便利使用者能夠開發的多種多樣『應用』與『整合』,通常會有為數不少的『 GPIO 』接腳 ── 通用可變化功能性與輸出入 ──,為什麼呢?因為應用上的『需求規格』才能決定多少種『輸入』,至少幾個『輸出』,需要怎樣的週邊裝置『擴充性』等等。然而 Linux kernel 建基於 PC x86,這一個『架構平台』 platform 曾經一直是由『 Intel 』與『 Microsoft 』所主導,因而『 GPIO 』的軟體設計也就依此『架構平台』而定的了!更因著商業『競爭』和『保護』,許多『系統單晶片』的 Linux 『中介軟體』 Middleware 的提供者,各自『修補』 patch 『核心』 kernel ,於是『 GPIO 』的『軟體架構』問題日益嚴重。

二零零六年,在

LKML.ORG? 】︰

In case you haven’t read the titlebar of your webbrowser’s window: this site is the (unofficial) Linux Kernel Mailing List archive. This mailing list is a rather high-volume list, where (technical) discussions on the design of, and bugs in the Linux kernel take place. If that scares you, please read the FAQ.

David Brownell 的一封《電郵》【 Re: [-mm patch 1/4] GPIO framework for AVR32 】開啟了『 GPIO 』之『軟體架構』的討論,大體可說到二零零八年【※Re: [ patch 2.6.24-rc6-mm 2/9] gpiolib: add gpio provider infrastructure 】之前, Linux kernel 的
GPIO Sysfs Interface for Userspace 》整體已經完成。讀者可以參考《  GPIO Interfaces 》與《 Linux/include/linux/gpio.h 》文件作進一步了解。

舉例來說,在『樹莓派』上可以用︰

# GPIO 晶片提供者
cd /sys/class/gpio/gpiochip0

ls
base  label  ngpio  power  subsystem  uevent

# 標籤
cat label 
bcm2708_gpio

# GPIO 個數
cat ngpio 
54

# 第一個 GPIO 編號
cat base 
0

知道竟有五十四個『 GPIO 』!!

在此根據《 RPi Low-level peripherals 》上的整理,摘要如下︰

GPIO 電壓準位】是 3.3V = 3V3,不是 5V,沒有『過高電壓』 over-voltage 保護電路,務必小心。尤其『注意』『 P1 接頭』上的『 5V 』── Pin 2 與 Pin 4 ── 千萬別和『任一接腳』發生接觸『短路』,否則??恐燒掉了!!

GPIO hardware hackingGPIO 硬體劈砍

Raspberry-Pi-GPIO-Layout-Revision-1
Rev 1.0

BCM-GPIO 0, 1, 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22, 23, 24, 25

Raspberry-Pi-GPIO-Layout-Revision-2
Rev 2.0

BCM-GPIO 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 22, 23, 24, 25, 27

Raspberry-Pi-GPIO-Layout-Model-B-Plus-rotated-2700x900-1024x341
A+/B+

前二十六根接腳定義和 Rev 2.0 相同