版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Revision HistoryLinux 設(shè)備樹概述和使用說明 Draft DateRevision No.Description2018/3/22V1.01.初始版本。 公司官網(wǎng):銷售郵箱:公司總機: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é)點名稱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é)點201.6備注202 基于 AM437x 平臺開發(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):銷售郵箱:公司總機:020-8998-62802/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734更多幫助30公司官網(wǎng):銷售郵箱:公司總機:020-8998-62803/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97341 Linux 設(shè)備樹概述和
4、使用說明1.1 Linux 設(shè)備樹設(shè)備樹概述Linux 設(shè)備樹是一個包含節(jié)點和屬性的簡單樹狀結(jié)構(gòu)。屬性是基于 key-value 對的, 而節(jié)點可以同時包含屬性和子節(jié)點。下面這個樹就是一個典型結(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é)點的一些屬性: 一個單獨的根節(jié)點:“/” 兩個子節(jié)點:“node1”和“node2”公司官網(wǎng):銷售郵箱:公司總機:020-8998-62804/30技術(shù)論壇:技術(shù)郵箱:supporttronlon
6、技術(shù)熱線:020-3893-9734 兩個 node1 的子節(jié)點:“child-node1”和“child-node2” 一堆分散在樹里的屬性 可以這么簡單理解:節(jié)點就是樹枝,屬性就是樹葉;樹枝上可以有再長樹枝也可以長 樹葉,而樹葉上則不會再長樹枝。 屬性是基于 key-value 結(jié)構(gòu)的,value 可以為空或者特定格式的字符串內(nèi)容。由于數(shù)據(jù)類型并不被編碼到最終的數(shù)據(jù)結(jié)構(gòu)中,設(shè)備樹源代碼中僅能支持有限的幾種基本數(shù)據(jù)類 型,如下: 文本字符串(無結(jié)束符)可以用雙引號表示: string-property = a string Cells是 32 位無符號整數(shù),用尖括號表示: cell
7、-property = 二進制數(shù)據(jù)用方括號表示: binary-property = 0x01 0x23 0x45 0x67; 不同表示形式的數(shù)據(jù)可以使用逗號連在一起: mixed-property = a string, 0x01 0x23 0x45 0x67, ; 逗號也可用于創(chuàng)建字符串列表: string-list = red fish, blue fish;1.2 基本概念1.2.1 初始結(jié)構(gòu) 第一步就是構(gòu)建一個基本結(jié)構(gòu),這是一個設(shè)備樹最基本的結(jié)構(gòu)。在這個階段,需要一個唯一的標(biāo)識該機器。 / compatible = gpio-leds;公司官網(wǎng):銷售郵
8、箱:公司總機:020-8998-62805/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734compatible 指定了系統(tǒng)的名稱。它包含了一個“,”形式的字符串。重要的是要指定一個確切的設(shè)備,并且包括制造商的名字,以避免命名空間沖突。由于操作系統(tǒng)會使用compatible 的值來決定如何在機器上運行,所以正確的設(shè)置這個屬性十分重要。 1.2.2 中央處理器 第二步就是描述 CPU。先添加一個名為“cpus”的容器節(jié)點,然后為每個 CPU 分別添加子節(jié)點,以 TI AM437x 平臺為
9、例: / compatible = ti,am437x-gp-evm; cpus cpu0 compatible = ti,am4372;cpu1 compatible = ti,am4372;每個 cpu 節(jié)點 compatible 屬性是一個“,”形式的字符串,并指定了確切的 cpu,就像頂層的 compatible 屬性一樣。 1.2.3 節(jié)點名稱 每個節(jié)點必須有一個“”形式的名字。 名稱就是一個不超過 31 位的簡單 ascii 字符串。通常,節(jié)點的命名應(yīng)該根據(jù)它所體現(xiàn)的是什么樣的設(shè)備。比如一個 3com 以太網(wǎng)適配器的節(jié)點就應(yīng)該命名為ethernet,而不應(yīng)該是 3com509。 如
10、果該節(jié)點描述的設(shè)備有一個地址的話,還應(yīng)該加上設(shè)備地址(unit-address)。通常,地址就是用來訪問該設(shè)備的主地址,并且該地址也在節(jié)點的 reg 屬性中列出。 同級節(jié)點命名必須是唯一的,但只要地址不同,多個節(jié)點也可以使用一樣的通用名, 例如 serial101f1000 和 serial101f2000。 公司官網(wǎng):銷售郵箱:公司總機:020-8998-62806/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97341.2.4 設(shè)備 系統(tǒng)中每個設(shè)備都表示
11、為一個設(shè)備樹節(jié)點。所以接下來就應(yīng)該為這個設(shè)備樹填充設(shè)備節(jié)點。 / 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):銷售郵箱:公司總機: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)中的每個設(shè)備添加了節(jié)點,而且這個層次結(jié)構(gòu)也反映了設(shè)備
13、與系統(tǒng)的連接方式。例如,外部總線上的設(shè)備就是外部總線節(jié)點的子節(jié)點,i2c 設(shè)備就是 i2c總線節(jié)點的子節(jié)點。通常,這個層次結(jié)構(gòu)表現(xiàn)的是 CPU 視角的系統(tǒng)視圖。 在這顆樹中,應(yīng)該注意這些事情: 每個設(shè)備節(jié)點都擁有一個 compatible 屬性。 flash 閃存節(jié)點的 compatible 屬性由兩個字符串構(gòu)成。 正如前面所述,節(jié)點的命名應(yīng)當(dāng)反映設(shè)備的類型而不是特定的型號。 1.2.5 理解 compatible 屬性 設(shè)備樹中每個節(jié)點都需要一個 compatible 屬性。compatible 屬性是操作系統(tǒng)用來決定使用哪個設(shè)備驅(qū)動來綁定到一個設(shè)備上的關(guān)鍵因素。 compatible 是一
14、個字符串列表,其中第一個字符串指定了這個節(jié)點所表示的確切的設(shè)備, 該字符串的格式為:,。剩下的字符串的則表示其它與之相兼容的設(shè)備。 1.3 如何編址 可編址設(shè)備使用以下屬性將地址信息編碼進設(shè)備樹: reg公司官網(wǎng):銷售郵箱:公司總機:020-8998-62808/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734#address-cells #size-cells每個可編址設(shè)備都有一個元組列表的 reg,元組的形式為:reg = 。每個元組都表示一個該設(shè)備
15、使用的地址范圍。每個地址值是一個或多個 32 位整型數(shù)列表,稱為 cell。同樣,長度值也可以是一個 cell 列表或者為空。 由于地址和長度字段都是可變大小的變量,那么父節(jié)點的#address-cells 和#size-cells 屬性就用來聲明各個字段的 cell 的數(shù)量。換句話說,正確解釋一個 reg 屬性需要用到父節(jié)點的#address-cells 和#size-cells 的值。 1.3.1 CPU 編址 CPU 節(jié)點是一個關(guān)于編址的最簡單的例子。每個 CPU 都分配了一個唯一的 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é)點中,#address-cells 設(shè)置為 1,#size-cells 設(shè)置為 0。這意味著子節(jié)點的 reg值是一個單一的 uint32,這是一個不包含大小字段的地址,為這兩個 cpu 分配的地址是 0和 1 。cpu 節(jié)點的#size-cells 為 0 是因為只為每個 cpu 分配一個單獨的地址。 公司官網(wǎng):
17、銷售郵箱:公司總機:020-8998-62809/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734注意:reg 的值和節(jié)點名字是相同的。按照慣例,如果一個節(jié)點有 reg 屬性,那么該節(jié)點的名字就必須包含設(shè)備地址,這個設(shè)備地址就是 reg 屬性里第一個地址值。 1.3.2 內(nèi)存映射設(shè)備 與 cpu 節(jié)點里單一地址值不同,應(yīng)該分配給內(nèi)存映射設(shè)備一個地址范圍。#size-cells 聲明每個子節(jié)點的 reg 元組中長度字段的大小。在接下來的例子中,每個地址值是 1 個cell(32 位),每
18、個長度值也是 1 個 cell,這是典型的 32 位系統(tǒng)。64 位的機器則可以使用值為 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):銷售郵箱:公司總機:020-8998-628010/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734每個設(shè)備都被分配了一個基址以及該區(qū)域的大小。這個例子中為 GPIO 分配了兩個地址范圍:0x101f3000.0x101f3fff 和 0x101f4000.0x101f400f。 一些掛在總線上的設(shè)備有不同的編址方案。例如一個帶獨立片選線的設(shè)備也可以連接至外部總線。由于父節(jié)
20、點會為其子節(jié)點定義地址域,所以可以選擇不同的地址映射來最恰當(dāng)?shù)拿枋鲈撓到y(tǒng)。下面的代碼展示了設(shè)備連接至外部總線并將其片選號編碼進地址的地址分配。 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、值使用了兩個 cell,一個用于片選號,另一個則用于片選基址的偏移量。而長度字段則還是單個 cell,這是因為只有地址的偏移部分才需要一個范圍量。所以,在這個例子中,每個 reg 項都有三個 cell:片選號、偏移量和長度。 公司官網(wǎng):銷售郵箱:公司總機:020-8998-628011/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734由于地址域是包含于一個節(jié)點及其子節(jié)點的,所以父節(jié)點可以自由的定義任何對于該總線來說有意義的編址方案。那些在直接父節(jié)點和子節(jié)
22、點以外的節(jié)點通常不關(guān)心本地地址域,而地址應(yīng)該從一個域映射到另一個域。 1.3.3 非內(nèi)存映射設(shè)備 其他的設(shè)備沒有被映射到處理機總線上。雖然這些設(shè)備可以有一個地址范圍,但他們并不是由CPU 直接訪問。取而代之的是,父設(shè)備的驅(qū)動程序會代表CPU 執(zhí)行簡介訪問。 以 i2c 設(shè)備為例,每個設(shè)備都分配了一個地址,但并沒有與之關(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é)點的本地地址,我們還沒有描述如何將這些地址映射成 CPU 可使用的地址。 公司官網(wǎng):銷售郵箱:公司總機:020-8998-628012/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734根節(jié)點始終描述的是 CPU 視角的地址空間。根節(jié)點的子節(jié)點已經(jīng)使用的是 CPU 的地址域,所以它們不需要任何直接映射。例如,serial101f0000 設(shè)備就是直接分配的0x1
24、01f0000 地址。 那些非根節(jié)點直接子節(jié)點的節(jié)點就沒有使用 CPU 地址域。為了得到一個內(nèi)存映射地址,設(shè)備樹必須指定從一個域到另一個域地址轉(zhuǎn)換地方法,而 ranges 屬性就起作用了。下面就是一個添加了 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):銷售郵箱:公司總機: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 是一個地址轉(zhuǎn)換列表。ranges 表中的每一項都是一個包含子地址、父地址和在子地址空間中區(qū)域大小的元組。每個字段的值都取決于子節(jié)點的#address-cells、父節(jié)點的#address-cells 和子節(jié)點的#size-cells。以本例中的外部總線來說,子地址是 2 個 cell、父地址是 1 個 cell、區(qū)域大小也是 1 個 cell。那么三個 ranges 被翻譯為: 公司官網(wǎng):銷售郵箱:公司總機: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é)點可以添加一個空的 range 屬性。一個空的 range 屬性意味著子地址將被 1:1 映射到父地址空間。 你有可能會問當(dāng)全都可以設(shè)計成 1:1 映射的時候為何還要
28、使用地址轉(zhuǎn)換。答案就是, 有一些具有完全不同地址空間的總線(比如 PCI),而它們的細(xì)節(jié)需要暴露給操作系統(tǒng)。另外一些帶有 DMA 引擎的設(shè)備需要知道總線上的真實地址。有時有需要將設(shè)備組合到一塊,因為他們共享相同的軟件可編程物理地址映射。是否應(yīng)該使用 1:1 映射在很大程度上取決于來自操作系統(tǒng)的信息以及硬件設(shè)計。 你還應(yīng)該注意到在 i2c1,0 節(jié)點中并沒有 range 屬性。不同于外部總線,這里的原因是i2c 總線上的設(shè)備并沒有被內(nèi)存映射到 CPU 的地址域。相反,CPU 將通過 i2c1,0 設(shè)備間接訪問 rtc58 設(shè)備。缺少 ranges 屬性意味著這個設(shè)備將不能被出他的父設(shè)備之外的任何
29、設(shè)備直接訪問。 1.4 中斷如何工作與遵循樹的自然結(jié)構(gòu)而進行的地址轉(zhuǎn)換不同,機器上的任何設(shè)備都可以發(fā)起和終止中斷 信號。另外地址的編址也不同于中斷信號,前者是設(shè)備樹的自然表示,而后者者表現(xiàn)為獨立于設(shè)備樹結(jié)構(gòu)的節(jié)點之間的鏈接。描述中斷連接需要四個屬性: interrupt-controller:一個空的屬性定義該節(jié)點作為一個接收中斷信號的設(shè)備。 #interrupt-cells:這是一個中斷控制器節(jié)點的屬性。它聲明了該中斷控制器的中斷指示符中 cell 的個數(shù)(類似于#address-cells 和#size-cells)。 interrupt-paren:這是一個設(shè)備節(jié)點的屬性,包含一個指向該
30、設(shè)備連接的中斷控制器的phandle。那些沒有 interrupt-parent 的節(jié)點則從它們的父節(jié)點中繼承該屬性。 Interrupts:一個設(shè)備節(jié)點屬性,包含一個中斷指示符的列表,對應(yīng)于該設(shè)備上的每個中斷輸出信號。 中斷指示符是一個或多個 cell 的數(shù)據(jù)(由#interrupt-cells 指定),這些數(shù)據(jù)指定了該設(shè)備連接至哪些輸入中斷。在以下的例子中,大部分設(shè)備都只有一個輸出中斷,但也有 公司官網(wǎng):銷售郵箱:公司總機:020-8998-628015/30技術(shù)論壇:技術(shù)郵箱:supporttro
31、技術(shù)熱線:020-3893-9734可能在一個設(shè)備上有多個輸出中斷。一個中斷指示符的意義完全取決于與中斷控制器設(shè)備的 binding。每個中斷控制器可以決定使用幾個 cell 來唯一的定義一個輸入中斷。下面的代碼添加了中斷連接: / 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):銷售郵箱:公司總機: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):銷售郵箱:公司總機: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):銷售郵箱:公司總機: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):銷售郵箱:公司總機:020-8998-6280
36、19/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734;需要注意的事情,這個機器只有一個中斷控制器:interrupt-controller10140000。 中斷控制器節(jié)點上添加了inc:標(biāo)簽,該標(biāo)簽用于給根節(jié)點的 interrupt-parent 屬性分配 一個 phandle。這個 interrupt-parent 將成為本系統(tǒng)的默認(rèn)值,因為所有的子節(jié)點都將繼承它,除非顯示覆寫這個屬性。 每個設(shè)備使用 interrupts 屬性來不同的中斷輸入線。 #interrupt-cells 是 2,所以每個中斷指示符都有
37、 2 個 cell。本例使用一種通用的模式,也就是用第一個 cell 來編碼中斷線號;然后用第二個 cell 編碼標(biāo)志位,比如高電平/低電平有效,或者邊緣/水平觸發(fā)。對于任何給定的中斷控制器,請參考該控制器的 binding 文檔以了解指示符如何編碼。 1.5 特殊節(jié)點aliases 節(jié)點 引用一個特定的節(jié)點,通常使用全路徑,如/external-bus/ethernet0,0,但當(dāng)用戶想知道的只是“那個設(shè)備是 eth0”時,這樣的全路徑就變得很冗長。這時,aliases 節(jié)點就可以用于指定一個設(shè)備全路徑的別名。例如: aliases display0 = &lcd0;操作系統(tǒng)更傾向于使用別名
38、,例如給一個設(shè)備分配一個識別符。 這里有一個新語法 display0 = &lcd0;,將作為字符串屬性并通過引用標(biāo)簽來指定一個節(jié)點的全路徑。這和之前的 phandle = ; 形式不同,這是把一個 phandle 值插入進一個cell。 1.6 備注參考鏈接:/Device_Tree_Usage。 公司官網(wǎng):銷售郵箱:公司總機:020-8998-628020/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-97342 基于 AM
39、437x 平臺開發(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):銷售郵箱:公司總機: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):銷售郵箱:公司總機: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):銷售郵箱:公司總機:020-8998-628023/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734圖 3 管腳功能選擇 引腳給高電平則點亮 led 燈。 led 相對應(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)識,一種就是 pinctrl-names定義的字符串列表,另外一種就是 ID。ID 從 0 開始,依次加 1。根據(jù)例子中的定義,stateID等于0(名字是user_leds_default)的狀態(tài)對應(yīng) pinctrl-0 屬性,stateID 等于 1(名字是user_leds_sleep)的狀態(tài)對應(yīng) pinctrl-1 屬性; default:default 狀態(tài)表示設(shè)備處于 active
44、時的狀態(tài),在內(nèi)核啟動時也會配置 pin 腳為default 狀態(tài)。 sleep : sleep 狀態(tài)表示系統(tǒng)處于深度休眠時的 pin 腳狀態(tài)。compatible:該屬性在根目錄下 driversledsleds-gpio.c 中被讀取。 label:如果忽略 label,則標(biāo)簽是默認(rèn)取自節(jié)點名(不包括地址)。label 是唯一的標(biāo)識了一個設(shè)備,沒有其他設(shè)備(如 led)可以分配相同的標(biāo)簽。 linux,default-trigger :如果存在這個參數(shù),則它是分配給 led 的一個由字符串定義的觸發(fā)器,目前的觸發(fā)器類型有: backlight:led 將作為背光燈,由 framebuffer
45、 控制系統(tǒng)。 default-on:led 會點亮。 heartbeat:基于負(fù)載平均速率的基礎(chǔ)上,led 會實現(xiàn)雙閃。 公司官網(wǎng):銷售郵箱:公司總機:020-8998-628024/30技術(shù)論壇:技術(shù)郵箱:技術(shù)熱線:020-3893-9734 ide-disk:led 用于指示顯示磁盤活動。 timer:led 將會以已配置好的頻率閃爍。 default-state:led 的初始狀態(tài),如果不存在這個屬性,則默認(rèn)關(guān)閉“off”。該屬性的有效值有“on”off keep,分別表示開、關(guān)、保持。 gpios:存儲 gpio 的信息(包括 id,標(biāo)志 . )??梢园ㄖ付ǖ?GPIO 控制器節(jié)點的 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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)浴活動拍攝方案策劃(3篇)
- 蓋板破除施工方案(3篇)
- 鐵馬圍欄施工方案(3篇)
- 房屋排險施工方案(3篇)
- 國旗桿施工方案(3篇)
- 2025年食品行業(yè)質(zhì)量安全控制手冊
- 基層醫(yī)院PCCM建設(shè)方案
- 微型西瓜飲品培訓(xùn)方案
- 2025年高職(軟件技術(shù))嵌入式開發(fā)綜合測試題及答案
- 2025年高職第一學(xué)年(醫(yī)學(xué)檢驗技術(shù))臨床檢驗基礎(chǔ)階段測試試題及答案
- 陜西省西安市雁塔區(qū)高新一中2024-2025學(xué)年九上物理期末經(jīng)典試題含解析
- 2025至2030關(guān)節(jié)鏡裝置行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- DB11∕T 2204-2023 房屋建筑和市政基礎(chǔ)設(shè)施電氣工程施工質(zhì)量驗收標(biāo)準(zhǔn)
- 王者榮耀介紹
- 社會保障學(xué)-終考測試-國開(ZJ)-參考資料
- 貴州省貴陽市2024-2025學(xué)年九年級上學(xué)期1月期末考試化學(xué)試題
- 驛站轉(zhuǎn)讓協(xié)議書范本
- 知識圖譜賦能高校課程混合教學(xué)設(shè)計研究
- 售后維修工程師述職報告
- 2025年河北省職業(yè)院校技能大賽高職組(商務(wù)數(shù)據(jù)分析賽項)參考試題庫(含答案)
- 人教版四年級上數(shù)學(xué)第一學(xué)期期末測試卷一(含答案)
評論
0/150
提交評論