BeagleBone Black的Cape之基本概念

BBB的Cape的基本狀況網上說的很詳細,我以爲比較好的是一個兄弟的blog(http://blog.csdn.net/wyt2013?viewmode=contents),其中的如何使用GPIO/AD/SPI/I2C及 爲BBB製做專屬本身的cape(一)-(四),這幾篇博文都涉及到cape的事。能夠仔細的「研讀」,注意是「研讀」而非「閱讀」,由於中間有「魏來之路」這位兄弟的學習歷程,中間有點曲折,值得一讀。感謝這位兄弟的分享精神,很是佩服。 linux

其實說到Cape主要涉及到幾個主要的問題: ubuntu

1、什麼是Cape,它有什麼標準?(能夠參考SRM) 數據結構

2、arm linux 3.x如何管理硬件?--扁平設備樹,設備樹重載。 工具

3、如何管理Cape?--動態加載,文件IO 學習

1、什麼是Cape,它有什麼標準? 測試

Cape就是Beaglebone/BeagleBone Black的擴展功能板,若是你使用過PC104,你很容易理解Cape,BBB至關於PC104的CPU模塊,而PC104外圍AD模塊、計數器模塊就是它的Cape。 ui

官方的解釋以下: 編碼

The capes are products of the BeagleBoard.org community, which means they were designed by developers just like you and, although a variety of capes exist today, we can’t wait to see what cool new cape concepts come next. You have the chance to put your thinking cap on and tell us what we’ve missed by conceptualizing and designing your own cape plug-in board!(Capes是BeagleBone.org的產品線,經過capes,你能夠開發你想要實現的功能,雖然今天有不少的capes已經完成,可是咱們期待看到有更cool的新cape不斷產生,挑戰你的想像力吧!) spa

一句話,cape就是符合BBB的驅動接口要求、BBB引腳兼容的外圍功能板。 操作系統

它有什麼標準?

1、引腳兼容

2、驅動兼容

3、機械結構兼容

參考資料:

1、http://elinux.org/Beagleboard:BeagleBone_Capes

2、http://elinux.org/BeagleBone_Black_Capes

3、BeagleBone Black system reference manual(SRM),第93頁

4、http://elinux.org/Beagleboard:Cape_Expansion_Headers

5、http://elinux.org/Beagleboard:Weather_Cape_Work-Around#EEPROM_Contents


2、arm Linux 3.x如何管理硬件

若是用過linux 2.x的朋友,必定可以深深體會到linux 3.x對硬件管理變化帶來的優越性。在linux 2.x的世界裏,充滿了大量的BSP,Ports代碼,實際上是違背了linux和軟件工程的本質,從軟件的維護和易用性來講,剝離與系統無關的東西,採用統一的工具來管理硬件相關的部分,這纔是易用和可靠的基礎。

linux 3.x對硬件的管理就是一個典型的例子。在linux3.x後,引入了「扁平設備樹」的概念,利用設備樹來實現內核和硬件的隔離。典型的區別:

1、linux 2.x,移植代碼和CPU體系相關,和外圍的接口也相關,耦合程度很高,一旦動了其中一部分,須要改動不少。

2、linux 3.x,採用設備樹來隔離硬件和內核,內核完成對設備樹的管理(加載、重載、卸載等),而設備樹來描述硬件相關的資源,若是外圍的硬件改動,只須要改變設備樹的描述便可,至關於用軟件來描述硬件的行爲,這樣一來系統的柔性就至關的好,可移植性、代碼的可讀性、系統的可測試性和維護都有至關大的提升。

beagleBone的WIKI上有一句,很是好:"The Device Tree is a data structure for describing hardware. Rather than hard coding every detail of a device into an operating system, many aspect of the hardware can be described in a data structure that is passed to the operating system at boot time." (設備樹是一種用於描述硬件的數據結構。相對於將設備的細節描述編碼到操做系統,設備樹是將硬件的許多內容描述成爲一個數據結構,並在操做系統啓動時傳遞到內核。)

這就是設備樹的本質

採用一種標準的描述言,一種樹狀的結構,描述每個硬件的細節(引腳、寄存器、中斷、行爲等),並傳遞到內核,實現對硬件的管理,這就是設備樹。

一位大牛,之前讀過他的許多書,在CSDN博客上名爲21cnbao,寫了一篇博文「ARM Linux 3.x的設備樹(Device Tree)」,其中關於設備樹的描述至關之精彩,強烈推薦。http://blog.csdn.net/21cnbao/article/details/8457546

參考資料:

1、http://blog.csdn.net/21cnbao/article/details/8457546

2、http://elinux.org/BeagleBone_and_the_3.8_Kernel

3、http://rampic.com/beagleboneblack/?p=25

4、http://blog.csdn.net/wyt2013/article/details/16339843

5、http://hipstercircuits.com/adding-beaglebone-cape-support-to-a-kernel-with-device-tree-in-ubuntu/

6、http://blog.csdn.net/cosmoslhf/article/details/9252509

關於設備樹,其實,能夠先清楚概念,而後再慢慢理解,在後續的blog中,咱們會一塊兒學習。


3、cape的管理

cape的管理就是設備樹的應用,有一個基本的DTS(設備樹的描述文件),在硬件啓動的時候,傳遞到內核,內核接管了相關硬件(已被描述的)。每個cape就能夠採用設備樹的一個節點來描述,這樣在系統啓動後,這個cape就會被內核接管,經過它的對外接口(文件IO)就能夠訪問相應的cape。

若是有一個新cape怎麼辦?從新編寫DTS?工做量太大了,還要涉及到內核的編譯。設備樹管理工具還有一個功能,就是overload,至關於C++中的重載,這相概念相信你們一說就明白了,動態的改變設備樹的節點,就能夠實如今線的設備更新和管理,這就是設備樹的重載。

對於這一部分,有一個概念就行,後續咱們會用實例來解釋這一切!

參考資料:

1、http://blog.csdn.net/wyt2013?viewmode=contents

2、http://elinux.org/Beagleboard:BeagleBone_Black_FAQ

3、http://hipstercircuits.com/adding-beaglebone-cape-support-to-a-kernel-with-device-tree-in-ubuntu/

4、http://elinux.org/BeagleBone_Black_Enable_SPIDEV

5、http://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-background

6、https://lkml.org/lkml/2013/1/7/366

相關文章
相關標籤/搜索