中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

wordpress的.htaccess北京優(yōu)化seo

wordpress的.htaccess,北京優(yōu)化seo,網(wǎng)站建設(shè) 工作方案,公司網(wǎng)站制作應(yīng)該注意些什么書接上回:Linux驅(qū)動(dòng)開發(fā)—設(shè)備樹基本概念,語法詳解-CSDN博客 文章目錄 使用設(shè)備樹描述中斷使用設(shè)備樹描述CPU節(jié)點(diǎn)CPU 節(jié)點(diǎn)緩存節(jié)點(diǎn)總結(jié) 使用設(shè)備樹描述時(shí)鐘總結(jié) 使用設(shè)備樹描述GPIO示例設(shè)備樹節(jié)點(diǎn)逐行解析GPIO 單元 使用設(shè)備樹描述中斷 在NXP 官方中截…

書接上回:Linux驅(qū)動(dòng)開發(fā)—設(shè)備樹基本概念,語法詳解-CSDN博客

文章目錄

    • 使用設(shè)備樹描述中斷
    • 使用設(shè)備樹描述CPU節(jié)點(diǎn)
      • CPU 節(jié)點(diǎn)
      • 緩存節(jié)點(diǎn)
      • 總結(jié)
    • 使用設(shè)備樹描述時(shí)鐘
      • 總結(jié)
    • 使用設(shè)備樹描述GPIO
      • 示例設(shè)備樹節(jié)點(diǎn)
      • 逐行解析
      • GPIO 單元

使用設(shè)備樹描述中斷

在NXP 官方中截取部分設(shè)備樹源碼分析為例。

gpio@5d0a0000 {compatible = "fsl,imx8qm-gpio\0fsl,imx35-gpio";reg = <0x00 0x5d0a0000 0x00 0x10000>;interrupts = <0x00 0x8a 0x04>;gpio-controller;#gpio-cells = <0x02>;power-domains = <0x10e>;interrupt-controller;#interrupt-cells = <0x02>;linux,phandle = <0xea>;phandle = <0xea>;
};

分析中斷信息,主要關(guān)注以下幾種字段;

interrupts: 定義與此GPIO控制器相關(guān)的中斷屬性。

  • 0x00: 中斷類型。
  • 0x8a: 中斷號。
  • 0x04: 中斷觸發(fā)類型,通常表示上升沿觸發(fā)。

interrupt-controller: 表示這是一個(gè)中斷控制器節(jié)點(diǎn)。interrupt-controller 屬性是一個(gè)布爾屬性,用于標(biāo)識該節(jié)點(diǎn)是一個(gè)中斷控制器。它不需要賦值,只要在節(jié)點(diǎn)中聲明即可。操作系統(tǒng)在解析設(shè)備樹時(shí),會識別該節(jié)點(diǎn)為一個(gè)中斷控制器,從而應(yīng)用相應(yīng)的處理邏輯。

#interrupt-cells: 定義中斷描述的單元數(shù)量,這里為2。在設(shè)備樹中,每個(gè)中斷源都需要一個(gè)描述,用于向操作系統(tǒng)傳達(dá)如何配置和處理該中斷源。

中斷也可能是多級引用—中斷控制器的級聯(lián),如下源碼所示

	interrupt-controller@51a00000 {compatible = "arm,gic-v3";reg = <0x00 0x51a00000 0x00 0x10000 0x00 0x51b00000 0x00 0xc0000 0x00 0x52000000 0x00 0x2000 0x00 0x52010000 0x00 0x1000 0x00 0x52020000 0x00 0x20000>;#interrupt-cells = <0x03>;interrupt-controller;interrupts = <0x01 0x09 0x3f04>;interrupt-parent = <0x01>;linux,phandle = <0x01>;phandle = <0x01>;};mu@5d1c0000 {compatible = "fsl,imx8-mu";reg = <0x00 0x5d1c0000 0x00 0x10000>;interrupts = <0x00 0xb1 0x04>;interrupt-parent = <0x01>;fsl,scu_ap_mu_id = <0x00>;status = "okay";};

interrupt-parent: 指向父中斷控制器的引用,值為0x01。

interrupts: 定義與此消息單元相關(guān)的中斷屬性。

  • 0x00: 中斷類型。
  • 0xb1: 中斷號。
  • 0x04: 中斷觸發(fā)類型(通常表示上升沿觸發(fā))。

interrupt-controller: 表示這是一個(gè)中斷控制器節(jié)點(diǎn)。

#interrupt-cells: 定義中斷描述的單元數(shù)量,這里為3。表示每個(gè)中斷描述需要三個(gè)單元。

  • 第一個(gè)單元:中斷類型或源。
  • 第二個(gè)單元:中斷號。
  • 第三個(gè)單元:中斷觸發(fā)類型或標(biāo)志。

使用設(shè)備樹描述CPU節(jié)點(diǎn)

每個(gè)CPU節(jié)點(diǎn)包含了描述該CPU核心的屬性,例如兼容性、寄存器地址、時(shí)鐘頻率等。以NXP IMX8QM為例

	cpus {#address-cells = <0x02>;#size-cells = <0x00>;idle-states {entry-method = "psci";cpu-sleep {compatible = "arm,idle-state";arm,psci-suspend-param = <0x00>;entry-latency-us = <0x2bc>;exit-latency-us = <0xfa>;min-residency-us = <0x3e8>;};cluster-sleep {compatible = "arm,idle-state";arm,psci-suspend-param = <0x1000000>;entry-latency-us = <0x3e8>;exit-latency-us = <0x2bc>;min-residency-us = <0xa8c>;wakeup-latency-us = <0x5dc>;};};cpu@0 {device_type = "cpu";compatible = "arm,cortex-a53";reg = <0x00 0x00>;enable-method = "psci";next-level-cache = <0x02>;operating-points = <0x124f80 0x00 0x10d880 0x00 0xdbba0 0x00 0x927c0 0x00>;clocks = <0x03 0x01>;clock-latency = <0xee6c>;#cooling-cells = <0x02>;linux,phandle = <0x6e>;phandle = <0x6e>;};cpu@1 {device_type = "cpu";compatible = "arm,cortex-a53";reg = <0x00 0x01>;enable-method = "psci";next-level-cache = <0x02>;};cpu@2 {device_type = "cpu";compatible = "arm,cortex-a53";reg = <0x00 0x02>;enable-method = "psci";next-level-cache = <0x02>;};cpu@3 {device_type = "cpu";compatible = "arm,cortex-a53";reg = <0x00 0x03>;enable-method = "psci";next-level-cache = <0x02>;};l2-cache0 {compatible = "cache";linux,phandle = <0x02>;phandle = <0x02>;};cpu@100 {device_type = "cpu";compatible = "arm,cortex-a72\0arm,armv8";reg = <0x00 0x100>;enable-method = "psci";next-level-cache = <0x04>;operating-points = <0x185a60 0x00 0x13c680 0x00 0x101d00 0x00 0x927c0 0x00>;clocks = <0x03 0x03>;clock-latency = <0xee6c>;#cooling-cells = <0x02>;linux,phandle = <0x05>;phandle = <0x05>;};cpu@101 {device_type = "cpu";compatible = "arm,cortex-a72\0arm,armv8";reg = <0x00 0x101>;enable-method = "psci";next-level-cache = <0x04>;linux,phandle = <0x06>;phandle = <0x06>;};l2-cache1 {compatible = "cache";linux,phandle = <0x04>;phandle = <0x04>;};};

CPU 節(jié)點(diǎn)

cpus節(jié)點(diǎn)里面包含物理CPU布局,也就是CPU的布局全部在此節(jié)點(diǎn)下描述

注:有些設(shè)備樹中描述大小核CPU,必須要用cpu-map,使用Cluster描述同一類型CPU,但是NXP中沒有使用這種命名命名方式,但是也將大小核心分開描述了

第一個(gè)簇 (Cluster) 的 CPU 節(jié)點(diǎn)

cpu@0cpu@3: 定義四個(gè) Cortex-A53 CPU核心。

  • device_type: 設(shè)備類型為cpu。
  • compatible: 兼容屬性,標(biāo)識為 arm,cortex-a53
  • reg: CPU的地址單元,分別為 0x00 0x00, 0x00 0x01, 0x00 0x02, 0x00 0x03。
  • enable-method: 啟用方法為 psci。
  • next-level-cache: 下一層緩存的引用,值為 0x02
  • operating-points: 操作點(diǎn),包含頻率和電壓對。
  • clocks: 時(shí)鐘源。
  • clock-latency: 時(shí)鐘延遲,值為 0xee6c。
  • #cooling-cells: 冷卻單元的數(shù)量,值為 0x02。
  • linux,phandlephandle: 句柄,用于唯一標(biāo)識該節(jié)點(diǎn)。

第二個(gè)簇 (Cluster) 的 CPU 節(jié)點(diǎn)

	cpu@100 {device_type = "cpu";compatible = "arm,cortex-a72\0arm,armv8";reg = <0x00 0x100>;enable-method = "psci";next-level-cache = <0x04>;operating-points = <0x185a60 0x00 0x13c680 0x00 0x101d00 0x00 0x927c0 0x00>;clocks = <0x03 0x03>;clock-latency = <0xee6c>;#cooling-cells = <0x02>;linux,phandle = <0x05>;phandle = <0x05>;};cpu@101 {device_type = "cpu";compatible = "arm,cortex-a72\0arm,armv8";reg = <0x00 0x101>;enable-method = "psci";next-level-cache = <0x04>;linux,phandle = <0x06>;phandle = <0x06>;};

cpu@100cpu@101: 定義兩個(gè) Cortex-A72 CPU核心。

  • device_type: 設(shè)備類型為cpu。
  • compatible: 兼容屬性,標(biāo)識為 arm,cortex-a72arm,armv8。
  • reg: CPU的地址單元,分別為 0x00 0x1000x00 0x101。
  • enable-method: 啟用方法為 psci
  • next-level-cache: 下一層緩存的引用,值為 0x04。
  • operating-points: 操作點(diǎn),包含頻率和電壓對。
  • clocks: 時(shí)鐘源。
  • clock-latency: 時(shí)鐘延遲,值為 0xee6c。
  • #cooling-cells: 冷卻單元的數(shù)量,值為 0x02
  • linux,phandlephandle: 句柄,用于唯一標(biāo)識該節(jié)點(diǎn)。

緩存節(jié)點(diǎn)

	l2-cache0 {compatible = "cache";linux,phandle = <0x02>;phandle = <0x02>;};l2-cache1 {compatible = "cache";linux,phandle = <0x04>;phandle = <0x04>;};

l2-cache0l2-cache1: 定義兩個(gè)二級緩存(L2緩存)。

  • compatible: 兼容屬性,標(biāo)識為 cache。
  • linux,phandlephandle: 句柄,用于唯一標(biāo)識該節(jié)點(diǎn)。

總結(jié)

這段設(shè)備樹描述了一個(gè)含有兩個(gè)簇(Cluster)的多核系統(tǒng),其中第一個(gè)簇包含四個(gè)Cortex-A53 CPU核心,第二個(gè)簇包含兩個(gè)Cortex-A72 CPU核心。每個(gè)CPU節(jié)點(diǎn)包含兼容性、寄存器地址、啟用方法、時(shí)鐘、操作點(diǎn)等屬性。還定義了兩個(gè)二級緩存節(jié)點(diǎn),并描述了系統(tǒng)的空閑狀態(tài)。這樣,操作系統(tǒng)可以根據(jù)設(shè)備樹信息正確地初始化和管理各個(gè)CPU核心及其相關(guān)硬件。

使用設(shè)備樹描述時(shí)鐘

例如下方NXP源碼

prg@560c0000 {compatible = "fsl,imx8qm-prg";reg = <0x00 0x560c0000 0x00 0x10000>;clocks = <0x03 0x144 0x03 0x13b>;clock-names = "apb\0rtram";power-domains = <0x0f>;status = "okay";linux,phandle = <0x79>;phandle = <0x79>;};

時(shí)鐘屬性

clocks = <0x03 0x141 0x03 0x138>;
clock-names = "apb\0rtram";

clocks: 指定設(shè)備所需的時(shí)鐘源。

  • <0x03 0x141>: 時(shí)鐘控制器(索引為 0x03)中的時(shí)鐘索引 0x141。
  • <0x03 0x138>: 時(shí)鐘控制器(索引為 0x03)中的時(shí)鐘索引 0x138。

clock-names: 為時(shí)鐘源命名。

  • "apb\0rtram": 兩個(gè)時(shí)鐘源的名稱分別是 apbrtram。

下一個(gè)例子:

i2c@56226000 節(jié)點(diǎn)描述了一個(gè) I2C 控制器的硬件信息,重點(diǎn)關(guān)注時(shí)鐘相關(guān)的屬性

i2c@56226000 {compatible = "fsl,imx8qm-lpi2c";reg = <0x00 0x56226000 0x00 0x1000>;interrupts = <0x08 0x04>;interrupt-parent = <0x8a>;clocks = <0x03 0x1d3 0x03 0x2f6>;clock-names = "per\0ipg";assigned-clocks = <0x03 0x1d3>;assigned-clock-rates = <0x16e3600>;power-domains = <0x8b>;status = "okay";#address-cells = <0x01>;#size-cells = <0x00>;pinctrl-names = "default";pinctrl-0 = <0x8c>;clock-frequency = <0x186a0>;};

時(shí)鐘屬性解析

clocks = <0x03 0x1d3 0x03 0x2f6>;
clock-names = "per\0ipg";
assigned-clocks = <0x03 0x1d3>;
assigned-clock-rates = <0x16e3600>;

clocks 屬性指定了該 I2C 控制器所依賴的時(shí)鐘源。

<0x03 0x1d3><0x03 0x2f6>

  • 0x03 是時(shí)鐘控制器的引用(即時(shí)鐘控制器節(jié)點(diǎn))。
  • 0x1d30x2f6 是時(shí)鐘控制器中不同的時(shí)鐘索引。

這表示該 I2C 控制器需要兩個(gè)時(shí)鐘源,分別位于時(shí)鐘控制器 0x030x1d30x2f6 索引處。

assigned-clocks 屬性指定要配置的時(shí)鐘源。在這個(gè)例子中,是 <0x03 0x1d3>(即 per 時(shí)鐘)。

assigned-clock-rates 屬性定義了該時(shí)鐘的頻率,這里是 0x16e3600,即 24MHz。

總結(jié)

在驅(qū)動(dòng)開發(fā)過程中,不需要過多關(guān)注如何在設(shè)備樹中編寫時(shí)鐘信息,而是更應(yīng)該關(guān)注如何在驅(qū)動(dòng)代碼中獲取和解析這些時(shí)鐘信息。時(shí)鐘信息的具體內(nèi)容和配置通常由硬件工程師或系統(tǒng)工程師來編寫和驗(yàn)證。驅(qū)動(dòng)開發(fā)者通過設(shè)備樹提供的接口和 Linux 內(nèi)核的時(shí)鐘管理 API 來操作時(shí)鐘,而不需要深入了解時(shí)鐘的硬件實(shí)現(xiàn)細(xì)節(jié)。這種分工可以提高開發(fā)效率和代碼的可維護(hù)性。

使用設(shè)備樹描述GPIO

使用設(shè)備樹描述一個(gè) GPIO 控制器時(shí),需要定義該控制器的基本屬性,如兼容性、寄存器地址、中斷、GPIO 單元的數(shù)量等。以NXP源碼為例

gpio@5d0a0000 {compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";reg = <0x00 0x5d0a0000 0x00 0x10000>;interrupts = <0x00 0x8a 0x04>;gpio-controller;#gpio-cells = <2>;power-domains = <0x10e>;interrupt-controller;#interrupt-cells = <2>;linux,phandle = <0xea>;phandle = <0xea>;
};

使用設(shè)備樹描述一個(gè) GPIO 控制器時(shí),需要定義該控制器的基本屬性,如兼容性、寄存器地址、中斷、GPIO 單元的數(shù)量等。以下是一個(gè)描述 GPIO 控制器的示例:

示例設(shè)備樹節(jié)點(diǎn)

gpio@5d0a0000 {compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";reg = <0x00 0x5d0a0000 0x00 0x10000>;interrupts = <0x00 0x8a 0x04>;gpio-controller;#gpio-cells = <2>;power-domains = <0x10e>;interrupt-controller;#interrupt-cells = <2>;linux,phandle = <0xea>;phandle = <0xea>;
};

逐行解析

  1. 節(jié)點(diǎn)名稱和地址

    gpio@5d0a0000 {
    
    • gpio@5d0a0000:表示 GPIO 控制器節(jié)點(diǎn),其地址為 0x5d0a0000。
  2. 兼容性

    compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
    
    • compatible 屬性表示設(shè)備兼容的驅(qū)動(dòng),優(yōu)先級從左到右。
  3. 寄存器地址

    reg = <0x00 0x5d0a0000 0x00 0x10000>;
    
    • reg 屬性定義設(shè)備的寄存器地址范圍。這里表示起始地址 0x5d0a0000,大小為 0x10000 字節(jié)。
  4. 中斷

    interrupts = <0x00 0x8a 0x04>;
    
    • interrupts 屬性定義設(shè)備使用的中斷。0x00 表示中斷類型,0x8a 是中斷號,0x04 是中斷觸發(fā)方式。
  5. GPIO 控制器標(biāo)志

    gpio-controller;
    #gpio-cells = <2>;
    
    • gpio-controller 屬性表示這是一個(gè) GPIO 控制器。
    • #gpio-cells 屬性定義每個(gè) GPIO 描述的單元數(shù),這里為 2
  6. 電源域

    power-domains = <0x10e>;
    
    • power-domains 屬性指定該設(shè)備所屬的電源域。
  7. 中斷控制器標(biāo)志

    interrupt-controller;
    #interrupt-cells = <2>;
    
    • interrupt-controller 屬性表示這是一個(gè)中斷控制器。
    • #interrupt-cells 屬性定義每個(gè)中斷描述的單元數(shù),這里為 2。
  8. phandle

    linux,phandle = <0xea>;
    phandle = <0xea>;
    
    • linux,phandlephandle 屬性是節(jié)點(diǎn)的唯一標(biāo)識符,用于引用該節(jié)點(diǎn)。

GPIO 單元

在設(shè)備樹中,#gpio-cells 屬性用于定義 GPIO 控制器節(jié)點(diǎn)中的 GPIO 單元(cells)的數(shù)量和結(jié)構(gòu)。這些單元描述了 GPIO 控制器的每個(gè) GPIO 引腳的特性和配置。在具體應(yīng)用中,GPIO 單元通常用于描述某個(gè)設(shè)備連接到的特定 GPIO 引腳及其配置方式。

常見的單元包括:

  1. GPIO 引腳編號:GPIO 控制器中引腳的編號。
  2. 標(biāo)志(flags):通常表示 GPIO 的輸入/輸出方向、上拉/下拉配置等。

在這個(gè)例子中,#gpio-cells = <2>; 表示每個(gè) GPIO 引腳用兩個(gè)單元來描述。

具體使用示例**—萬年不變的點(diǎn)一個(gè)LED燈**

假設(shè)有一個(gè)LED燈連接到某個(gè) GPIO 引腳,可以這么描述這個(gè)LED燈

led {compatible = "led_dev";gpios = <&gpio1 5 0>;
};

這里,gpios 屬性定義了一個(gè)連接到 GPIO 控制器的 GPIO 引腳,使用了三個(gè)參數(shù):

  1. GPIO 控制器的 phandle&gpio1 是一個(gè)指向 GPIO 控制器節(jié)點(diǎn)的引用。指定哪個(gè) GPIO 控制器負(fù)責(zé)管理該引腳。
  2. GPIO 引腳編號5 表示 GPIO 控制器中的第 5 號引腳。
  3. 標(biāo)志(flags)0 表示無特殊標(biāo)志(通常用于表示 GPIO 引腳的配置,如輸入/輸出方向等)。標(biāo)志的具體定義依賴于平臺和 GPIO 控制器的實(shí)現(xiàn)。
http://www.risenshineclean.com/news/55792.html

相關(guān)文章:

  • 東莞做網(wǎng)站找微客巴巴阿里指數(shù)網(wǎng)站
  • 做網(wǎng)站怎么掙錢賺錢職業(yè)培訓(xùn)機(jī)構(gòu)排名
  • 成都網(wǎng)站開發(fā)的公司網(wǎng)頁制作教程視頻
  • 建設(shè)大型網(wǎng)站seo推廣網(wǎng)絡(luò)
  • 購物網(wǎng)站如何做性能測試上海百度競價(jià)
  • 網(wǎng)站備案行業(yè)外貿(mào)網(wǎng)站seo推廣教程
  • 深圳網(wǎng)博網(wǎng)站建設(shè)app開發(fā)者需要更新此app
  • 用asp做網(wǎng)站網(wǎng)站空間費(fèi)用一年多少
  • 畢設(shè)網(wǎng)站可以用axure做嗎軟文營銷怎么寫
  • 網(wǎng)站建設(shè)的關(guān)鍵網(wǎng)絡(luò)推廣優(yōu)化工具
  • 生日祝福網(wǎng)頁鏈接制作360優(yōu)化大師官方網(wǎng)站
  • 政府網(wǎng)站建設(shè)匯報(bào)及時(shí)更新江蘇網(wǎng)站seo設(shè)計(jì)
  • 2018年網(wǎng)站優(yōu)化怎么做西安百度關(guān)鍵詞優(yōu)化
  • 一個(gè)vps可以建多少網(wǎng)站百度sem推廣
  • 移動(dòng)端網(wǎng)站和微信網(wǎng)頁設(shè)計(jì)推廣軟文營銷案例
  • 網(wǎng)站標(biāo)題格式青島網(wǎng)絡(luò)科技公司排名
  • 做外貿(mào)商城網(wǎng)站谷歌瀏覽器app下載安裝
  • 曰本真人做爰免費(fèi)網(wǎng)站上海百度移動(dòng)關(guān)鍵詞排名優(yōu)化
  • 南昌網(wǎng)站建設(shè)設(shè)計(jì)廣告營銷案例分析
  • 怎么申請自己的網(wǎng)站網(wǎng)址推廣賺錢的微信小程序
  • 封面型網(wǎng)頁網(wǎng)站有哪些優(yōu)秀網(wǎng)站設(shè)計(jì)欣賞
  • 打開網(wǎng)站彈出圖片代碼軟文推廣公司
  • flash教程網(wǎng)站首頁愛站查詢
  • 江西博網(wǎng)科技發(fā)展有限公司專業(yè)搜索引擎seo合作
  • 中文域名網(wǎng)站鏈接無法打開百度推廣網(wǎng)站一年多少錢
  • win2008系統(tǒng)做網(wǎng)站廣告設(shè)計(jì)公司
  • 網(wǎng)站設(shè)計(jì)做好的網(wǎng)站怎么優(yōu)化
  • 個(gè)人網(wǎng)站建設(shè)在哪里企業(yè)培訓(xùn)考試app
  • 淘寶代購網(wǎng)站怎么做網(wǎng)站推廣策劃書模板
  • 西寧網(wǎng)站建設(shè)加盟代理app營銷模式有哪些