5-1-linux設(shè)備樹概述和使用說明_W_第1頁
5-1-linux設(shè)備樹概述和使用說明_W_第2頁
5-1-linux設(shè)備樹概述和使用說明_W_第3頁
5-1-linux設(shè)備樹概述和使用說明_W_第4頁
5-1-linux設(shè)備樹概述和使用說明_W_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Revision HistoryLinux 設(shè)備樹概述和使用說明 Draft DateRevision No.Description2018/3/22V1.01.初始版本。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62801/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734目錄1 Linux 設(shè)備樹概述和使用說明41.1 Linux 設(shè)備樹設(shè)備樹概述41.2 基本概念51.2.1 初始結(jié)構(gòu)51.2.2 中央處理器61.2.3 節(jié)點(diǎn)名稱61.2.4

2、設(shè)備71.2.5理解 compatible 屬性81.3 如何編址81.3.1 CPU 編址91.3.2 內(nèi)存映射設(shè)備101.3.3 非內(nèi)存映射設(shè)備121.3.4 范圍(地址轉(zhuǎn)換)121.4 中斷如何工作151.5 特殊節(jié)點(diǎn)201.6備注202 基于 AM437x 平臺(tái)開發(fā)板 TL437x-EVM 代碼舉例212.1 led 舉例212.1.1 設(shè)備樹代碼212.1.2 引腳配置說明232.1.3 設(shè)備樹的 led 說明242.2 button 舉例252.1 設(shè)備樹代碼252.2 引腳配置說明262.3 設(shè)備樹的 button 說明27pwm 舉例2.3 . 272.3.1 設(shè)備樹代碼272

3、.3.2 引腳配置說明283.3 設(shè)備樹的 pwm 說明29公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62802/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734更多幫助30公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62803/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97341 Linux 設(shè)備樹概述和

4、使用說明1.1 Linux 設(shè)備樹設(shè)備樹概述Linux 設(shè)備樹是一個(gè)包含節(jié)點(diǎn)和屬性的簡單樹狀結(jié)構(gòu)。屬性是基于 key-value 對(duì)的, 而節(jié)點(diǎn)可以同時(shí)包含屬性和子節(jié)點(diǎn)。下面這個(gè)樹就是一個(gè)典型結(jié)構(gòu): / node1 a-string-property = A string; a-string-list-property = first string, second string; a-byte-data-property = 0x01 0x23 0x34 0x56; child-node1 node2 child-node2 ;first-child-property;second-child

5、-property = ;a-string-property = Hello, world;an-empty-property; a-cell-property = ; /* each number (cell) is a uint32 */ child-node1 ; ;這棵樹沒有描述任何東西,但是它體現(xiàn)了節(jié)點(diǎn)的一些屬性: 一個(gè)單獨(dú)的根節(jié)點(diǎn):“/” 兩個(gè)子節(jié)點(diǎn):“node1”和“node2”公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62804/30技術(shù)論壇:技術(shù)郵箱:supporttronlon

6、技術(shù)熱線:020-3893-9734 兩個(gè) node1 的子節(jié)點(diǎn):“child-node1”和“child-node2” 一堆分散在樹里的屬性 可以這么簡單理解:節(jié)點(diǎn)就是樹枝,屬性就是樹葉;樹枝上可以有再長樹枝也可以長 樹葉,而樹葉上則不會(huì)再長樹枝。 屬性是基于 key-value 結(jié)構(gòu)的,value 可以為空或者特定格式的字符串內(nèi)容。由于數(shù)據(jù)類型并不被編碼到最終的數(shù)據(jù)結(jié)構(gòu)中,設(shè)備樹源代碼中僅能支持有限的幾種基本數(shù)據(jù)類 型,如下: 文本字符串(無結(jié)束符)可以用雙引號(hào)表示: string-property = a string Cells是 32 位無符號(hào)整數(shù),用尖括號(hào)表示: cell

7、-property = 二進(jìn)制數(shù)據(jù)用方括號(hào)表示: binary-property = 0x01 0x23 0x45 0x67; 不同表示形式的數(shù)據(jù)可以使用逗號(hào)連在一起: mixed-property = a string, 0x01 0x23 0x45 0x67, ; 逗號(hào)也可用于創(chuàng)建字符串列表: string-list = red fish, blue fish;1.2 基本概念1.2.1 初始結(jié)構(gòu) 第一步就是構(gòu)建一個(gè)基本結(jié)構(gòu),這是一個(gè)設(shè)備樹最基本的結(jié)構(gòu)。在這個(gè)階段,需要一個(gè)唯一的標(biāo)識(shí)該機(jī)器。 / compatible = gpio-leds;公司官網(wǎng):銷售郵

8、箱:公司總機(jī):020-8998-62805/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734compatible 指定了系統(tǒng)的名稱。它包含了一個(gè)“,”形式的字符串。重要的是要指定一個(gè)確切的設(shè)備,并且包括制造商的名字,以避免命名空間沖突。由于操作系統(tǒng)會(huì)使用compatible 的值來決定如何在機(jī)器上運(yùn)行,所以正確的設(shè)置這個(gè)屬性十分重要。 1.2.2 中央處理器 第二步就是描述 CPU。先添加一個(gè)名為“cpus”的容器節(jié)點(diǎn),然后為每個(gè) CPU 分別添加子節(jié)點(diǎn),以 TI AM437x 平臺(tái)為

9、例: / compatible = ti,am437x-gp-evm; cpus cpu0 compatible = ti,am4372;cpu1 compatible = ti,am4372;每個(gè) cpu 節(jié)點(diǎn) compatible 屬性是一個(gè)“,”形式的字符串,并指定了確切的 cpu,就像頂層的 compatible 屬性一樣。 1.2.3 節(jié)點(diǎn)名稱 每個(gè)節(jié)點(diǎn)必須有一個(gè)“”形式的名字。 名稱就是一個(gè)不超過 31 位的簡單 ascii 字符串。通常,節(jié)點(diǎn)的命名應(yīng)該根據(jù)它所體現(xiàn)的是什么樣的設(shè)備。比如一個(gè) 3com 以太網(wǎng)適配器的節(jié)點(diǎn)就應(yīng)該命名為ethernet,而不應(yīng)該是 3com509。 如

10、果該節(jié)點(diǎn)描述的設(shè)備有一個(gè)地址的話,還應(yīng)該加上設(shè)備地址(unit-address)。通常,地址就是用來訪問該設(shè)備的主地址,并且該地址也在節(jié)點(diǎn)的 reg 屬性中列出。 同級(jí)節(jié)點(diǎn)命名必須是唯一的,但只要地址不同,多個(gè)節(jié)點(diǎn)也可以使用一樣的通用名, 例如 serial101f1000 和 serial101f2000。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62806/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97341.2.4 設(shè)備 系統(tǒng)中每個(gè)設(shè)備都表示

11、為一個(gè)設(shè)備樹節(jié)點(diǎn)。所以接下來就應(yīng)該為這個(gè)設(shè)備樹填充設(shè)備節(jié)點(diǎn)。 / compatible = ti,am437x-gp-evm;cpus cpu0 compatible = ti,am4372;cpu1compatible = ti,am4372;serial101F0000 compatible = ti,omap2-uart;serial101F2000 compatible = ti,am4372-uart;gpio101F3000 compatible = ti,pl061;spi10115000 compatible = ti,ads7846;external-bus ethernet

12、0,0公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62807/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734compatible = ti,smc91c111;i2c1,0 compatible = ti,tps65218; rtc58 compatible = ti,ds1338;flash2,0 compatible = ti,omap2-nand, omap3-nand;在此樹中,已經(jīng)為系統(tǒng)中的每個(gè)設(shè)備添加了節(jié)點(diǎn),而且這個(gè)層次結(jié)構(gòu)也反映了設(shè)備

13、與系統(tǒng)的連接方式。例如,外部總線上的設(shè)備就是外部總線節(jié)點(diǎn)的子節(jié)點(diǎn),i2c 設(shè)備就是 i2c總線節(jié)點(diǎn)的子節(jié)點(diǎn)。通常,這個(gè)層次結(jié)構(gòu)表現(xiàn)的是 CPU 視角的系統(tǒng)視圖。 在這顆樹中,應(yīng)該注意這些事情: 每個(gè)設(shè)備節(jié)點(diǎn)都擁有一個(gè) compatible 屬性。 flash 閃存節(jié)點(diǎn)的 compatible 屬性由兩個(gè)字符串構(gòu)成。 正如前面所述,節(jié)點(diǎn)的命名應(yīng)當(dāng)反映設(shè)備的類型而不是特定的型號(hào)。 1.2.5 理解 compatible 屬性 設(shè)備樹中每個(gè)節(jié)點(diǎn)都需要一個(gè) compatible 屬性。compatible 屬性是操作系統(tǒng)用來決定使用哪個(gè)設(shè)備驅(qū)動(dòng)來綁定到一個(gè)設(shè)備上的關(guān)鍵因素。 compatible 是一

14、個(gè)字符串列表,其中第一個(gè)字符串指定了這個(gè)節(jié)點(diǎn)所表示的確切的設(shè)備, 該字符串的格式為:,。剩下的字符串的則表示其它與之相兼容的設(shè)備。 1.3 如何編址 可編址設(shè)備使用以下屬性將地址信息編碼進(jìn)設(shè)備樹: reg公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-62808/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734#address-cells #size-cells每個(gè)可編址設(shè)備都有一個(gè)元組列表的 reg,元組的形式為:reg = 。每個(gè)元組都表示一個(gè)該設(shè)備

15、使用的地址范圍。每個(gè)地址值是一個(gè)或多個(gè) 32 位整型數(shù)列表,稱為 cell。同樣,長度值也可以是一個(gè) cell 列表或者為空。 由于地址和長度字段都是可變大小的變量,那么父節(jié)點(diǎn)的#address-cells 和#size-cells 屬性就用來聲明各個(gè)字段的 cell 的數(shù)量。換句話說,正確解釋一個(gè) reg 屬性需要用到父節(jié)點(diǎn)的#address-cells 和#size-cells 的值。 1.3.1 CPU 編址 CPU 節(jié)點(diǎn)是一個(gè)關(guān)于編址的最簡單的例子。每個(gè) CPU 都分配了一個(gè)唯一的 ID,并且沒有 CPU id 相關(guān)的大小信息。 1. cpus 2. #address-cells =

16、;3. #size-cells = ;4. cpu0 5. compatible = ti,am4372; 6.reg = ;7.;8. cpu1 9. compatible = ti,am4372; 10.reg = ;11.;12.; 在 cpu 節(jié)點(diǎn)中,#address-cells 設(shè)置為 1,#size-cells 設(shè)置為 0。這意味著子節(jié)點(diǎn)的 reg值是一個(gè)單一的 uint32,這是一個(gè)不包含大小字段的地址,為這兩個(gè) cpu 分配的地址是 0和 1 。cpu 節(jié)點(diǎn)的#size-cells 為 0 是因?yàn)橹粸槊總€(gè) cpu 分配一個(gè)單獨(dú)的地址。 公司官網(wǎng):

17、銷售郵箱:公司總機(jī):020-8998-62809/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734注意:reg 的值和節(jié)點(diǎn)名字是相同的。按照慣例,如果一個(gè)節(jié)點(diǎn)有 reg 屬性,那么該節(jié)點(diǎn)的名字就必須包含設(shè)備地址,這個(gè)設(shè)備地址就是 reg 屬性里第一個(gè)地址值。 1.3.2 內(nèi)存映射設(shè)備 與 cpu 節(jié)點(diǎn)里單一地址值不同,應(yīng)該分配給內(nèi)存映射設(shè)備一個(gè)地址范圍。#size-cells 聲明每個(gè)子節(jié)點(diǎn)的 reg 元組中長度字段的大小。在接下來的例子中,每個(gè)地址值是 1 個(gè)cell(32 位),每

18、個(gè)長度值也是 1 個(gè) cell,這是典型的 32 位系統(tǒng)。64 位的機(jī)器則可以使用值為 2 的#address-cells 和#size-cells 來獲得在設(shè)備樹中的 64 位編址。 / #address-cells = ;#size-cells = ;.serial101f0000 compatible = ti,omap2-uart; reg = ;serial101f2000 compatible = ti,am4372-uart; reg = ;gpio101f3000 compatible = ti,pl061; reg = 0x101f4000 0x0010;spi1011500

19、0 compatible = ti,ads7846; reg = ;.;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628010/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734每個(gè)設(shè)備都被分配了一個(gè)基址以及該區(qū)域的大小。這個(gè)例子中為 GPIO 分配了兩個(gè)地址范圍:0x101f3000.0x101f3fff 和 0x101f4000.0x101f400f。 一些掛在總線上的設(shè)備有不同的編址方案。例如一個(gè)帶獨(dú)立片選線的設(shè)備也可以連接至外部總線。由于父節(jié)

20、點(diǎn)會(huì)為其子節(jié)點(diǎn)定義地址域,所以可以選擇不同的地址映射來最恰當(dāng)?shù)拿枋鲈撓到y(tǒng)。下面的代碼展示了設(shè)備連接至外部總線并將其片選號(hào)編碼進(jìn)地址的地址分配。 external-bus #address-cells = #size-cells = ;ethernet0,0 compatible = ti,smc91c111; reg = ;i2c1,0 compatible = ti,a1234-i2c-bus; reg = ;rtc58 compatible = ti,ds1338;flash2,0 compatible = ti,omap2-nand, omap3-nand; reg = ;外部總線的地址

21、值使用了兩個(gè) cell,一個(gè)用于片選號(hào),另一個(gè)則用于片選基址的偏移量。而長度字段則還是單個(gè) cell,這是因?yàn)橹挥械刂返钠撇糠植判枰粋€(gè)范圍量。所以,在這個(gè)例子中,每個(gè) reg 項(xiàng)都有三個(gè) cell:片選號(hào)、偏移量和長度。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628011/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734由于地址域是包含于一個(gè)節(jié)點(diǎn)及其子節(jié)點(diǎn)的,所以父節(jié)點(diǎn)可以自由的定義任何對(duì)于該總線來說有意義的編址方案。那些在直接父節(jié)點(diǎn)和子節(jié)

22、點(diǎn)以外的節(jié)點(diǎn)通常不關(guān)心本地地址域,而地址應(yīng)該從一個(gè)域映射到另一個(gè)域。 1.3.3 非內(nèi)存映射設(shè)備 其他的設(shè)備沒有被映射到處理機(jī)總線上。雖然這些設(shè)備可以有一個(gè)地址范圍,但他們并不是由CPU 直接訪問。取而代之的是,父設(shè)備的驅(qū)動(dòng)程序會(huì)代表CPU 執(zhí)行簡介訪問。 以 i2c 設(shè)備為例,每個(gè)設(shè)備都分配了一個(gè)地址,但并沒有與之關(guān)聯(lián)的長度或范圍信息。這看起來和 CPU 的地址分配很像。 i2c1,0 compatible = ti,tps65218; #address-cells = ;#size-cells = ; reg = ; rtc58 compatible = ti,ds1338; reg =

23、;1.3.4 范圍(地址轉(zhuǎn)換) 我們已經(jīng)討論了如何給設(shè)備分配地址,但目前來說這些地址還只是設(shè)備節(jié)點(diǎn)的本地地址,我們還沒有描述如何將這些地址映射成 CPU 可使用的地址。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628012/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734根節(jié)點(diǎn)始終描述的是 CPU 視角的地址空間。根節(jié)點(diǎn)的子節(jié)點(diǎn)已經(jīng)使用的是 CPU 的地址域,所以它們不需要任何直接映射。例如,serial101f0000 設(shè)備就是直接分配的0x1

24、01f0000 地址。 那些非根節(jié)點(diǎn)直接子節(jié)點(diǎn)的節(jié)點(diǎn)就沒有使用 CPU 地址域。為了得到一個(gè)內(nèi)存映射地址,設(shè)備樹必須指定從一個(gè)域到另一個(gè)域地址轉(zhuǎn)換地方法,而 ranges 屬性就起作用了。下面就是一個(gè)添加了 ranges 屬性的示例設(shè)備樹。 / compatible = ti,am4372; #address-cells = ;#size-cells = ;.external-bus #address-cells = #size-cells = ; ranges = 1 0 0x101600000x100002 0 0x300000000x10000000; ethernet0,0 compa

25、tible = ti,smc91c111; reg = ; ;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628013/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734i2c1,0 compatible = ti,tps65218; #address-cells = ;#size-cells = ; reg = ; rtc58 compatible = ti,ds1338; reg = ;flash2,0 compatible = ti,omap2-

26、nand, omap2-nand; reg = ; ranges 是一個(gè)地址轉(zhuǎn)換列表。ranges 表中的每一項(xiàng)都是一個(gè)包含子地址、父地址和在子地址空間中區(qū)域大小的元組。每個(gè)字段的值都取決于子節(jié)點(diǎn)的#address-cells、父節(jié)點(diǎn)的#address-cells 和子節(jié)點(diǎn)的#size-cells。以本例中的外部總線來說,子地址是 2 個(gè) cell、父地址是 1 個(gè) cell、區(qū)域大小也是 1 個(gè) cell。那么三個(gè) ranges 被翻譯為: 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628014/30技術(shù)論壇:www.5

27、1技術(shù)郵箱:技術(shù)熱線:020-3893-9734 從片選 0 開始的偏移量 0 被映射為地址范圍:0x10100000.0x1010ffff。 從片選 0 開始的偏移量 1 被映射為地址范圍:0x10160000.0x1016ffff。 從片選 0 開始的偏移量 2 被映射為地址范圍:0x30000000.0x10000000。 另外,如果父地址空間和子地址空間是相同的,那么該節(jié)點(diǎn)可以添加一個(gè)空的 range 屬性。一個(gè)空的 range 屬性意味著子地址將被 1:1 映射到父地址空間。 你有可能會(huì)問當(dāng)全都可以設(shè)計(jì)成 1:1 映射的時(shí)候?yàn)楹芜€要

28、使用地址轉(zhuǎn)換。答案就是, 有一些具有完全不同地址空間的總線(比如 PCI),而它們的細(xì)節(jié)需要暴露給操作系統(tǒng)。另外一些帶有 DMA 引擎的設(shè)備需要知道總線上的真實(shí)地址。有時(shí)有需要將設(shè)備組合到一塊,因?yàn)樗麄児蚕硐嗤能浖删幊涛锢淼刂酚成?。是否?yīng)該使用 1:1 映射在很大程度上取決于來自操作系統(tǒng)的信息以及硬件設(shè)計(jì)。 你還應(yīng)該注意到在 i2c1,0 節(jié)點(diǎn)中并沒有 range 屬性。不同于外部總線,這里的原因是i2c 總線上的設(shè)備并沒有被內(nèi)存映射到 CPU 的地址域。相反,CPU 將通過 i2c1,0 設(shè)備間接訪問 rtc58 設(shè)備。缺少 ranges 屬性意味著這個(gè)設(shè)備將不能被出他的父設(shè)備之外的任何

29、設(shè)備直接訪問。 1.4 中斷如何工作與遵循樹的自然結(jié)構(gòu)而進(jìn)行的地址轉(zhuǎn)換不同,機(jī)器上的任何設(shè)備都可以發(fā)起和終止中斷 信號(hào)。另外地址的編址也不同于中斷信號(hào),前者是設(shè)備樹的自然表示,而后者者表現(xiàn)為獨(dú)立于設(shè)備樹結(jié)構(gòu)的節(jié)點(diǎn)之間的鏈接。描述中斷連接需要四個(gè)屬性: interrupt-controller:一個(gè)空的屬性定義該節(jié)點(diǎn)作為一個(gè)接收中斷信號(hào)的設(shè)備。 #interrupt-cells:這是一個(gè)中斷控制器節(jié)點(diǎn)的屬性。它聲明了該中斷控制器的中斷指示符中 cell 的個(gè)數(shù)(類似于#address-cells 和#size-cells)。 interrupt-paren:這是一個(gè)設(shè)備節(jié)點(diǎn)的屬性,包含一個(gè)指向該

30、設(shè)備連接的中斷控制器的phandle。那些沒有 interrupt-parent 的節(jié)點(diǎn)則從它們的父節(jié)點(diǎn)中繼承該屬性。 Interrupts:一個(gè)設(shè)備節(jié)點(diǎn)屬性,包含一個(gè)中斷指示符的列表,對(duì)應(yīng)于該設(shè)備上的每個(gè)中斷輸出信號(hào)。 中斷指示符是一個(gè)或多個(gè) cell 的數(shù)據(jù)(由#interrupt-cells 指定),這些數(shù)據(jù)指定了該設(shè)備連接至哪些輸入中斷。在以下的例子中,大部分設(shè)備都只有一個(gè)輸出中斷,但也有 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628015/30技術(shù)論壇:技術(shù)郵箱:supporttro

31、技術(shù)熱線:020-3893-9734可能在一個(gè)設(shè)備上有多個(gè)輸出中斷。一個(gè)中斷指示符的意義完全取決于與中斷控制器設(shè)備的 binding。每個(gè)中斷控制器可以決定使用幾個(gè) cell 來唯一的定義一個(gè)輸入中斷。下面的代碼添加了中斷連接: / compatible = ti,am437x-gp-evm; #address-cells = ; #size-cells = ; interrupt-parent = ; cpus #address-cells = ;#size-cells = ; cpu0 compatible = ti,am4372; reg = ; cpu1 compat

32、ible = ti,am4372; reg = ; ; ;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628016/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734serial101f0000 compatible = ti,am4372-uart; reg = ; interrupts = ; serial101f2000 compatible = ti,am4372-uart; reg = ; interrupts = ;gpio101f3000

33、 compatible = ti,pl061; reg = 0x101f4000 0x0010; interrupts = ;intc: interrupt-controller10140000 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628017/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734compatible = ti,pl190; reg = ;interrupt-controller; #interrupt-cells = ; spi

34、10115000 compatible = ti,ads7846; reg = ;interrupts = ;external-bus #address-cells = #size-cells = ;ranges = 1 0 0x101600000x10000 2 0 0x300000000x1000000; ethernet0,0 compatible = ti,smc91c111; reg = ;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628018/30技術(shù)論壇:技術(shù)郵箱:supporttr

35、技術(shù)熱線:020-3893-9734interrupts = ;i2c1,0 compatible = ti,tps65218; #address-cells = ; #size-cells = ; reg = ;interrupts = ; rtc58 compatible = ti,ds1338; reg = ;interrupts = ;flash2,0 compatible = ti,omap2-nand, omap2-nand; reg = ;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-6280

36、19/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734;需要注意的事情,這個(gè)機(jī)器只有一個(gè)中斷控制器:interrupt-controller10140000。 中斷控制器節(jié)點(diǎn)上添加了inc:標(biāo)簽,該標(biāo)簽用于給根節(jié)點(diǎn)的 interrupt-parent 屬性分配 一個(gè) phandle。這個(gè) interrupt-parent 將成為本系統(tǒng)的默認(rèn)值,因?yàn)樗械淖庸?jié)點(diǎn)都將繼承它,除非顯示覆寫這個(gè)屬性。 每個(gè)設(shè)備使用 interrupts 屬性來不同的中斷輸入線。 #interrupt-cells 是 2,所以每個(gè)中斷指示符都有

37、 2 個(gè) cell。本例使用一種通用的模式,也就是用第一個(gè) cell 來編碼中斷線號(hào);然后用第二個(gè) cell 編碼標(biāo)志位,比如高電平/低電平有效,或者邊緣/水平觸發(fā)。對(duì)于任何給定的中斷控制器,請參考該控制器的 binding 文檔以了解指示符如何編碼。 1.5 特殊節(jié)點(diǎn)aliases 節(jié)點(diǎn) 引用一個(gè)特定的節(jié)點(diǎn),通常使用全路徑,如/external-bus/ethernet0,0,但當(dāng)用戶想知道的只是“那個(gè)設(shè)備是 eth0”時(shí),這樣的全路徑就變得很冗長。這時(shí),aliases 節(jié)點(diǎn)就可以用于指定一個(gè)設(shè)備全路徑的別名。例如: aliases display0 = &lcd0;操作系統(tǒng)更傾向于使用別名

38、,例如給一個(gè)設(shè)備分配一個(gè)識(shí)別符。 這里有一個(gè)新語法 display0 = &lcd0;,將作為字符串屬性并通過引用標(biāo)簽來指定一個(gè)節(jié)點(diǎn)的全路徑。這和之前的 phandle = ; 形式不同,這是把一個(gè) phandle 值插入進(jìn)一個(gè)cell。 1.6 備注參考鏈接:/Device_Tree_Usage。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628020/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97342 基于 AM

39、437x 平臺(tái)開發(fā)板 TL437x-EVM 代碼舉例2.1 led 舉例2.1.1 設(shè)備樹代碼 user_leds_default: user_leds_default pinctrl-single,pins = ;user_leds_sleep: user_leds_sleep pinctrl-single,pins = ;leds pinctrl-names = default, sleep; pinctrl-0 = ;pinctrl-1 = ;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628021/30技術(shù)論壇:ww

40、技術(shù)郵箱:技術(shù)熱線:020-3893-9734compatible = gpio-leds;led0 label = tl437x:green:heartbeat;gpios = ;linux,default-trigger = heartbeat; default-state = off;led1 label = tl437x:green:mmc0;gpios = ; linux,default-trigger = mmc0;default-state = off;led2 label = user-led0;gpios = ; d

41、efault-state = on;led3 label = user-led1;gpios = ; default-state = on;led4 label = user-led2;gpios = ; default-state = on;公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628022/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734led5 label = user-led3;gpios = ;default-state = on;2

42、.1.2 引腳配置說明 圖 1 AM437x-A2 LED 原理圖 圖 2 管腳偏移地址 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628023/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734圖 3 管腳功能選擇 引腳給高電平則點(diǎn)亮 led 燈。 led 相對(duì)應(yīng)引腳的偏移地址,偏移量大于 800h 的,則需要減去 800h,如 GPIO5_8 的偏移地址為 A38h,則在設(shè)備樹的值應(yīng)該為:A38h-800h=238h; 0x238 (PIN_OU

43、TPUT_PULLUP | MUX_MODE7),寄存器偏移地址(輸入輸出和上下拉 |功能模式)。 2.1.3 設(shè)備樹的 led 說明 pinctrl-names 定義了設(shè)備用到的狀態(tài)列表。狀態(tài)有兩種標(biāo)識(shí),一種就是 pinctrl-names定義的字符串列表,另外一種就是 ID。ID 從 0 開始,依次加 1。根據(jù)例子中的定義,stateID等于0(名字是user_leds_default)的狀態(tài)對(duì)應(yīng) pinctrl-0 屬性,stateID 等于 1(名字是user_leds_sleep)的狀態(tài)對(duì)應(yīng) pinctrl-1 屬性; default:default 狀態(tài)表示設(shè)備處于 active

44、時(shí)的狀態(tài),在內(nèi)核啟動(dòng)時(shí)也會(huì)配置 pin 腳為default 狀態(tài)。 sleep : sleep 狀態(tài)表示系統(tǒng)處于深度休眠時(shí)的 pin 腳狀態(tài)。compatible:該屬性在根目錄下 driversledsleds-gpio.c 中被讀取。 label:如果忽略 label,則標(biāo)簽是默認(rèn)取自節(jié)點(diǎn)名(不包括地址)。label 是唯一的標(biāo)識(shí)了一個(gè)設(shè)備,沒有其他設(shè)備(如 led)可以分配相同的標(biāo)簽。 linux,default-trigger :如果存在這個(gè)參數(shù),則它是分配給 led 的一個(gè)由字符串定義的觸發(fā)器,目前的觸發(fā)器類型有: backlight:led 將作為背光燈,由 framebuffer

45、 控制系統(tǒng)。 default-on:led 會(huì)點(diǎn)亮。 heartbeat:基于負(fù)載平均速率的基礎(chǔ)上,led 會(huì)實(shí)現(xiàn)雙閃。 公司官網(wǎng):銷售郵箱:公司總機(jī):020-8998-628024/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734 ide-disk:led 用于指示顯示磁盤活動(dòng)。 timer:led 將會(huì)以已配置好的頻率閃爍。 default-state:led 的初始狀態(tài),如果不存在這個(gè)屬性,則默認(rèn)關(guān)閉“off”。該屬性的有效值有“on”off keep,分別表示開、關(guān)、保持。 gpios:存儲(chǔ) gpio 的信息(包括 id,標(biāo)志 . )??梢园ㄖ付ǖ?GPIO 控制器節(jié)點(diǎn)的 cells 的數(shù)字。 內(nèi)核源碼中的說明文檔路徑: Document

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論