衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

zynq開發中的設備樹

CHANBAEK ? 來源:硬碼農二毛哥 ? 作者:硬碼農二毛哥 ? 2023-05-25 11:29 ? 次閱讀

在zynq開發中經常會修改設備樹,每次遇到這種情況都有點發愁,今天把設備樹相關的知識點總結一下,希望以后遇到設備樹時,能夠自如應對。

什么是設備樹

設備樹時描述硬件的數據結構,Linux系統可以通過設備樹了解硬件結構,不需要進行編碼。

設備樹文件類型

  • DTSI: 設備樹頭文件,類似C語言中的.h文件,供DTS文件調用。
  • DTS:.dts文件是設備樹的源文件。相當于C語言的.c文件。
  • DTC:DTC是將.dts編譯為.dtb的工具,相當于gcc。
  • DTG:Xilinx設備樹編譯工具。
  • DTB:.dtb文件是 .dts 被 DTC 編譯后的二進制格式的設備樹文件,它可以被linux內核解析。

DTS語法介紹

每個module在設備樹中被定義成node。在dts文件中,一個node被定義成

[label:]node-name[@unit-address]{
  [properties definitions]
  [child nodes]
}
  • [lable:]: 設備樹文件允許標簽附加在任何節點或者屬性上。
  • node-name:是指節點的名字。
  • [@unit-address]:是指節點所在的基地址。
  • [properties definitions]:是指相關屬性的定義。
  • [child nodes]:是指相關的子節點

以如下設備樹為例:

/ {
  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>;
};
  • “/”代表根節點;
  • “compatible”為平臺兼容;
  • #address-cells是address的單板(32bit)
  • #size-cells”是length的單位(32bit)
  • ”chosen“是板級啟動參數
  • "memory"是板級內存的信息
  • “device_type":設備類型,尋找節點可以依據這個屬性;

KV260中的設備樹文件

在petalinux工程中設備主要在三個地方,其中plnx-proj-root為工程目錄名。

1、plnx-proj-root/project-spec/meta-user/recipes-bsp/devicetree/files/:

  • 系統用戶.dtsi
  • xen.dtsi文件
  • pl-custom.dtsi
  • 打開放大器.dtsi
  • xen-qemu.dtsi

其中system-user.dtsi是主要修改的文件,該文件中的內容具有更好優先級。

例如要增加phy芯片信息,可以在system-user.dtsi增加如下內容。

/dts-v1/;
/include/ "system-conf.dtsi"
/ {
};
&gem0 {
  phy-handle = <&phy0>;
  ps7_ethernet_0_mdio: mdio {
  phy0: phy@7 {
  compatible = "marvell,88e1116r";
  device_type = "ethernet-phy";
  reg = <7>;
};
};
};

plnx-proj-root/project-spec/dts_dir/

圖片

我理解這個文件夾中的內容,需要添加到system-user.dtsi才會起作用。

3、/組件/plnx_workspace/設備樹/設備樹/

文件夾的內容不建議修改。

圖片

重點看以下文件:

  • pl.dtsi: 這是一個所有內存映射外設邏輯 (PL) IP 節點都可用的文件。
  • pcw.dtsi: 這是一個文件,其中包含 PS 外設所需的動態屬性。
  • system-top.dts: 這是一個包含內存信息、早期控制臺和引導參數的文件。
  • zynqmp.dtsi: 此文件包含所有 PS 外設信息以及 cpu 信息。
  • zynqmp-clk-ccf.dtsi: 該文件包含外設 IP 的所有時鐘信息。
  • zynqmp-smk-k26-reva.dtsi :它包含所有板特定的屬性。

system-top.dts中文件內容如下:

/dts-v1/;
#include "zynqmp.dtsi"
#include "zynqmp-smk-k26-reva.dtsi"
#include "zynqmp-clk-ccf.dtsi"
#include "pcw.dtsi"
/ {
chosen {
bootargs = "earlycon";
stdout-path = "serial0:115200n8";
};
aliases {
};
memory {
device_type = "memory";
reg = <0x0 0x0 0x0 0x7ff00000>, <0x00000008 0x00000000 0x0 0x80000000>;
};
};
#include "system-user.dtsi"

由文件內容可知,該文件為頂層文件,調用各個模塊,最后調用system-user.dtsi,所以system-user.dtsi中內容優先級最高。 該文件夾中沒有調用plnx-proj-root/project-spec/dts_dir/中的文件,所以dts_dir文件夾中內容沒有起作用。

Devicetree Generator (DTG)

Xilinx設備樹生成工具DTG,幫助用戶構建特定硬件的設備樹。 不用使用手動編譯過程,直接從XSA文件獲取和硬件信息。

內核引導參數

“Kernel Bootargs”子菜單允許 PetaLinux 在 DTS 中自動生成內核啟動命令行設置,或者傳遞 PetaLinux 用戶定義的內核啟動命令行設置。 以下是默認的 bootargs。

zynqmp -- earlycon clk_ignore_unused root=/dev/ram0 rw

如果希望在控制臺上看到內核錯誤打印信息,system_user.dtsi 中添加

earlycon console= device,baud rate clk_ignore_unused root=/dev/ram rw
earlycon console=/dev/ttyPS0,115200 clk_ignore_unused root=/dev/ram rw
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210404
  • Xilinx
    +關注

    關注

    71

    文章

    2171

    瀏覽量

    122148
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137726
  • Zynq
    +關注

    關注

    10

    文章

    610

    瀏覽量

    47298
  • 設備樹
    +關注

    關注

    0

    文章

    39

    瀏覽量

    3163
收藏 人收藏

    評論

    相關推薦

    iTOP-iMX6開發板-設備內核-注冊驅動例程

    本文檔主要講解在迅為iTOP-iMX6Q/D/PLUS 開發板的設備內核(4.1.15)源碼設備
    發表于 08-09 10:01

    【正點原子FPGA連載】第二十章另一種方式編譯ZYNQ鏡像-領航者ZYNQ之linux開發指南

    原子公眾號,獲取最新資料第二十章另一種方式編譯ZYNQ鏡像本篇是ARM Linux驅動開發的第一章,本章跟驅動開發并沒有什么關系,由于前面我們一直都是使用xilinx的petali
    發表于 09-15 15:24

    【正點原子FPGA連載】第二十四章Linux設備-領航者ZYNQ之linux開發指南

    zynq_dt_match表的任何一個值相等,那么就表示Linux內核支持這個開發板、支持這個硬件平臺。前面也跟大家說過了,我們使用的設備
    發表于 09-16 15:31

    迅為iMX6開發板- 設備內核-設備相關文件簡要分析

    在支持設備的內核源碼設備用來取代來老版本內核的平臺文件。本文檔主要介紹在 iMX6
    發表于 10-21 10:51

    迅為iMX6開發板-設備內核-注冊設備例程

    本文檔主要講解在 iMX6Q/D/PLUS 開發板的設備內核(4.1.15)源碼,注冊設備需要在設備
    發表于 11-18 11:25

    iMX6開發設備文件分析

    在支持設備的內核源碼設備用來取代來老版本內核的平臺文件。本文檔主要介紹在 iMX6
    發表于 12-30 07:29

    淺析嵌入式linuxARM板設備路徑設備的信息

    嵌入式linuxARM板設備路徑設備的信息——根節點cd /sys/firmware/devicetree/base/。platfor
    發表于 12-14 06:19

    設備開發的相關資料下載

    常用名詞解釋DT:Device Tree設備FDT: Flattened Device Tree展開設備開放固件,設備樹起源于OF,所以
    發表于 12-24 06:40

    請問設備的gpio號怎么確定?

    我剛接觸5718這個平臺,找了飛凌提供的資料,但是沒找到設備中提供的gpio號是怎么對應的。例如,led設備給出的是gpios = ;
    發表于 01-06 06:30

    【米爾-TIAM62開發板-接替335x-試用評測】+(三)手把手創建Uboot設備與內核設備實戰

    (例如U-Boot和Linux內核)在引導過程獲取和解析這些信息,以便正確地初始化和操作硬件。 (三)本人網名\"還沒吃飯\"手把手設備實戰(以米爾-TIAM62開發板為例
    發表于 11-28 09:54

    以Xilinx Zynq-7000為例說明設備的運用

    由于內核版本的演變,設備成了任何使用較高版本linux系統的設備平臺所必須文件,然國內相關技術文檔嚴重不足,本文是國外技術專欄的翻譯,原文鏈接: 本教程是針對Xilinx Zynq-
    發表于 11-17 11:14 ?8493次閱讀

    Petalinux工程設備的介紹

    設備是 Petalinux kernel 的關鍵組件,接下來以 2020.1 版本為例,為大家介紹一下在Xilinx Petalinux 工程設備
    的頭像 發表于 02-20 16:32 ?7051次閱讀
    Petalinux工程<b class='flag-5'>中</b><b class='flag-5'>設備</b><b class='flag-5'>樹</b>的介紹

    設備的傳遞及kernel 對設備的解析

    當 U-Boot 將設備加載到內存指定位置后,ARM 內核的 SoC 以通用寄存器 r2 來傳遞 dtb 在內存的地址。kernel 獲取到該地址后對 dtb 文件做進一步的處理。 設備
    的頭像 發表于 07-29 11:19 ?2486次閱讀
    <b class='flag-5'>設備</b><b class='flag-5'>樹</b>的傳遞及kernel 對<b class='flag-5'>設備</b><b class='flag-5'>樹</b>的解析

    Linu設備及其語法介紹

    設備的本質也是操作寄存器,只不過寄存器的相關信息放在了設備,配置寄存器時需要使用OF函數從設備
    的頭像 發表于 04-14 11:38 ?1288次閱讀
    Linu<b class='flag-5'>設備</b><b class='flag-5'>樹</b>及其語法介紹

    Zynq-7000的PL端功能動態設備使用方法

    目錄前言————31動態設備生成————41.1生成硬件描述文件————41.2導入設備源碼————71.3生成動態設備
    發表于 10-22 10:31 ?10次下載
    莱阳市| 澳门百家乐如何算牌| 百家乐官网在线小游戏| 利博国际娱乐| 鸿胜国际| 必博365| 利博国际娱乐| 石家庄市| 百家乐官网游戏规则玩法| 网上百家乐官网看牌器| 百家乐官网真人视屏游戏| 百家乐官网优博u2bet| 百家乐官网平台网| 圣淘沙百家乐官网现金网| 百家乐官网视频对对碰| 百家乐官网投注平台信誉排行 | 百家乐西园出售| 百家乐游戏大小| 百家乐和怎么算输赢| 盈得利百家乐娱乐城| 大发888代充信用卡| 锦江国际娱乐| 百家乐官网高手和勒威| 百家乐官网大西洋城v| 百家乐官网微笑玩| 百家乐等投注网改单| 威尼斯人娱乐城 老品牌| 博盈注册| 足球百家乐官网投注计算| 潘多拉百家乐官网的玩法技巧和规则 | 新大发888娱乐城| 赌场大轮盘| 景德镇市| 利都百家乐官网国际赌场娱乐网规则| 百家乐也能赢钱么| sp全讯网新2| 枞阳县| 百家乐官网游戏介绍与分析| 澳门百家乐一把决战输赢| 大发888-娱乐场| 玩百家乐官网如何看路|