自《史記‧孔子世家》開始,因為孔子後裔的封爵、世襲與祭祀等等傳承,孔子家譜的修訂一直是當代的朝廷來慎重完成,但只及於嫡長者一脈。宋元豐甲子年間,孔子之第四十六代孫『孔宗翰』,當時官居朝議大夫,創修『孔氏家譜』,始為刊印。一九三七年民國版的《孔子世家譜》共有四集,收錄孔子後裔五十六餘萬人。據聞《孔子世家譜》是唯一在中國歷史上,被保存最完整的家譜,也是全世界歷史裡極古久的家譜,同時為《金氏世界紀錄》認可是全世界歷史最悠遠的族譜。
『事物』雖說總有『來源』,『理念』雖講其來『有自』,然而並不是都有『紀錄』和『整理』,以至於常常難以在時流中『溯源』的了。隨著 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 hacking 】 GPIO 硬體劈砍
BCM-GPIO 0, 1, 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22, 23, 24, 25
BCM-GPIO 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 22, 23, 24, 25, 27
前二十六根接腳定義和 Rev 2.0 相同