日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

生成设备树Blob

發(fā)布時(shí)間:2024/9/27 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成设备树Blob 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該頁面涵蓋了使用Xilinx工具生成devicetree源(DTS)文件以及使用標(biāo)準(zhǔn)開源工具構(gòu)建/編譯這些源文件的過程。特別是,將涉及使用Xilinx設(shè)備樹生成器(DTG)從Xilinx硬件項(xiàng)目生成DTS文件,而將涉及設(shè)備樹編譯器(DTC)將DTS文件編譯為設(shè)備樹二進(jìn)制文件(DTB)。盡管DTB的主要用途是將其提供給Linux內(nèi)核,以便可以將Linux正確初始化為特定的硬件,但是DTB也可以與QEMU一起使用,以仿真Linux和獨(dú)立系統(tǒng)的硬件。

目錄

?

  • 子頁面
  • 設(shè)備樹101
    • 什么是devicetree?
    • Devicetree基礎(chǔ)
    • Devicetree語法示例
    • 設(shè)備樹屬性
  • 設(shè)備樹生成器(DTG)
    • 任務(wù)依賴項(xiàng)(先決條件)
    • 任務(wù)輸出產(chǎn)品
    • 第1步:獲取DTG源
    • 步驟2:生成DTS文件
      • 使用XSCT生成DTS文件
      • 使用Xilinx SDK生成DTS文件(GUI流:工具版本2014.2-2019.1)
        • 從硬件項(xiàng)目生成HDF文件(如果尚不可用)
        • 從SDK生成設(shè)備樹源(.dts / .dtsi)文件
      • 使用HSI生成DTS文件(XSCT不贊成使用CLI流)
      • 使用HSM生成DTS文件(XSCT不贊成使用CLI流)
      • 使用XPS / SDK生成DTS文件(舊版GUI流程:工具版本2014.1及更低版本)
    • 步驟3:僅對(duì)獨(dú)立的MicroBlaze仿真進(jìn)行附加檢查
    • DTG局限性
    • 2020.1的新功能:
    • DTG支持的驅(qū)動(dòng)程序列表及其在Linux樹中的綁定
  • 編譯Devicetree源
    • 步驟1:獲取Devicetree編譯器源
    • 步驟2:預(yù)處理Devicetree源
    • 步驟3:從DTS編譯Devicetree Blob(.dtb)文件
    • 雜項(xiàng)
      • 替代:僅適用于ARM
      • Devicetree二進(jìn)制比較
  • 高級(jí)DTG主題
    • 如何從DTG啟用DT OVERLAY
    • 為自定義硬件和驅(qū)動(dòng)程序自定義/擴(kuò)展DTG
      • 相關(guān)檔案
      • 驅(qū)動(dòng)定義
      • 如何將新的驅(qū)動(dòng)程序添加到DTG
  • 發(fā)行說明
  • 建立步驟
  • 相關(guān)鏈接

?

子頁面

?

  • 多媒體IP的DTG限制

?

設(shè)備樹101

什么是devicetree?

設(shè)備樹或簡(jiǎn)稱為DT是描述硬件的數(shù)據(jù)結(jié)構(gòu)。它描述了可由Linux等操作系統(tǒng)讀取的硬件,因此不需要對(duì)計(jì)算機(jī)的詳細(xì)信息進(jìn)行硬編碼。
Linux基本上將DT用于平臺(tái)識(shí)別,運(yùn)行時(shí)配置(如bootargs)和設(shè)備節(jié)點(diǎn)填充。

Devicetree基礎(chǔ)

設(shè)備樹中的每個(gè)驅(qū)動(dòng)程序或模塊均由該節(jié)點(diǎn)定義,并且其所有屬性均在該節(jié)點(diǎn)下定義。基于驅(qū)動(dòng)程序,它可以具有子節(jié)點(diǎn)或父節(jié)點(diǎn)。

例如,通過SPI總線連接的設(shè)備將以SPI總線控制器作為其父節(jié)點(diǎn),而該設(shè)備將成為spi節(jié)點(diǎn)的子節(jié)點(diǎn)之一。根節(jié)點(diǎn)是所有節(jié)點(diǎn)的父節(jié)點(diǎn)。

在根節(jié)點(diǎn)下通常包括
1)CPU節(jié)點(diǎn)信息
2)內(nèi)存信息
3)選擇的配置數(shù)據(jù)可以包括內(nèi)核參數(shù)字符串和initrd映像的位置
4)別名
5)定義總線信息的節(jié)點(diǎn)

Devicetree語法示例

zynqmp-example.dtsi
/ { ????compatible =?"xlnx,zynqmp"; ????#address-cells = <2>; ????#size-cells = <2>; ?? ????cpus { ???????#address-cells = <1>; ???????#size-cells = <0>; ?? ???????cpu0: cpu@0 { ????????????????compatible =?"arm,cortexa53",?"arm,armv8"; ????????????????device-type?=?"cpu"; ????????????????enable-method =?"psci"; ????????????????operating-points-v2 = <&cpu_opp_table>; ????????????????reg = <0x0>; ????????????????cpu-idle-states = <&CPU_SLEEP_0>; ????????}; ?? ????????cpu1: cpu@1 { ???????????????compatible =?"arm,cortexa53",?"arm,armv8"; ???????????????device-type?=?"cpu"; ???????????????enable-method =?"psci"; ???????????????operating-points-v2 = <&cpu_opp_table>; ???????????????reg = <0x1>; ???????????????cpu-idle-states = <&CPU_SLEEP_0>; ????????}; ??}; ?? ??chosen { ???????????bootargs =?"earlycon clk_ignore_unused"; ??}; ?? ??memory { ??????????device-type?=?"memory"; ??????????reg = <0x0 0x0 0x0 0x80000000>, <0x00000008 0x0 0x0 0x80000000>; ??}; ?? ??amba_apu: amba_apu@0 { ??????????????compatible =?"simple-bus"; ??????????????#address-cells = <2>; ??????????????#size-cells = <1>; ??????????????ranges = <0 0 0 0 0xffffffff>; ??????????????gic: interrupt-controller@f9010000 { ????????????????????????compatible =?"arm,gic-400",?"arm,cortex-a15-gic"; ????????????????????????#interrupt-cells = <3>; ????????????????????????reg = <0x0 0xf9010000 0x10000>, ???????????????????????????????0x0 0xf9020000 0x20000>, ???????????????????????????????0x0 0xf9040000 0x20000>, ???????????????????????????????0x0 0xf9060000 0x20000>, ????????????????????????interrupt-controller; ????????????????????????interrupt-parent = <&gic>; ????????????????????????interrupts =<1 9 0xf04>; ??????????????}; ??}; ?? ??amba: amba { ??????????compatible =?"simple-bus"; ??????????#address-cells = <2>; ??????????#size-cells = <2>; ??????????ranges; ??????????can0: can@ff060000 { ?????????????????????compatible =?"xlnx,zynq-can-1.0"; ?????????????????????clock-names =?"can_clk",?"pclk"; ?????????????????????reg =<0x0 0xff060000 0x0 0x1000>; ?????????????????????interrupts = <0 23 4>; ?????????????????????interrupt-parent = <&gic>; ?????????????????????tx-fifo-depth = <0x40>; ?????????????????????rx-fifo-depth = <0x40>; ?????????????????????power-domains = <&pd_can0>; ??????????}; ??};

設(shè)備樹屬性

兼容:頂級(jí)兼容屬性通常為電路板然后為SoC定義一個(gè)兼容字符串。
值始終以最具體的優(yōu)先為準(zhǔn),最后指定的最不具體為準(zhǔn)。
#address-cells:該屬性指示在reg屬性中形成基地址部分需要多少個(gè)單元(即32位值)。
#size-cells:reg屬性的大小部分。
interrupt-controller:是一個(gè)布爾型屬性,指示當(dāng)前節(jié)點(diǎn)是一個(gè)中斷控制器。
#interrupt-cells:指示由所選中斷控制器管理的中斷的interrupts屬性中的單元數(shù)。
中斷父母:是一個(gè)虛擬對(duì)象,它指向當(dāng)前節(jié)點(diǎn)的中斷控制器。通常,主中斷控制器有一個(gè)頂級(jí)中斷父級(jí)定義。

設(shè)備樹生成器(DTG)

DTG旨在幫助用戶構(gòu)建其特定于硬件的DTS文件。為自定義硬件構(gòu)建DTS始終是一個(gè)手動(dòng)過程,但是DTG可以幫助用戶快速入門。這是因?yàn)榭梢詮挠布唤游募?#xff08;XSA)中的信息中提取DTS中捕獲的許多信息。DTG會(huì)根據(jù)提供的XSA文件為各種DTS文件填充盡可能多的信息,然后要求用戶填寫空白或根據(jù)需要進(jìn)行調(diào)整。

版本檢查

對(duì)于較早版本的Xilinx工具,使用DTG的過程有所不同。此外,對(duì)于某些工具版本,可能存在GUI流程和CLI流程。下面的“生成DTS文件”部分為每個(gè)不同的過程提供了幾個(gè)小節(jié)。如果您沒有使用最新版本的Xilinx工具,請(qǐng)確保參考所提供的第一個(gè)部分之外的適當(dāng)子部分。

任務(wù)??依賴項(xiàng)(先決條件)

  • DTG來源

  • Xilinx Vivado工具(以前是HDF)生成的XSA硬件交接文件

  • Xilinx Vitis安裝(或以前的Xilinx SDK)

任務(wù)輸出產(chǎn)品

DTG生成帶有* .dts和* .dtsi文件擴(kuò)展名的DTS文件。將有一個(gè)帶有* include語句的頂級(jí)* .dts文件,以引用單獨(dú)的DTS包含(DTSI)文件。使用DTSI文件可以在不同文件之間組織信息。例如,如下文更詳細(xì)描述的,一個(gè)DTSI可以用來描述固定硬件(即固定在硅片上),而另一個(gè)DTSI可以用來描述動(dòng)態(tài)硬件(即可編程邏輯中的IP)。

通常,對(duì)于SOC,將有一個(gè)靜態(tài)的dts / dtsi文件,但是當(dāng)涉及FPGA時(shí),可能會(huì)有許多復(fù)雜的設(shè)計(jì),其外圍邏輯(PL)IP可能會(huì)有所不同,或者可能具有不同的配置。
對(duì)于這些復(fù)雜的FPGA設(shè)計(jì),我們需要一個(gè)設(shè)備樹生成器(DTG),在其中它可以為這些設(shè)計(jì)自動(dòng)生成dts / dtsi。

生成后,輸出目錄中將提供不同的文件,例如pl.dtsi,pcw.dtsi,system-top.dts,zynqmp.dtsi,zynqmp-clk-ccf.dtsi。這些文件如下所述。

  • pl.dtsi:這是一個(gè)文件,所有存儲(chǔ)器映射的外圍邏輯(PL)IP節(jié)點(diǎn)都將可用。
  • pcw.dtsi:這是PS外設(shè)需要?jiǎng)討B(tài)屬性的文件。
  • system-top.dts:這是一個(gè)文件,其中包含內(nèi)存信息,早期控制臺(tái)和引導(dǎo)參數(shù)。
  • zynqmp.dtsi:此文件包含所有PS外圍設(shè)備信息以及cpu信息。
  • zynqmp-clk-ccf.dtsi:此文件包含外圍IP的所有時(shí)鐘信息。


除了這些文件以外,它還會(huì)基于board在同一輸出目錄dt?/?下生成一個(gè)board.dtsi文件。例如,如果板卡是zcu111-reva,則它將生成dt / zcu111-reva.dtsi。

  • zcu111-reva.dtsi:它包含所有板子特定的屬性,例如i2c可能已連接到某個(gè)從站等。

實(shí)際文件輸出將根據(jù)設(shè)備架構(gòu)(例如ZynqUS +與Zynq-7000與MicroBlaze)而有所不同。

第1步:獲取DTG源

DTG是一個(gè)開源實(shí)用程序,其源代碼發(fā)布在Xilinx GitHub網(wǎng)站上。它使用解釋語言(Tcl),因此無需編譯源代碼。

git clone https://github.com/Xilinx/device-tree-xlnx cd device-tree-xlnx git checkout <xilinx-v201X.X>

在上面的最后一個(gè)命令中,<xilinx-v201X.X>應(yīng)該替換為有效的標(biāo)記值(例如“ xilinx-v2019.2”)。可以使用命令“ git tag”列出可用的標(biāo)簽。

步驟2:生成DTS文件

僅遵循適用于您的用例的以下各個(gè)小節(jié)。

使用XSCT生成DTS文件

  • 來源Xilinx設(shè)計(jì)工具
  • 運(yùn)行XSCT(從2015.1工具版本開始可用)

    xsct
  • 打開XSA / HDF文件

    hsi open_hw_design <design_name>.<xsa|hdf>
  • 設(shè)置存儲(chǔ)庫(kù)路徑(在SDK的上一步中完成克隆)(在Windows上,使用此格式set_repo_path {C:\ device-tree-xlnx})

    hsi set_repo_path <path to device-tree-xlnx repository>
  • 創(chuàng)建軟件設(shè)計(jì)并設(shè)置CPU。-proc選項(xiàng)應(yīng)為以下值之一:對(duì)于Versal“?psv_cortexa72_0?”,對(duì)于ZynqMP“?psu_cortexa53_0?”,對(duì)于Zynq-7000“?ps7_cortexa9_0?”,對(duì)于Microblaze“?microblaze_0?”。

    hsi create_sw_design device-tree -os device_tree -proc psv_cortexa72_0
  • 生成DTS / DTSI文件到my_dts文件夾,將在其中生成輸出DTS / DTSI文件

    hsi generate_target -dir my_dts
  • 清理。?

    hsi close_hw_design [current_hw_design] exit
  • 請(qǐng)注意,作為XSCT用戶指南文檔的補(bǔ)充,可以在此處找到有關(guān)使用HSI的一些技巧:??HSI調(diào)試和優(yōu)化技術(shù)。例如,可以在此處找到列出硬件設(shè)計(jì)中所有處理器單元的命令(即IP_TYPE == PROCESSOR);這些處理器單元名稱代表上述步驟5中-proc選項(xiàng)的有效值。

    使用Xilinx SDK生成DTS文件(GUI流:工具版本2014.2-2019.1)

    從硬件項(xiàng)目生成HDF文件(如果尚不可用)

  • 在Vivado中打開硬件項(xiàng)目。
  • 生成模塊設(shè)計(jì)
  • IP Integrator: Generate Block Design # Export the hardware system to SDK: Vivado Menu: File > Export > Export Hardware

    ?(在<project_name> .sdk HDF文件中生成)
    ?

    從SDK生成設(shè)備樹源(.dts / .dtsi)文件

  • 從Vivado打開SDK或通過命令行打開SDK(xsdk -hwspec <文件名> .hdf -workspace <workspace>

    Vivado Menu: File > Launch SDK
  • ?
  • 需要從Xilinx克隆Device Tree Generator Git存儲(chǔ)庫(kù)。有關(guān)Git的更多信息,請(qǐng)參見Fetch Sources頁面。

    # Otherwise?for?SDK?2014.2?use?this?repo: git clone git://github.com/Xilinx/device-tree-xlnx.git
  • 在SDK中添加BSP存儲(chǔ)庫(kù)(對(duì)于SDK 2014.2,然后從檢出的git區(qū)域中選擇“ device-tree-xlnx”):

    SDK Menu: Xilinx Tools > Repositories > New... (<bsp repo>) > OK
  • 創(chuàng)建設(shè)備樹板支持包(BSP):

    SDK Menu: File > New > Board Support Package > Board Support Package OS: device-tree > Finish
  • 將出現(xiàn)一個(gè)BSP設(shè)置窗口。也可以通過打開設(shè)備樹BSP的system.mss文件并單擊“修改此BSP的設(shè)置”來訪問此窗口。填寫適當(dāng)?shù)闹?#xff1a;
    • 'bootargs'參數(shù)指定在引導(dǎo)時(shí)(內(nèi)核命令行)傳遞給內(nèi)核的參數(shù)。***
    • “控制臺(tái)設(shè)備”參數(shù)指定將使用哪個(gè)串行輸出設(shè)備。從下拉列表中選擇一個(gè)值。

  • .dts / .dtsi文件現(xiàn)在位于<SDK工作空間> / device_tree_bsp_0 /文件夾中。

    ***例如console = <tty>,<baudrate> root = / dev / ram rw ip = ::::: eth0:dhcp earlyprintk?
    *** <tty>的一些示例值是使用Zynq時(shí)的ttyPS0,使用時(shí)是ttyUL0 UART Lite軟ip或使用UART16550軟ip時(shí)為ttyS0。

    使用HSI生成DTS文件(XSCT不贊成使用CLI流)

    從2019.2版工具開始,HSI作為獨(dú)立的實(shí)用工具不再可用,并且必須從XSCT運(yùn)行HSI命令。另請(qǐng)注意,自從2015.1工具版本引入XSCT以來,它就一直支持HSI命令。

  • 來源Xilinx設(shè)計(jì)工具
  • 運(yùn)行HSI(工具版本2014.4-2019.1)

    hsi
  • 打開HDF文件?

    open_hw_design <design_name>.hdf
  • 設(shè)置存儲(chǔ)庫(kù)路徑(在SDK的上一步中完成克隆)(在Windows上,使用此格式set_repo_path {C:\ device-tree-xlnx})?

    set_repo_path <path to device-tree-xlnx repository>
  • 創(chuàng)建軟件設(shè)計(jì)和設(shè)置CPU(用于ZynqMP psu_cortexa53_0,用于Zynq ps7_cortexa9_0,用于Microblaze microblaze_0)?

    create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0
  • set_property CONFIG.periph_type_overrides“ {BOARD zcu102-rev1.0}” [get_os]?

    set_property CONFIG.periph_type_overrides?"{BOARD zcu102-rev1.0}"?[get_os]
  • 生成DTS / DTSI文件到my_dts文件夾,將在其中生成輸出DTS / DTSI文件?

    generate_target -dir my_dts
  • 在生成的my_dts文件夾中,應(yīng)該存在zcu102-rev1.0.dtsi文件。
  • ?

    使用HSM生成DTS文件(XSCT不贊成使用CLI流)

    從2019.2版工具開始,HSM不再作為獨(dú)立實(shí)用程序提供,并且已被XSCT中的HSI命令棄用。另請(qǐng)注意,自從2015.1工具版本引入XSCT以來,它就一直支持HSI命令。

  • 來源Xilinx設(shè)計(jì)工具
  • 運(yùn)行HSM(工具版本2014.4-2019.1)

    hsm
  • 打開HDF文件

    open_hw_design <design_name>.hdf
  • 設(shè)置存儲(chǔ)庫(kù)路徑(在SDK的上一步中完成克隆)(在Windows上,使用此格式set_repo_path {C:\ device-tree-xlnx})

    set_repo_path <path to device-tree-xlnx repository>
  • 創(chuàng)建軟件設(shè)計(jì)和設(shè)置CPU(用于ZynqMP psu_cortexa53_0,用于Zynq ps7_cortexa9_0,用于Microblaze microblaze_0)

    create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0
  • 生成DTS / DTSI文件到my_dts文件夾,將在其中生成輸出DTS / DTSI文件

    generate_target -dir my_dts
  • 使用XPS / SDK生成DTS文件(舊版GUI流程:工具版本2014.1及更低版本)

  • 在XPS中打開硬件項(xiàng)目。
  • 將硬件系統(tǒng)導(dǎo)出到SDK。?

    注意:以下說明中克隆的GitHub存儲(chǔ)庫(kù)不再在線可用。請(qǐng)聯(lián)系您當(dāng)?shù)氐腇AE獲取存檔副本,或請(qǐng)求訪問Xilinx Space Lounge。

  • XPS Menu: Project > Export Hardware Design to SDK... > Export && Launch SDK # The Device Tree Generator Git repository needs to be cloned from the Xilinx. See the [[www/Fetch Sources|Fetch Sources]] page?for?more information on Git. Note that there are two repos?for?differing SDK versions below. > [[code]] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > git clone git://github.com/Xilinx/device-tree.git bsp/device-tree_v0_00_x// > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >?//[[code]]// > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > #?//Note: In order for SDK to be able to import the Device Tree Generator correctly, the file and directory hierarchy needs to look like:// > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >?//<bsp repo>/bsp/device-tree//_v0_00_x/data/device-tree_v2_1_0.mld > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >?//<bsp repo>/bsp/device-tree//_v0_00_x/data/device-tree_v2_1_0.tcl// > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > # Add the BSP repository in SDK (for?SDK?2014.2?and later select?"device-tree-xlnx"?from the checked out git area): > [[code]] ?> SDK Menu: Xilinx Tools > Repositories > New... (<bsp repo>) > OK
  • 創(chuàng)建設(shè)備樹板支持包(BSP):

    SDK Menu: File > New > Board Support Package > Board Support Package OS: device-tree > Finish
  • 將出現(xiàn)一個(gè)BSP設(shè)置窗口。也可以通過打開設(shè)備樹BSP的system.mss文件并單擊“修改此BSP的設(shè)置”來訪問此窗口。填寫適當(dāng)?shù)闹?#xff1a;
    • 'bootargs'參數(shù)指定在引導(dǎo)時(shí)(內(nèi)核命令行)傳遞給內(nèi)核的參數(shù)。***
    • “控制臺(tái)設(shè)備”參數(shù)指定將使用哪個(gè)串行輸出設(shè)備。從下拉列表中選擇一個(gè)值。

  • .dts文件現(xiàn)在位于<SDK工作區(qū)> / <設(shè)備樹bsp名稱> / <處理器名稱> / libsrc /設(shè)備樹_v0_00_x / xilinx.dts中。

    ***例如console = <tty>,<baudrate> root = / dev / ram rw ip = ::::: eth0:dhcp earlyprintk?
    *** <tty>的一些示例值是使用Zynq時(shí)的ttyPS0,使用時(shí)是ttyUL0 UART Lite軟ip或使用UART16550軟ip時(shí)為ttyS0。

    在Linux源目錄中,在linux-xlnx / arch / <architecture> / boot / dts?/?中也可以使用一些DTS文件。

    步驟3:僅對(duì)獨(dú)立的MicroBlaze仿真進(jìn)行附加檢查

    如果生成用于使用QEMU仿真獨(dú)立MicroBlaze應(yīng)用程序的DTS文件,則應(yīng)進(jìn)行一些附加檢查并注意一些最低要求。關(guān)于需求,MicroBlaze子系統(tǒng)(在Vivado IP集成器模塊設(shè)計(jì)中定義)必須至少具有以下組件:

    • MicroBlaze處理器
    • 記憶
    • 串行接口(AXI UART)
    • 中斷控制器(AXI INTC)

    隨附的示例DTS僅具有以下最低要求:

    ?文件編輯檔案

    應(yīng)該檢查生成的DTS,并根據(jù)需要進(jìn)行修改,以確保pl.dtsi文件中的MicroBlaze節(jié)點(diǎn)(即/> cpus> microblaze_0)具有以下屬性:

    • 記憶
    • 模型

    例如:

    ... cpus { ????????#address-cells = <1>; ????????#cpus = <1>; ????????#size-cells = <0>; ????????microblaze_0: cpu@0?{ ????????????memory = <&lmb_bram>; ????????????model =?"microblaze,8.40.b"; ????????????version =?"8.40.b"; ...

    如果內(nèi)存節(jié)點(diǎn)已經(jīng)存在,則可能只需要在其上添加標(biāo)簽即可被引用(上例中為“ lmb_bram”)。標(biāo)簽的名稱是任意的,但在節(jié)點(diǎn)定義和引用之間最一致。例如,如果系統(tǒng)具有DDR,則類似“ ddr_mem”的標(biāo)簽會(huì)更合適。如果未生成內(nèi)存節(jié)點(diǎn)(system-top.dts或pl.dtsi),則必須手動(dòng)添加它。下面給出了向system-top.dtsi添加內(nèi)存節(jié)點(diǎn)的示例。

    ... / { ????lmb_bram: memory@0?{ ???????????????device_type =?"memory"; ???????????????reg = <?0x0?0x10000000?>; ????} ; ...

    DTG局限性

    • zynqmp-clk-ccf.dtsi具有靜態(tài)時(shí)鐘節(jié)點(diǎn)配置,如果用戶要更改任何時(shí)鐘信息,請(qǐng)更新system-user.dtsi中的時(shí)鐘信息。
    • DTG將不支持多連接中斷塊。
    • 中斷端口寬度不超過一。
    • 為MAC IP啟用多核時(shí)(如果MAC IP大于1),則DTG中的標(biāo)簽存在問題,并且失敗。但是,如果MAC IP為1并且啟用了多核,就不會(huì)有問題。
    • DTG將不支持生成專用外設(shè)中斷(PPI)。
    • DTG支持基于內(nèi)部TRD設(shè)計(jì)的視頻管道生成,如Wiki??https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/25329832/Zynq+UltraScale+MPSoC+VCU+TRD+2018.3所述
    • 如果在視頻管道IP之間沒有連接任何自定義IP,DTG將不支持這些IP,則用戶可能需要添加輸入和輸出端口。
    • 對(duì)于廣播IP,輸出可以連接到多個(gè)輸出端口,而DTG無法知道哪個(gè)輸出端口對(duì)正確的管道有效。
    • 如果設(shè)計(jì)中有多個(gè)類似的視頻管道,則用戶需要在節(jié)點(diǎn)中添加輸入和輸出端口信息。以下Wiki提供了一些有關(guān)如何添加輸入和輸出端口的信息
    • 多媒體IP的DTG限制

    2020.1的新功能:

    • 添加了mrmac IP初始支持。
    • 添加了DPU IP支持
    • 用宏替換硬編碼的值以進(jìn)行復(fù)位和上電。
    • 為DTG中的axi_mcdma IP支持添加了dma通道。
    • 為Versal的每個(gè)axi_noc IP生成內(nèi)存節(jié)點(diǎn)

    ?

    DTG支持的驅(qū)動(dòng)程序列表及其在Linux樹中的綁定

    • 可以,可以
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/can/xilinx_can.txt
    • axi_cdma
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/dma/xilinx/axi-cdma.txt
    • axi_dma
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/dma/xilinx/axi-dma.txt
    • axi_emc
    • axi_ethernet,axi_10g_ethernet,xxv_ethernet
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/xilinx_axienet.txt
    • axi_gpio
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/commits/master/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
    • axi_iic
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/i2c/i2c-xiic.txt
    • axi_pcie,axi_pcie3,xdma
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/pci/xilinx-pcie.txt
    • axi_perf_mon
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/uio/xilinx_apm.txt
    • axi_quad_spi
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/spi/spi-xilinx.txt
    • axi_sysace
    • axi_tft
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/video/xilinx-fb.txt
    • axi_timebase_wdt
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt
    • axi_traffic_gen
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/misc/xilinx-axitrafgen.txt
    • axi_usb2_device
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/usb/udc-xilinx.txt
    • VCU
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/soc/xilinx/xlnx%2Cvcu.txt
    • axi_vdma
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt
    • xadc_wiz
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt
    • axi_intc
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/interrupt-controller/xilinx%2Cintc.txt
    • ddr4,ddr3,mig_7series
    • pr_decoupler
    • usp_rf_data_converter
    • axi_timer
    • tsn_endpoint_ethernet_mac
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/xilinx_tsn.txt
    • axi_uartlite
    來自Linux樹的綁定:https?:?//github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/serial/uartlite.c
    • axi_uart16550
    對(duì)于其他IP,DTG將調(diào)用通用驅(qū)動(dòng)程序。
    • framebuf_rd / framebuf_wr? ? ? ?
      來自Linux樹的綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/dma/xilinx/xilinx_frmbuf.txt
    • Linux樹中的sdi_rx子系統(tǒng)? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Csdirxss.txt
    • 來自Linux樹的mipi csi2 rx子系統(tǒng)? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Ccsi2rxss.txt
    • 來自Linux樹的demosaic? ? ? ? ??綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-demosaic.txt
    • 來自Linux樹的gamma? ? ? ? ? ? ??綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-gamma-lut.txt
    • Linux樹中的multiscaler? ? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-multi-scaler.txt
    • 來自Linux樹的scaler? ? ? ? ? ? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-scaler.txt
    • 來自Linux樹的場(chǎng)景更改檢測(cè)器? ? ? ? ? ? ? ? ? ? ? ? ? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-scd.txt
    • 來自Linux樹的視頻定時(shí)控制器(vtc)? ? ? ? ? ? ? ? ? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-tc.txt
    • 來自Linux樹的視頻測(cè)試模式生成器(TPG)? ? ? ? ??綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-tpg.txt
    • 色彩空間轉(zhuǎn)換器(CSC)? ? ? ? ? ? ? ? ? ??來自Linux樹的綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-vpss-csc.txt
    • 來自Linux樹的vpss縮放器? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/media/xilinx/xlnx%2Cv-vpss-scaler.txt
    • Linux樹中的sdi_tx子系統(tǒng)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/drm/xilinx/sdi.txt
    • 來自Linux樹的dsi? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??綁定??https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/drm/xilinx/dsi.txt
    • hdmi tx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??綁定??https://github.com/Xilinx/hdmi-modules/blob/master/Documentation/devicetree/bindings/xlnx%2Cv-hdmi-tx-ss.txt
    • hdmi rx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??綁定??https://github.com/Xilinx/hdmi-modules/blob/master/Documentation/devicetree/bindings/xlnx%2Cv-hdmi-rx-ss.txt

    編譯Devicetree源

    本節(jié)介紹使用設(shè)備樹編譯器(DTC)將設(shè)備樹源編譯為設(shè)備樹Blob(DTB)的過程。設(shè)備樹Blob是《入門》中介紹的Xilinx設(shè)計(jì)流程的一部分。

    步驟1:獲取Devicetree編譯器源

    以下是可用于直接從其Git存儲(chǔ)庫(kù)獲取DTC的命令。另外,DTC是Linux源代碼的一部分。例如,如果Xilinx Linux源目錄可用,則可以在linux-xlnx / scripts / dtc中找到DTC。

    git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git cd dtc make export PATH=$PATH:/<path-to-dtc>/dtc

    步驟2:預(yù)處理Devicetree源

    如上一節(jié)所述,DTG會(huì)生成多個(gè)devicetree文件,并使用“ #include”指令將它們鏈接在一起。在將該設(shè)備樹源提供給編譯器(DTC)之前,必須對(duì)頂級(jí)DTS進(jìn)行預(yù)處理,以將所有源合并為一個(gè)DTS。這可以使用標(biāo)準(zhǔn)的GNU C編譯器來完成。例如:

    gcc -I my_dts -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -o system.dts system-top.dts

    步驟3:從DTS編譯Devicetree Blob(.dtb)文件

    稱為設(shè)備樹編譯器(DTC)的實(shí)用程序用于將DTS文件編譯為DTB文件。DTC是Linux源目錄的一部分。linux-xlnx / scripts / dtc /包含DTC的源代碼,需要進(jìn)行編譯才能使用。編譯DTC的一種方法是構(gòu)建Linux樹。也可以通過操作系統(tǒng)的程序包管理器來獲取DTC。

    一旦DTC可用,就可以調(diào)用該工具以生成DTB,其中“ system.dts”是預(yù)處理產(chǎn)生的聚合設(shè)備樹源。
    cd /<path-to-dtc>/dtc dtc -I dts -O dtb -o system.dtb system.dts
    DTC也可以用于將DTB轉(zhuǎn)換回DTS:
    dtc -I dtb -O dts -o system.dts system.dtb

    雜項(xiàng)

    以下各節(jié)假定您具有可用的Linux源。

    替代:僅適用于ARM

    在Linux源目錄中,使目標(biāo)“ dtbs”將把linux-xlnx / arch / arm / boot / dts /中的所有DTS文件編譯為DTB文件。

    make ARCH=arm dtbs

    編譯后的DTB文件將位于linux-xlnx / arch / arm / boot / dts /中。
    可以將單個(gè)linux-xlnx / arch / arm / boot / dts / <設(shè)備樹名稱> .dts編譯為linux-xlnx / arch / arm / boot / dts / <設(shè)備樹名稱> .dtb:
    make ARCH=arm <devicetree name>.dtb

    Devicetree二進(jìn)制比較

    Linux源代碼還包括用于DTB比較的腳本。我們可以使用dtx_diff二進(jìn)制文件檢查兩個(gè)devicetree blob(DTB文件)之間的差異,如下所示。

    cd linux-xlnx/scripts/dtc make ARCH=arm <devicetree name>.dtb dtx_diff system1.dtb system2.dtb

    ?

    高級(jí)DTG主題

    如何從DTG啟用DT OVERLAY

    本節(jié)僅關(guān)注設(shè)備樹覆蓋的DTG方面。有關(guān)使用覆蓋的更多綜合信息,請(qǐng)參見適用的FPGA Manager驅(qū)動(dòng)程序頁面。可以在Linux Drivers下找到適用頁面的鏈接。

    使用HSI命令1.
    克隆設(shè)備樹存儲(chǔ)庫(kù)
    https://github.com/Xilinx/device-tree-xlnx
    2)轉(zhuǎn)到HSI提示符
    [vabbarap @ xhdl3763 / proj / xhdsswstaff / vabbarap / Overlay / New_hdf>%hsi?
    hsi v2017.3(64位)SW Build 2018833(2017年10月4日星期三19:58:07 MDT)
    版權(quán)所有1986-2017 Xilinx,Inc.保留所有權(quán)利。
    3)
    HSI%?open_hw_design system.hdf?
    4)
    HSI%?set_repo_path /家/ vabbarap /工作區(qū)/ sync_dt_tip / clk_wiz_15_12_2017(DTG回購(gòu)路徑)
    5)
    HSI%?create_sw_design -proc psu_cortexa53_0 SD22 -OS device_tree?
    6)
    HSI%?set_property CONFIG.dt_overlay真[ get_os]?
    7)
    hsi%generate_target -dir dt /?
    hsi%?ls?dt /
    pcw.dtsi pl.dtsi sd22.mss system-top.dts zynqmp-clk-ccf.dtsi zynqmp.dtsi

    使用XSCT??(從2019.2版本開始不支持hsi)

    2)轉(zhuǎn)到XSCT提示符

    [問題]→xsct

    ****** Xilinx軟件命令行工具(XSCT)v2020.1.0

    3)hsi open_hw_design system.xsa

    4)hsi set_repo_path??/ home / vabbarap / workspace / sync_dt_tip / dt_15_12_2019??(DTG存儲(chǔ)庫(kù)路徑)

    5)hsi create_sw_design -proc psu_cortexa53_0 sd22 -os device_tree?

    6)HSI generate_target -dir dt
    ?

    為自定義硬件和驅(qū)動(dòng)程序自定義/擴(kuò)展DTG

    本部分適用于希望擴(kuò)展DTG以適應(yīng)其自定義硬件和驅(qū)動(dòng)程序的用戶。

    相關(guān)檔案

    微處理器軟件規(guī)范(MSS)文件

    MSS文件包含用于自定義操作系統(tǒng)(OS),庫(kù)和驅(qū)動(dòng)程序的指令。

    微處理器驅(qū)動(dòng)程序定義(MDD)文件

    MDD文件包含用于自定義軟件驅(qū)動(dòng)程序的指令。
    每個(gè)設(shè)備驅(qū)動(dòng)程序都有一個(gè)MDD文件和一個(gè)與之關(guān)聯(lián)的Tcl文件。Tcl文件使用MDD文件來自定義驅(qū)動(dòng)程序,具體取決于MSS文件中配置的不同選項(xiàng)。
    每個(gè)驅(qū)動(dòng)程序的驅(qū)動(dòng)程序源文件和MDD文件必須位于特定目錄中,以便找到文件和驅(qū)動(dòng)程序。

    驅(qū)動(dòng)定義

    驅(qū)動(dòng)程序定義涉及定義數(shù)據(jù)定義文件(MDD)和數(shù)據(jù)生成文件(Tcl文件)。
    數(shù)據(jù)定義文件:MDD文件(<driver_name> .mdd)包含可配置的參數(shù)。
    數(shù)據(jù)生成文件:第二個(gè)文件(<驅(qū)動(dòng)程序名稱> .tcl,文件名與MDD文件名相同)使用MSS文件中配置的參數(shù)來為
    驅(qū)動(dòng)程序生成數(shù)據(jù)。

    如何將新的驅(qū)動(dòng)程序添加到DTG

    1.同步倉(cāng)庫(kù)https://github.com/xilinx/device-tree-xlnx
    2.創(chuàng)建一個(gè)帶有驅(qū)動(dòng)程序名稱的文件夾,例如axi_iic?device-tree-xlnx / axi_iic /
    3.在axi_iic下添加文件數(shù)據(jù),例如設(shè)備樹-XLNX / axi_iic /數(shù)據(jù)/
    4.創(chuàng)建下的文件axi_iic.mdd和axi_iic.tcl?設(shè)備樹-XLNX / axi_iic /數(shù)據(jù)/ axi_iic.mdd axi_iic.tcl
    5.為文件的語法axi_iic.mdd是如
    設(shè)備樹xlnx / axi_iic / data / axi_iic.mdd
    OPTION psf_version = 3.0; ? BEGIN driver axi_iic OPTION supported_peripherals = (axi_iic);--> the axi_iic is the IP_NAME?which?we get from the HDF?file. OPTION supported_os_types = (DTS); OPTION driver_state = ACTIVE; OPTION NAME = axi_iic; END drive

    6.將定義文件axi_iic.tcl的語法,在該語法中可以基于某些條件設(shè)置需要設(shè)置的屬性。
    我們使用HSI API更新節(jié)點(diǎn)屬性。下面我們更新axi_iic的clock屬性,如下所示調(diào)用泛型函數(shù)
    設(shè)備樹xlnx / axi_iic / data / axi_iic.tcl
    if?{[string match -nocase $proctype?"psu_cortexa53"] } { ????update_clk_node $drv_handle?"s_axi_aclk" }

    7. pl.dtsi中生成的節(jié)點(diǎn)應(yīng)如下所示

    dtsi
    io_bd_iic_0: i2c@a1200000 { ????#address-cells = <1>; ????#size-cells = <0>; ????clock-names =?"s_axi_aclk"; ????clocks = <&misc_clk_0>; ????compatible =?"xlnx,xps-iic-2.00.a"; ????interrupt-names =?"iic2intc_irpt"; ????interrupt-parent = <&gic>; ????interrupts = <0 2 4>; ????reg = <0x0 0xa1200000 0x0 0x10000>; };

    自定義IP:
    對(duì)于自定義IP,DTG將生成具有“兼容”屬性的節(jié)點(diǎn),并在連接任何節(jié)點(diǎn)時(shí)中斷。


    ?

    發(fā)行說明

    • 2016.4 DTG發(fā)行說明
    • http://www.wiki.xilinx.com/2017.3+Linux+and+DTG+Release+Notes
    • http://www.wiki.xilinx.com/2017.4+Linux+and+DTG+Release+Notes
    • http://www.wiki.xilinx.com/2018.1+Linux+and+DTG+Release+Notes
    • http://www.wiki.xilinx.com/2018.2+Linux+and+DTG+Release+Notes
    • 2018.3開源組件發(fā)行說明??(請(qǐng)參閱DTG部分)

    建立步驟

    • 取得來源

    • 建立FSBL
    • 構(gòu)建設(shè)備樹編譯器(DTC)
    • 構(gòu)建PMU固件
    • 建立Arm受信任的固件(ATF)
    • 建立U-Boot
    • 構(gòu)建和修改根文件系統(tǒng)
    • (您在此處)構(gòu)建設(shè)備樹Blob
    • 構(gòu)建Linux內(nèi)核
    • 準(zhǔn)備啟動(dòng)映像
    • 準(zhǔn)備啟動(dòng)媒體
    • 設(shè)置串行控制臺(tái)
    • 附加信息:構(gòu)建Qt和Qwt庫(kù)

    相關(guān)鏈接

    • 安裝Xilinx工具

    • 建立U-Boot
    • 構(gòu)建Linux內(nèi)核
    • 更新的設(shè)備樹規(guī)范可以在以下位置找到https://www.devicetree.org/
    • https://elinux.org/Device_Tree_Usage

    總結(jié)

    以上是生活随笔為你收集整理的生成设备树Blob的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色女人综合 | 久久久久久av无码免费网站 | 天天干夜夜添 | 五月天色小说 | 国产a√精品区二区三区四区 | 欧美另类高清 | 色婷婷一区二区三区四区 | 午夜免费在线 | 亚洲无吗在线观看 | 国产精品无码成人网站视频 | 亚洲精品无码一区二区 | 中文文字幕文字幕高清 | 大陆熟妇丰满多毛xxxⅹ | 777色婷婷| 日韩精品一区二区在线 | 永久黄网站色视频免费观看w | 美腿丝袜av| 亚洲黄色免费看 | 极品探花在线观看 | 国产片网站 | 男女黄色片 | 国产精品乱码久久久久 | 伊人色网站| 欧美日韩黄色一级片 | 国产一级视频 | 成人精品视频一区二区三区尤物 | 韩国女主播裸体摇奶 | 日韩中文字幕免费视频 | 91免费. | 伊人久久大香线蕉成人综合网 | 在线观看污污视频 | 国产suv精品一区二区6 | 中文字幕乱码无码人妻系列蜜桃 | 69黄色片| 污污免费视频 | 日本国产一区二区三区 | 小婕子伦流澡到高潮h | 中文字幕国产 | 亚洲伦理在线播放 | 国产第二页 | 97碰碰碰| 好男人.www | 夜夜操网址 | 国产无遮挡免费 | 超碰人人人 | 91沈先生在线| 九九爱爱视频 | 91九色高潮 | 自拍偷拍校园春色 | 激情网av| 丰满少妇在线观看资源站 | 吸咬奶头狂揉60分钟视频 | 秋霞欧美一区二区三区视频免费 | 欧洲亚洲激情 | 暖暖日本在线视频 | 国产精品海角社区 | 少妇xxxxxx| 亚洲啪啪网 | 成人自拍在线 | 黄视频网站免费看 | 欧美三根一起进三p | 一级欧美在线 | 亚洲av日韩av不卡在线观看 | 国产精品国产三级国产aⅴ下载 | 亲切的金子餐桌片段的金子 | 91伊人久久| 国产精品网站在线观看 | 邻居少妇张开腿让我爽了在线观看 | 国产伦精品一区二区三区妓女 | 国产精品美女久久久久久久 | 69色| 成人动漫在线播放 | 老司机深夜免费福利 | 黄色aaaa| 免费污片软件 | 久草资源在线观看 | 性高潮久久久久久 | 成人免费播放 | 咪咪色在线视频 | 九九精品网 | 国产成人无码精品久在线观看 | 欧美成人a视频 | 国产黄色精品 | 久久久久久久国产精品美女 | 无人在线观看的免费高清视频 | 干干干操操操 | 18成人免费观看网站下载 | 国产一区二区伦理 | 巨乳动漫美女 | 国产国语videosex另类 | 国产免费一区二区三区三州老师 | 91福利小视频| 欧美黑人欧美精品刺激 | 浪浪视频在线观看 | 日韩精品在线看 | 国产午夜福利片 | 国产xxxx做受视频 | 一个色的综合 | xxx国产|