当前位置:首页 > FPGA > Versal ACAP > 正文内容

自定义Versal BSP编译Petalinux

首先设计XSA文件


紧接着我们开始编译Petalinux

我的系统版本:

LSB Version:    core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

建议先运行我的一键脚本配置APT,安装基本依赖 → https://myfpga.cn/index.php/post/318.html

然后配置安装Petalinux tools 2024.2,我没有提前下载依赖文件,因为网络没问题,并且我用不到所有pack,下载完整的太浪费资源

chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~$ source /usr/local/edatools/settings.sh
*************************************************************************************************************************************************
The PetaLinux source code and images provided/generated are for demonstration purposes only.
Please refer to https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/2741928025/Moving+from+PetaLinux+to+Production+Deployment
 for more details
*************************************************************************************************************************************************
PetaLinux environment set to '/usr/local/edatools'
[INFO] Checking free disk space
[INFO] Checking installed tools
[INFO] Checking installed development libraries
[INFO] Checking network and other services
[WARNING] No tftp server found - please refer to "UG1144 2024.2 PetaLinux Tools Documentation Reference Guide" for its impact and solution

紧接着创建Versal Petalinux工程,

petalinux-create project --template versal --name vd100 && cd vd100

其中的项目名vd100你可以改成需要的名字

 petalinux-config --get-hw-description ../pcs_led.xsa

其中pcs_led.xsa你可以改成第一步生成的xsa文件,也可以直接指定到../,会自动查找xsa后缀的文件

image.png

这里向下找到FPGA Manager,按空格键选中

image.png

紧接着打开Devicetree overlay,设备树覆盖允许在不重新编译整个设备树或重启系统的情况下,动态地添加、修改或删除设备节点。这对于需要灵活配置硬件的场景非常有用,比如嵌入式系统中的模块化设计或热插拔设备的支持。

image.png

根据你的平台,修改Root系统文件的类似,我的是SD卡

image.png

chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$ petalinux-config --get-hw-description ../pcs_led.xsa
[INFO] Getting hardware description
[INFO] Renaming pcs_led.xsa to system.xsa
[INFO] Extracting yocto SDK to components/yocto. This may take time!
[INFO] Bitbake is not available, some functionality may be reduced.
[INFO] Using HW file: /home/chanra1n/vd100/project-spec/hw-description/system.xsa
[INFO] Getting Platform info from HW file
[INFO] Generating Kconfig for project
[INFO] Menuconfig project
[INFO] Generating kconfig for rootfs
[INFO] Silentconfig rootfs
[INFO] Generating configuration files
[INFO] Adding user layers
[INFO] Generating machine conf file
[INFO] Generating plnxtool conf file
[INFO] Generating workspace directory
NOTE: Starting bitbake server...
NOTE: Started PRServer with DBfile: /home/chanra1n/vd100/build/cache/prserv.sqlite3, Address: 127.0.0.1:34149, PID: 1115768
INFO: Specified workspace already set up, leaving as-is
INFO: Enabling workspace layer in bblayers.conf
[INFO] Successfully configured project
chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$

紧接着就可以去折腾设备树了,

vim ./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

修改成

/include/ "system-conf.dtsi"

/ {
    versal_fpga: versal_fpga {
        compatible = "xlnx,versal-fpga";
    };

    fpga: fpga {
        compatible = "fpga-region";
        fpga-mgr = <&versal_fpga>;
        #address-cells = <2>;
        #size-cells = <2>;
    };
};

/* SD */
&sdhci1 {
    disable-wp;
    no-1-8-v;
};

然后保存后编译设备树:

petalinux-build -c device-tree

如果报错了:

chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$ petalinux-build -c device-tree
[INFO] Building device-tree
[INFO] Bitbake is not available, some functionality may be reduced.
[INFO] Using HW file: /home/chanra1n/vd100/project-spec/hw-description/system.xsa
[INFO] Getting Platform info from HW file
[INFO] Silentconfig project
[INFO] Silentconfig rootfs
[INFO] Generating configuration files
[INFO] Generating workspace directory
NOTE: Starting bitbake server...
NOTE: Started PRServer with DBfile: /home/chanra1n/vd100/build/cache/prserv.sqlite3, Address: 127.0.0.1:46787, PID: 1119248
INFO: Specified workspace already set up, leaving as-is
[INFO] bitbake virtual/dtb
NOTE: Started PRServer with DBfile: /home/chanra1n/vd100/build/cache/prserv.sqlite3, Address: 127.0.0.1:36525, PID: 1119313
WARNING: XSCT has been deprecated. It will still be available for several releases. In the future, it's recommended to start new projects with SDT workflow.
Loading cache: 100% |                                                                                          | ETA:  --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |#########################################################################################| Time: 0:01:27
Parsing of 5800 .bb files complete (0 cached, 5800 parsed). 8454 targets, 998 skipped, 27 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: Fetching uninative binary shim file:///home/chanra1n/vd100/components/yocto/downloads/uninative/6bf00154c5a7bc48adbf63fd17684bb87eb07f4814fbb482a3fbd817c1ccf4c5/x86_64-nativesdk-libc-4.6.tar.xz;sha256sum=6bf00154c5a7bc48adbf63fd17684bb87eb07f4814fbb482a3fbd817c1ccf4c5 (will check PREMIRRORS first)
Checking sstate mirror object availability: 100% |##############################################################| Time: 0:00:09
Sstate summary: Wanted 532 Local 0 Mirrors 504 Missed 28 Current 0 (94% match, 0% complete)
NOTE: Executing Tasks
ERROR: device-tree-xilinx-v2024.2+git-r0 do_compile: Error executing a python function in exec_func_python() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_func_python() autogenerated', lineno: 2, function: <module>
     0001:
 *** 0002:devicetree_do_compile(d)
     0003:
File: '/home/chanra1n/vd100/components/yocto/layers/poky/meta/classes-recipe/devicetree.bbclass', lineno: 142, function: devicetree_do_compile
     0138:            if not(os.path.isfile(dtspath)) or not(dts.endswith(".dts") or devicetree_source_is_overlay(dtspath)):
     0139:                continue # skip non-.dts files and non-overlay files
     0140:        except:
     0141:            continue # skip if can't determine if overlay
 *** 0142:        devicetree_compile(dtspath, includes, d)
     0143:}
     0144:
     0145:devicetree_do_install() {
     0146:    for DTB_FILE in `ls *.dtb *.dtbo`; do
File: '/home/chanra1n/vd100/components/yocto/layers/poky/meta/classes-recipe/devicetree.bbclass', lineno: 127, function: devicetree_compile
     0123:        dtcargs += ["-i", i]
     0124:    dtcargs += ["-o", "{0}.{1}".format(dtname, "dtbo" if isoverlay else "dtb")]
     0125:    dtcargs += ["-I", "dts", "-O", "dtb", "{0}.pp".format(dts)]
     0126:    bb.note("Running {0}".format(" ".join(dtcargs)))
 *** 0127:    subprocess.run(dtcargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
     0128:
     0129:python devicetree_do_compile() {
     0130:    import re
     0131:    includes = expand_includes("DT_INCLUDE", d)
File: '/usr/local/edatools/sysroots/x86_64-petalinux-linux/usr/lib/python3.12/subprocess.py', lineno: 571, function: run
     0567:            # We don't call process.wait() as .__exit__ does that for us.
     0568:            raise
     0569:        retcode = process.poll()
     0570:        if check and retcode:
 *** 0571:            raise CalledProcessError(retcode, process.args,
     0572:                                     output=stdout, stderr=stderr)
     0573:    return CompletedProcess(process.args, retcode, stdout, stderr)
     0574:
     0575:
Exception: subprocess.CalledProcessError: Command '['dtc', '-@', '-@', '-p', '0x1000', '-@', '-i', '/home/chanra1n/vd100/components/plnx_workspace/device-tree/device-tree', '-i', '/home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git/git/device_tree/data/kernel_dtsi/2024.2/include/', '-i', '/home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git', '-i', '/home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git/git/device_tree/data/kernel_dtsi/2024.2/BOARD/', '-o', 'system-top.dtb', '-I', 'dts', '-O', 'dtb', 'system-top.dts.pp']' returned non-zero exit status 2.

Subprocess output:
/home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git/system-user.dtsi:4.30-6.7: ERROR (duplicate_label): /versal_fpga: Duplicate label 'versal_fpga' on /versal_fpga and /versal-fpga
/home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git/system-user.dtsi:8.16-13.7: ERROR (duplicate_label): /fpga: Duplicate label 'fpga' on /fpga and /fpga-region
ERROR: Input tree has errors, aborting (use -f to force output)

ERROR: Logfile of failure stored in: /home/chanra1n/vd100/build/tmp/work/versal_generic_xcve2302-xilinx-linux/device-tree/xilinx-v2024.2+git/temp/log.do_compile.1139386
ERROR: Task (/home/chanra1n/vd100/components/yocto/layers/meta-xilinx/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 1311 tasks of which 1180 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  /home/chanra1n/vd100/components/yocto/layers/meta-xilinx/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb:do_compile
Summary: There was 1 WARNING message.
Summary: There was 1 ERROR message, returning a non-zero exit code.
[ERROR] Command bitbake virtual/dtb failed

则是因为你用的是新版本的,能自动写入FPGA相关内容,就在上一步写入并保存:

/include/ "system-conf.dtsi"

/* SD */
&sdhci1 {
    disable-wp;
    no-1-8-v;
};

然后再重新编译

chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$ petalinux-build -c device-tree
[INFO] Building device-tree
[INFO] Bitbake is not available, some functionality may be reduced.
[INFO] Using HW file: /home/chanra1n/vd100/project-spec/hw-description/system.xsa
[INFO] Getting Platform info from HW file
[INFO] Silentconfig project
[INFO] Silentconfig rootfs
[INFO] Generating configuration files
[INFO] Generating workspace directory
NOTE: Starting bitbake server...
NOTE: Started PRServer with DBfile: /home/chanra1n/vd100/build/cache/prserv.sqlite3, Address: 127.0.0.1:35461, PID: 1141458
INFO: Specified workspace already set up, leaving as-is
[INFO] bitbake virtual/dtb
NOTE: Started PRServer with DBfile: /home/chanra1n/vd100/build/cache/prserv.sqlite3, Address: 127.0.0.1:44589, PID: 1141524
WARNING: XSCT has been deprecated. It will still be available for several releases. In the future, it's recommended to start new projects with SDT workflow.
Loading cache: 100% |###########################################################################################| Time: 0:00:03
Loaded 8453 entries from dependency cache.
Parsing recipes: 100% |#########################################################################################| Time: 0:00:01
Parsing of 5800 .bb files complete (5799 cached, 1 parsed). 8454 targets, 998 skipped, 27 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Sstate summary: Wanted 96 Local 2 Mirrors 84 Missed 10 Current 436 (89% match, 98% complete)###########         | ETA:  0:00:00
Removing 2 stale sstate objects for arch versal_generic_xcve2302: 100% |########################################| Time: 0:00:00
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 1323 tasks of which 1300 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message.
[INFO] copy to TFTP-boot directory is not enabled
[INFO] Successfully built device-tree
chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$

接下来反编译:

dtc -I dtb -O dts ./images/linux/system.dtb -o ./images/linux/system.dts

查看dts文件:

chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$ cat ./images/linux/system.dts
/dts-v1/;

/ {
        compatible = "xlnx,versal";
        #address-cells = <0x02>;
        #size-cells = <0x02>;
        model = "Xilinx Versal";

        options {

                u-boot {
                        compatible = "u-boot,config";
                        bootscr-address = <0x00 0x20000000>;
                };
        };

        cpus {
                #address-cells = <0x01>;
                #size-cells = <0x00>;
                phandle = <0x11>;

                cpu@0 {
                        compatible = "arm,cortex-a72";
                        device_type = "cpu";
                        enable-method = "psci";
                        operating-points-v2 = <0x01>;
                        reg = <0x00>;
                        cpu-idle-states = <0x02>;
                        clocks = <0x03 0x4d>;
                        phandle = <0x12>;
                };

                cpu@1 {
                        compatible = "arm,cortex-a72";
                        device_type = "cpu";
                        enable-method = "psci";
                        operating-points-v2 = <0x01>;
                        reg = <0x01>;
                        cpu-idle-states = <0x02>;
                        phandle = <0x13>;
                };

                idle-states {
                        entry-method = "psci";

                        cpu-sleep-0 {
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x40000000>;
                                local-timer-stop;
                                entry-latency-us = <0x12c>;
                                exit-latency-us = <0x258>;
                                min-residency-us = <0x2710>;
                                phandle = <0x02>;
                        };
                };
        };

        opp-table-cpu {
                compatible = "operating-points-v2";
                opp-shared;
                phandle = <0x01>;

                opp-550000000 {
                        clock-latency-ns = <0x7a120>;
                        opp-hz = <0x00 0x20c85580>;
                        opp-microvolt = <0xf4240>;
                };

                opp-275000000 {
                        clock-latency-ns = <0x7a120>;
                        opp-hz = <0x00 0x10642ac0>;
                        opp-microvolt = <0xf4240>;
                };

                opp-183333333 {
                        clock-latency-ns = <0x7a120>;
                        opp-hz = <0x00 0xaed71d5>;
                        opp-microvolt = <0xf4240>;
                };

                opp-137500000 {
                        clock-latency-ns = <0x7a120>;
                        opp-hz = <0x00 0x8321560>;
                        opp-microvolt = <0xf4240>;
                };
        };

        dcc {
                compatible = "arm,dcc";
                status = "okay";
                bootph-all;
                phandle = <0x14>;
        };

        fpga-region {
                compatible = "fpga-region";
                fpga-mgr = <0x04>;
                #address-cells = <0x02>;
                #size-cells = <0x02>;
                phandle = <0x15>;
        };

        psci {
                compatible = "arm,psci-0.2";
                method = "smc";
                phandle = <0x16>;
        };

        pmu {
                compatible = "arm,armv8-pmuv3";
                interrupt-parent = <0x05>;
                interrupts = <0x01 0x07 0x304>;
        };

        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <0x05>;
                interrupts = <0x01 0x0d 0x04 0x01 0x0e 0x04 0x01 0x0b 0x04 0x01 0x0a 0x04>;
                phandle = <0x17>;
        };

        versal-fpga {
                compatible = "xlnx,versal-fpga";
                phandle = <0x04>;
        };

        versal-thermal-sensor {
                compatible = "xlnx,versal-thermal";
                #thermal-sensor-cells = <0x00>;
                io-channels = <0x06>;
                io-channel-names = "sysmon-temp-channel";
                phandle = <0x07>;
        };

        thermal-zones {

                versal-thermal {
                        polling-delay-passive = <0xfa>;
                        polling-delay = <0x3e8>;
                        thermal-sensors = <0x07>;
                        phandle = <0x18>;

                        trips {

                                temp-alert {
                                        temperature = <0x11170>;
                                        hysteresis = <0x00>;
                                        type = "passive";
                                        phandle = <0x19>;
                                };

                                ot-crit {
                                        temperature = <0x1e848>;
                                        hysteresis = <0x00>;
                                        type = "critical";
                                        phandle = <0x1a>;
                                };
                        };
                };
        };

        axi {
                compatible = "simple-bus";
                #address-cells = <0x02>;
                #size-cells = <0x02>;
                ranges;
                interrupt-parent = <0x05>;
                bootph-all;
                phandle = <0x1b>;

                interrupt-controller@f9000000 {
                        compatible = "arm,gic-v3";
                        #interrupt-cells = <0x03>;
                        #address-cells = <0x02>;
                        #size-cells = <0x02>;
                        ranges;
                        reg = <0x00 0xf9000000 0x00 0x80000 0x00 0xf9080000 0x00 0x80000>;
                        interrupt-controller;
                        interrupts = <0x01 0x09 0x04>;
                        num_cpus = <0x02>;
                        num_interrupts = <0x60>;
                        phandle = <0x05>;

                        msi-controller@f9020000 {
                                compatible = "arm,gic-v3-its";
                                status = "okay";
                                msi-controller;
                                #msi-cells = <0x01>;
                                reg = <0x00 0xf9020000 0x00 0x20000>;
                                phandle = <0x0d>;
                        };
                };

                can@ff060000 {
                        compatible = "xlnx,canfd-2.0";
                        status = "disabled";
                        reg = <0x00 0xff060000 0x00 0x6000>;
                        interrupts = <0x00 0x14 0x04>;
                        clock-names = "can_clk\0s_axi_aclk";
                        rx-fifo-depth = <0x40>;
                        tx-mailbox-count = <0x20>;
                        clocks = <0x08 0x03 0x52>;
                        power-domains = <0x09 0x1822401f>;
                        phandle = <0x1c>;
                };

                can@ff070000 {
                        compatible = "xlnx,canfd-2.0";
                        status = "disabled";
                        reg = <0x00 0xff070000 0x00 0x6000>;
                        interrupts = <0x00 0x15 0x04>;
                        clock-names = "can_clk\0s_axi_aclk";
                        rx-fifo-depth = <0x40>;
                        tx-mailbox-count = <0x20>;
                        clocks = <0x0a 0x03 0x52>;
                        power-domains = <0x09 0x18224020>;
                        phandle = <0x1d>;
                };

                cci@fd000000 {
                        compatible = "arm,cci-500";
                        status = "okay";
                        reg = <0x00 0xfd000000 0x00 0x10000>;
                        ranges = <0x00 0x00 0xfd000000 0xa0000>;
                        #address-cells = <0x01>;
                        #size-cells = <0x01>;
                        phandle = <0x1e>;

                        pmu@10000 {
                                compatible = "arm,cci-500-pmu,r0";
                                reg = <0x10000 0x90000>;
                                interrupts = <0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04 0x00 0x6a 0x04>;
                                phandle = <0x1f>;
                        };
                };

                dma-controller@ffa80000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffa80000 0x00 0x1000>;
                        interrupts = <0x00 0x3c 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x18224035>;
                        phandle = <0x20>;
                };

                dma-controller@ffa90000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffa90000 0x00 0x1000>;
                        interrupts = <0x00 0x3d 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x18224036>;
                        phandle = <0x21>;
                };

                dma-controller@ffaa0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffaa0000 0x00 0x1000>;
                        interrupts = <0x00 0x3e 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x18224037>;
                        phandle = <0x22>;
                };

                dma-controller@ffab0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffab0000 0x00 0x1000>;
                        interrupts = <0x00 0x3f 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x18224038>;
                        phandle = <0x23>;
                };

                dma-controller@ffac0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffac0000 0x00 0x1000>;
                        interrupts = <0x00 0x40 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x18224039>;
                        phandle = <0x24>;
                };

                dma-controller@ffad0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffad0000 0x00 0x1000>;
                        interrupts = <0x00 0x41 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x1822403a>;
                        phandle = <0x25>;
                };

                dma-controller@ffae0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffae0000 0x00 0x1000>;
                        interrupts = <0x00 0x42 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x1822403b>;
                        phandle = <0x26>;
                };

                dma-controller@ffaf0000 {
                        compatible = "xlnx,zynqmp-dma-1.0";
                        status = "okay";
                        reg = <0x00 0xffaf0000 0x00 0x1000>;
                        interrupts = <0x00 0x43 0x04>;
                        clock-names = "clk_main\0clk_apb";
                        #dma-cells = <0x01>;
                        xlnx,bus-width = <0x40>;
                        clocks = <0x03 0x51 0x03 0x52>;
                        power-domains = <0x09 0x1822403c>;
                        phandle = <0x27>;
                };

                ethernet@ff0c0000 {
                        compatible = "xlnx,versal-gem\0cdns,gem";
                        status = "disabled";
                        reg = <0x00 0xff0c0000 0x00 0x1000>;
                        interrupts = <0x00 0x38 0x04 0x00 0x38 0x04>;
                        clock-names = "pclk\0hclk\0tx_clk\0rx_clk\0tsu_clk";
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x52 0x03 0x58 0x03 0x31 0x03 0x30 0x03 0x2b>;
                        power-domains = <0x09 0x18224019>;
                        phandle = <0x28>;
                };

                ethernet@ff0d0000 {
                        compatible = "xlnx,versal-gem\0cdns,gem";
                        status = "disabled";
                        reg = <0x00 0xff0d0000 0x00 0x1000>;
                        interrupts = <0x00 0x3a 0x04 0x00 0x3a 0x04>;
                        clock-names = "pclk\0hclk\0tx_clk\0rx_clk\0tsu_clk";
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x52 0x03 0x59 0x03 0x33 0x03 0x32 0x03 0x2b>;
                        power-domains = <0x09 0x1822401a>;
                        phandle = <0x29>;
                };

                gpio@ff0b0000 {
                        compatible = "xlnx,versal-gpio-1.0";
                        status = "disabled";
                        reg = <0x00 0xff0b0000 0x00 0x1000>;
                        interrupts = <0x00 0x0d 0x04>;
                        #gpio-cells = <0x02>;
                        gpio-controller;
                        #interrupt-cells = <0x02>;
                        interrupt-controller;
                        clocks = <0x03 0x52>;
                        power-domains = <0x09 0x18224023>;
                        phandle = <0x2a>;
                };

                gpio@f1020000 {
                        compatible = "xlnx,pmc-gpio-1.0";
                        status = "disabled";
                        reg = <0x00 0xf1020000 0x00 0x1000>;
                        interrupts = <0x00 0x7a 0x04>;
                        #gpio-cells = <0x02>;
                        gpio-controller;
                        #interrupt-cells = <0x02>;
                        interrupt-controller;
                        clocks = <0x03 0x3d>;
                        power-domains = <0x09 0x1822402c>;
                        phandle = <0x2b>;
                };

                i2c@ff020000 {
                        compatible = "cdns,i2c-r1p14";
                        status = "disabled";
                        reg = <0x00 0xff020000 0x00 0x1000>;
                        interrupts = <0x00 0x0e 0x04>;
                        clock-frequency = <0x186a0>;
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x62>;
                        power-domains = <0x09 0x1822401d>;
                        phandle = <0x2c>;
                };

                i2c@ff030000 {
                        compatible = "cdns,i2c-r1p14";
                        status = "disabled";
                        reg = <0x00 0xff030000 0x00 0x1000>;
                        interrupts = <0x00 0x0f 0x04>;
                        clock-frequency = <0x186a0>;
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x63>;
                        power-domains = <0x09 0x1822401e>;
                        phandle = <0x2d>;
                };

                i2c@f1000000 {
                        compatible = "cdns,i2c-r1p14";
                        status = "disabled";
                        reg = <0x00 0xf1000000 0x00 0x1000>;
                        interrupts = <0x00 0x7b 0x04>;
                        clock-frequency = <0x186a0>;
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x3e>;
                        power-domains = <0x09 0x1822402d>;
                        phandle = <0x2e>;
                };

                memory-controller@f6150000 {
                        compatible = "xlnx,versal-ddrmc";
                        status = "disabled";
                        reg = <0x00 0xf6150000 0x00 0x2000 0x00 0xf6070000 0x00 0x20000>;
                        reg-names = "base\0noc";
                        interrupts = <0x00 0x93 0x04>;
                        phandle = <0x2f>;
                };

                memory-controller@f62c0000 {
                        compatible = "xlnx,versal-ddrmc";
                        status = "disabled";
                        reg = <0x00 0xf62c0000 0x00 0x2000 0x00 0xf6210000 0x00 0x20000>;
                        reg-names = "base\0noc";
                        interrupts = <0x00 0x93 0x04>;
                        phandle = <0x30>;
                };

                memory-controller@f6430000 {
                        compatible = "xlnx,versal-ddrmc";
                        status = "disabled";
                        reg = <0x00 0xf6430000 0x00 0x2000 0x00 0xf6380000 0x00 0x20000>;
                        reg-names = "base\0noc";
                        interrupts = <0x00 0x93 0x04>;
                        phandle = <0x31>;
                };

                memory-controller@f65a0000 {
                        compatible = "xlnx,versal-ddrmc";
                        status = "disabled";
                        reg = <0x00 0xf65a0000 0x00 0x2000 0x00 0xf64f0000 0x00 0x20000>;
                        reg-names = "base\0noc";
                        interrupts = <0x00 0x93 0x04>;
                        phandle = <0x32>;
                };

                memory-controller@ff960000 {
                        compatible = "xlnx,zynqmp-ocmc-1.0";
                        reg = <0x00 0xff960000 0x00 0x1000>;
                        interrupts = <0x00 0x0a 0x04>;
                        phandle = <0x33>;
                };

                rtc@f12a0000 {
                        compatible = "xlnx,zynqmp-rtc";
                        status = "okay";
                        reg = <0x00 0xf12a0000 0x00 0x100>;
                        interrupt-names = "alarm\0sec";
                        interrupts = <0x00 0x8e 0x04 0x00 0x8f 0x04>;
                        calibration = <0x7fff>;
                        power-domains = <0x09 0x18224034>;
                        phandle = <0x34>;
                };

                mmc@f1040000 {
                        compatible = "xlnx,versal-8.9a\0arasan,sdhci-8.9a";
                        status = "disabled";
                        reg = <0x00 0xf1040000 0x00 0x10000>;
                        interrupts = <0x00 0x7e 0x04>;
                        clock-names = "clk_xin\0clk_ahb\0gate";
                        #clock-cells = <0x01>;
                        clock-output-names = "clk_out_sd0\0clk_in_sd0";
                        clocks = <0x03 0x3b 0x03 0x52 0x03 0x4a>;
                        power-domains = <0x09 0x1822402e>;
                        phandle = <0x35>;
                };

                mmc@f1050000 {
                        compatible = "xlnx,versal-8.9a\0arasan,sdhci-8.9a";
                        status = "disabled";
                        reg = <0x00 0xf1050000 0x00 0x10000>;
                        interrupts = <0x00 0x80 0x04>;
                        clock-names = "clk_xin\0clk_ahb\0gate";
                        #clock-cells = <0x01>;
                        clock-output-names = "clk_out_sd1\0clk_in_sd1";
                        clocks = <0x03 0x3c 0x03 0x52 0x03 0x4a>;
                        power-domains = <0x09 0x1822402f>;
                        disable-wp;
                        no-1-8-v;
                        phandle = <0x36>;
                };

                serial@ff000000 {
                        compatible = "arm,pl011\0arm,primecell";
                        status = "disabled";
                        reg = <0x00 0xff000000 0x00 0x1000>;
                        interrupts = <0x00 0x12 0x04>;
                        reg-io-width = <0x04>;
                        clock-names = "uartclk\0apb_pclk";
                        bootph-all;
                        clocks = <0x03 0x5c 0x03 0x52>;
                        power-domains = <0x09 0x18224021>;
                        phandle = <0x37>;
                };

                serial@ff010000 {
                        compatible = "arm,pl011\0arm,primecell";
                        status = "disabled";
                        reg = <0x00 0xff010000 0x00 0x1000>;
                        interrupts = <0x00 0x13 0x04>;
                        reg-io-width = <0x04>;
                        clock-names = "uartclk\0apb_pclk";
                        bootph-all;
                        clocks = <0x03 0x5d 0x03 0x52>;
                        power-domains = <0x09 0x18224022>;
                        phandle = <0x38>;
                };

                iommu@fd800000 {
                        compatible = "arm,mmu-500";
                        status = "okay";
                        reg = <0x00 0xfd800000 0x00 0x40000>;
                        stream-match-mask = <0x7c00>;
                        #iommu-cells = <0x01>;
                        #global-interrupts = <0x01>;
                        interrupts = <0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04 0x00 0x6b 0x04>;
                        phandle = <0x39>;
                };

                spi@f1010000 {
                        compatible = "xlnx,versal-ospi-1.0\0cdns,qspi-nor";
                        status = "disabled";
                        reg = <0x00 0xf1010000 0x00 0x10000 0x00 0xc0000000 0x00 0x20000000>;
                        interrupts = <0x00 0x7c 0x04>;
                        cdns,fifo-depth = <0x100>;
                        cdns,fifo-width = <0x04>;
                        cdns,is-dma = <0x01>;
                        cdns,trigger-address = <0xc0000000>;
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x3a>;
                        power-domains = <0x09 0x1822402a>;
                        reset-names = "qspi";
                        resets = <0x0b 0xc10402e>;
                        phandle = <0x3a>;
                };

                spi@f1030000 {
                        compatible = "xlnx,versal-qspi-1.0";
                        status = "disabled";
                        reg = <0x00 0xf1030000 0x00 0x1000>;
                        interrupts = <0x00 0x7d 0x04>;
                        clock-names = "ref_clk\0pclk";
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x39 0x03 0x52>;
                        power-domains = <0x09 0x1822402b>;
                        phandle = <0x3b>;
                };

                spi@ff040000 {
                        compatible = "cdns,spi-r1p6";
                        status = "disabled";
                        reg = <0x00 0xff040000 0x00 0x1000>;
                        interrupts = <0x00 0x10 0x04>;
                        clock-names = "ref_clk\0pclk";
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x5e 0x03 0x52>;
                        power-domains = <0x09 0x1822401b>;
                        phandle = <0x3c>;
                };

                spi@ff050000 {
                        compatible = "cdns,spi-r1p6";
                        status = "disabled";
                        reg = <0x00 0xff050000 0x00 0x1000>;
                        interrupts = <0x00 0x11 0x04>;
                        clock-names = "ref_clk\0pclk";
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        clocks = <0x03 0x5f 0x03 0x52>;
                        power-domains = <0x09 0x1822401c>;
                        phandle = <0x3d>;
                };

                sysmon@f1270000 {
                        compatible = "xlnx,versal-sysmon";
                        #io-channel-cells = <0x00>;
                        reg = <0x00 0xf1270000 0x00 0x4000>;
                        interrupts = <0x00 0x90 0x04>;
                        xlnx,numchannels = [00];
                        #address-cells = <0x02>;
                        #size-cells = <0x02>;
                        xlnx,nodeid = <0x18224055>;
                        xlnx,num-of-slr = <0x01>;
                        xlnx,ssit-device = <0x00>;
                        phandle = <0x06>;
                };

                sysmon@109270000 {
                        compatible = "xlnx,versal-sysmon";
                        status = "disabled";
                        reg = <0x01 0x9270000 0x00 0x4000>;
                        xlnx,numchannels = [00];
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        xlnx,nodeid = <0x18225055>;
                        phandle = <0x3e>;
                };

                sysmon@111270000 {
                        compatible = "xlnx,versal-sysmon";
                        status = "disabled";
                        reg = <0x01 0x11270000 0x00 0x4000>;
                        xlnx,numchannels = [00];
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        xlnx,nodeid = <0x18226055>;
                        phandle = <0x3f>;
                };

                sysmon@119270000 {
                        compatible = "xlnx,versal-sysmon";
                        status = "disabled";
                        reg = <0x01 0x19270000 0x00 0x4000>;
                        xlnx,numchannels = [00];
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        xlnx,nodeid = <0x18227055>;
                        phandle = <0x40>;
                };

                timer@ff0e0000 {
                        compatible = "cdns,ttc";
                        status = "disabled";
                        interrupts = <0x00 0x25 0x04 0x00 0x26 0x04 0x00 0x27 0x04>;
                        reg = <0x00 0xff0e0000 0x00 0x1000>;
                        timer-width = <0x20>;
                        clocks = <0x03 0x27 0x03 0x52>;
                        power-domains = <0x09 0x18224024>;
                        phandle = <0x41>;
                };

                timer@ff0f0000 {
                        compatible = "cdns,ttc";
                        status = "disabled";
                        interrupts = <0x00 0x28 0x04 0x00 0x29 0x04 0x00 0x2a 0x04>;
                        reg = <0x00 0xff0f0000 0x00 0x1000>;
                        timer-width = <0x20>;
                        clocks = <0x03 0x28 0x03 0x52>;
                        power-domains = <0x09 0x18224025>;
                        phandle = <0x42>;
                };

                timer@ff100000 {
                        compatible = "cdns,ttc";
                        status = "disabled";
                        interrupts = <0x00 0x2b 0x04 0x00 0x2c 0x04 0x00 0x2d 0x04>;
                        reg = <0x00 0xff100000 0x00 0x1000>;
                        timer-width = <0x20>;
                        clocks = <0x03 0x29 0x03 0x52>;
                        power-domains = <0x09 0x18224026>;
                        phandle = <0x43>;
                };

                timer@ff110000 {
                        compatible = "cdns,ttc";
                        status = "disabled";
                        interrupts = <0x00 0x2e 0x04 0x00 0x2f 0x04 0x00 0x30 0x04>;
                        reg = <0x00 0xff110000 0x00 0x1000>;
                        timer-width = <0x20>;
                        clocks = <0x03 0x2a 0x03 0x52>;
                        power-domains = <0x09 0x18224027>;
                        phandle = <0x44>;
                };

                usb@ff9d0000 {
                        compatible = "xlnx,versal-dwc3";
                        status = "disabled";
                        reg = <0x00 0xff9d0000 0x00 0x100>;
                        clock-names = "bus_clk\0ref_clk";
                        ranges;
                        #address-cells = <0x02>;
                        #size-cells = <0x02>;
                        clocks = <0x03 0x5b 0x03 0x68>;
                        power-domains = <0x09 0x18224018>;
                        resets = <0x0b 0xc104036>;
                        phandle = <0x45>;

                        usb@fe200000 {
                                compatible = "snps,dwc3";
                                status = "disabled";
                                reg = <0x00 0xfe200000 0x00 0x10000>;
                                interrupt-names = "host\0peripheral\0otg\0wakeup";
                                interrupts = <0x00 0x16 0x04 0x00 0x16 0x04 0x00 0x1a 0x04 0x00 0x4a 0x04>;
                                snps,dis_u2_susphy_quirk;
                                snps,dis_u3_susphy_quirk;
                                snps,quirk-frame-length-adjustment = <0x20>;
                                clock-names = "ref";
                                clocks = <0x03 0x5b>;
                                phandle = <0x46>;
                        };
                };

                pci@fca10000 {
                        device_type = "pci";
                        #address-cells = <0x03>;
                        #interrupt-cells = <0x01>;
                        #size-cells = <0x02>;
                        compatible = "xlnx,versal-cpm-host-1.00";
                        status = "disabled";
                        interrupt-map = <0x00 0x00 0x00 0x01 0x0c 0x00 0x00 0x00 0x00 0x02 0x0c 0x01 0x00 0x00 0x00 0x03 0x0c 0x02 0x00 0x00 0x00 0x04 0x0c 0x03>;
                        interrupt-map-mask = <0x00 0x00 0x00 0x07>;
                        interrupt-names = "misc";
                        interrupts = <0x00 0x48 0x04>;
                        interrupt-parent = <0x05>;
                        bus-range = <0x00 0xff>;
                        ranges = <0x2000000 0x00 0xe0010000 0x00 0xe0010000 0x00 0x10000000 0x43000000 0x80 0x00 0x80 0x00 0x00 0x80000000>;
                        msi-map = <0x00 0x0d 0x00 0x10000>;
                        reg = <0x00 0xfca10000 0x00 0x1000 0x06 0x00 0x00 0x1000000>;
                        reg-names = "cpm_slcr\0cfg";
                        phandle = <0x47>;

                        interrupt-controller {
                                #address-cells = <0x00>;
                                #interrupt-cells = <0x01>;
                                interrupt-controller;
                                phandle = <0x0c>;
                        };
                };

                pcie@fcdd0000 {
                        device_type = "pci";
                        #address-cells = <0x03>;
                        #interrupt-cells = <0x01>;
                        #size-cells = <0x02>;
                        compatible = "xlnx,versal-cpm5-host";
                        status = "disabled";
                        interrupt-map = <0x00 0x00 0x00 0x01 0x0e 0x00 0x00 0x00 0x00 0x02 0x0e 0x01 0x00 0x00 0x00 0x03 0x0e 0x02 0x00 0x00 0x00 0x04 0x0e 0x03>;
                        interrupt-map-mask = <0x00 0x00 0x00 0x07>;
                        interrupt-names = "misc";
                        interrupts = <0x00 0x48 0x04>;
                        interrupt-parent = <0x05>;
                        bus-range = <0x00 0xff>;
                        ranges = <0x2000000 0x00 0xe0000000 0x00 0xe0000000 0x00 0x10000000 0x43000000 0x80 0x00 0x80 0x00 0x00 0x80000000>;
                        msi-map = <0x00 0x0d 0x00 0x10000>;
                        reg = <0x00 0xfcdd0000 0x00 0x1000 0x06 0x00 0x00 0x1000000 0x00 0xfce20000 0x00 0x1000000>;
                        reg-names = "cpm_slcr\0cfg\0cpm_csr";
                        phandle = <0x48>;

                        interrupt-controller {
                                #address-cells = <0x00>;
                                #interrupt-cells = <0x01>;
                                interrupt-controller;
                                phandle = <0x0e>;
                        };
                };

                watchdog@fd4d0000 {
                        compatible = "xlnx,versal-wwdt";
                        status = "disabled";
                        reg = <0x00 0xfd4d0000 0x00 0x10000>;
                        timeout-sec = <0x1e>;
                        clocks = <0x03 0x4c>;
                        power-domains = <0x09 0x18224029>;
                        phandle = <0x49>;
                };

                watchdog@ff120000 {
                        compatible = "xlnx,versal-wwdt";
                        status = "disabled";
                        reg = <0x00 0xff120000 0x00 0x10000>;
                        timeout-sec = <0x1e>;
                        clocks = <0x03 0x52>;
                        power-domains = <0x09 0x18224028>;
                        phandle = <0x4a>;
                };

                edac@f2014050 {
                        compatible = "xlnx,versal-xilsem-edac";
                        status = "disabled";
                        reg = <0x00 0xf2014050 0x00 0xc4>;
                        phandle = <0x4b>;
                };
        };

        pl_alt_ref_clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0x00>;
                clock-frequency = <0x1fca055>;
                phandle = <0x10>;
        };

        ref_clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0x00>;
                clock-frequency = <0x1fca055>;
                phandle = <0x0f>;
        };

        can0_clk {
                #clock-cells = <0x00>;
                compatible = "fixed-factor-clock";
                clocks = <0x03 0x60>;
                clock-div = <0x02>;
                clock-mult = <0x01>;
                phandle = <0x08>;
        };

        can1_clk {
                #clock-cells = <0x00>;
                compatible = "fixed-factor-clock";
                clocks = <0x03 0x61>;
                clock-div = <0x02>;
                clock-mult = <0x01>;
                phandle = <0x0a>;
        };

        firmware {

                versal-firmware {
                        compatible = "xlnx,versal-firmware";
                        interrupt-parent = <0x05>;
                        bootph-all;
                        method = "smc";
                        #power-domain-cells = <0x01>;
                        phandle = <0x09>;

                        clock-controller {
                                bootph-all;
                                #clock-cells = <0x01>;
                                compatible = "xlnx,versal-clk";
                                clocks = <0x0f 0x10>;
                                clock-names = "ref_clk\0pl_alt_ref_clk";
                                phandle = <0x03>;
                        };

                        zynqmp-power {
                                compatible = "xlnx,zynqmp-power";
                                phandle = <0x4c>;
                        };

                        reset-controller {
                                compatible = "xlnx,versal-reset";
                                #reset-cells = <0x01>;
                                phandle = <0x0b>;
                        };

                        pinctrl {
                                compatible = "xlnx,versal-pinctrl";
                                phandle = <0x4d>;
                        };

                        versal-sec-cfg {
                                compatible = "xlnx,versal-sec-cfg";
                                #address-cells = <0x01>;
                                #size-cells = <0x01>;
                                phandle = <0x4e>;

                                bbram-zeroize@4 {
                                        reg = <0x04 0x04>;
                                        phandle = <0x4f>;
                                };

                                bbram-key@10 {
                                        reg = <0x10 0x20>;
                                        phandle = <0x50>;
                                };

                                bbram-usr@30 {
                                        reg = <0x30 0x04>;
                                        phandle = <0x51>;
                                };

                                bbram-lock@48 {
                                        reg = <0x48 0x04>;
                                        phandle = <0x52>;
                                };

                                user-key@110 {
                                        reg = <0x110 0x20>;
                                        phandle = <0x53>;
                                };

                                user-key@130 {
                                        reg = <0x130 0x20>;
                                        phandle = <0x54>;
                                };

                                user-key@150 {
                                        reg = <0x150 0x20>;
                                        phandle = <0x55>;
                                };

                                user-key@170 {
                                        reg = <0x170 0x20>;
                                        phandle = <0x56>;
                                };

                                user-key@190 {
                                        reg = <0x190 0x20>;
                                        phandle = <0x57>;
                                };

                                user-key@1b0 {
                                        reg = <0x1b0 0x20>;
                                        phandle = <0x58>;
                                };

                                user-key@1d0 {
                                        reg = <0x1d0 0x20>;
                                        phandle = <0x59>;
                                };

                                user-key@1f0 {
                                        reg = <0x1f0 0x20>;
                                        phandle = <0x5a>;
                                };
                        };
                };
        };

        chosen {
                bootargs = "console=hvc0 cpuidle.off=1 maxcpus=1 earlycon=pl011,mmio32,0xFF000000,115200n8 root=/dev/mmcblk1p2 ro rootwait";
                stdout-path = "serial0:115200n8";
        };

        aliases {
                serial0 = "/dcc";
        };

        __symbols__ {
                cpus = "/cpus";
                cpu0 = "/cpus/cpu@0";
                cpu1 = "/cpus/cpu@1";
                CPU_SLEEP_0 = "/cpus/idle-states/cpu-sleep-0";
                cpu_opp_table = "/opp-table-cpu";
                dcc = "/dcc";
                fpga = "/fpga-region";
                psci = "/psci";
                timer = "/timer";
                versal_fpga = "/versal-fpga";
                sensor0 = "/versal-thermal-sensor";
                versal_thermal = "/thermal-zones/versal-thermal";
                temp_alert = "/thermal-zones/versal-thermal/trips/temp-alert";
                ot_crit = "/thermal-zones/versal-thermal/trips/ot-crit";
                amba = "/axi";
                gic = "/axi/interrupt-controller@f9000000";
                gic_its = "/axi/interrupt-controller@f9000000/msi-controller@f9020000";
                can0 = "/axi/can@ff060000";
                can1 = "/axi/can@ff070000";
                cci = "/axi/cci@fd000000";
                cci_pmu = "/axi/cci@fd000000/pmu@10000";
                lpd_dma_chan0 = "/axi/dma-controller@ffa80000";
                lpd_dma_chan1 = "/axi/dma-controller@ffa90000";
                lpd_dma_chan2 = "/axi/dma-controller@ffaa0000";
                lpd_dma_chan3 = "/axi/dma-controller@ffab0000";
                lpd_dma_chan4 = "/axi/dma-controller@ffac0000";
                lpd_dma_chan5 = "/axi/dma-controller@ffad0000";
                lpd_dma_chan6 = "/axi/dma-controller@ffae0000";
                lpd_dma_chan7 = "/axi/dma-controller@ffaf0000";
                gem0 = "/axi/ethernet@ff0c0000";
                gem1 = "/axi/ethernet@ff0d0000";
                gpio0 = "/axi/gpio@ff0b0000";
                gpio1 = "/axi/gpio@f1020000";
                i2c0 = "/axi/i2c@ff020000";
                i2c1 = "/axi/i2c@ff030000";
                i2c2 = "/axi/i2c@f1000000";
                mc0 = "/axi/memory-controller@f6150000";
                mc1 = "/axi/memory-controller@f62c0000";
                mc2 = "/axi/memory-controller@f6430000";
                mc3 = "/axi/memory-controller@f65a0000";
                ocm = "/axi/memory-controller@ff960000";
                rtc = "/axi/rtc@f12a0000";
                sdhci0 = "/axi/mmc@f1040000";
                sdhci1 = "/axi/mmc@f1050000";
                serial0 = "/axi/serial@ff000000";
                serial1 = "/axi/serial@ff010000";
                smmu = "/axi/iommu@fd800000";
                ospi = "/axi/spi@f1010000";
                qspi = "/axi/spi@f1030000";
                spi0 = "/axi/spi@ff040000";
                spi1 = "/axi/spi@ff050000";
                sysmon0 = "/axi/sysmon@f1270000";
                sysmon1 = "/axi/sysmon@109270000";
                sysmon2 = "/axi/sysmon@111270000";
                sysmon3 = "/axi/sysmon@119270000";
                ttc0 = "/axi/timer@ff0e0000";
                ttc1 = "/axi/timer@ff0f0000";
                ttc2 = "/axi/timer@ff100000";
                ttc3 = "/axi/timer@ff110000";
                usb0 = "/axi/usb@ff9d0000";
                dwc3_0 = "/axi/usb@ff9d0000/usb@fe200000";
                cpm_pciea = "/axi/pci@fca10000";
                pcie_intc_0 = "/axi/pci@fca10000/interrupt-controller";
                cpm5_pcie = "/axi/pcie@fcdd0000";
                pcie_intc_1 = "/axi/pcie@fcdd0000/interrupt-controller";
                watchdog = "/axi/watchdog@fd4d0000";
                watchdog1 = "/axi/watchdog@ff120000";
                xilsem_edac = "/axi/edac@f2014050";
                pl_alt_ref_clk = "/pl_alt_ref_clk";
                ref_clk = "/ref_clk";
                can0_clk = "/can0_clk";
                can1_clk = "/can1_clk";
                versal_firmware = "/firmware/versal-firmware";
                versal_clk = "/firmware/versal-firmware/clock-controller";
                zynqmp_power = "/firmware/versal-firmware/zynqmp-power";
                versal_reset = "/firmware/versal-firmware/reset-controller";
                pinctrl0 = "/firmware/versal-firmware/pinctrl";
                versal_sec_cfg = "/firmware/versal-firmware/versal-sec-cfg";
                bbram_zeroize = "/firmware/versal-firmware/versal-sec-cfg/bbram-zeroize@4";
                bbram_key = "/firmware/versal-firmware/versal-sec-cfg/bbram-key@10";
                bbram_usr = "/firmware/versal-firmware/versal-sec-cfg/bbram-usr@30";
                bbram_lock = "/firmware/versal-firmware/versal-sec-cfg/bbram-lock@48";
                user_key0 = "/firmware/versal-firmware/versal-sec-cfg/user-key@110";
                user_key1 = "/firmware/versal-firmware/versal-sec-cfg/user-key@130";
                user_key2 = "/firmware/versal-firmware/versal-sec-cfg/user-key@150";
                user_key3 = "/firmware/versal-firmware/versal-sec-cfg/user-key@170";
                user_key4 = "/firmware/versal-firmware/versal-sec-cfg/user-key@190";
                user_key5 = "/firmware/versal-firmware/versal-sec-cfg/user-key@1b0";
                user_key6 = "/firmware/versal-firmware/versal-sec-cfg/user-key@1d0";
                user_key7 = "/firmware/versal-firmware/versal-sec-cfg/user-key@1f0";
        };
};
chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/438.html

分享给朋友:

“自定义Versal BSP编译Petalinux” 的相关文章

what is network on chip(NOC)?

what is network on chip(NOC)?

上面的一堆主要是说:现在PS、PL、DDR甚至外设和AIE都能通过统一的NOC进行通信。具体有以下这些单元来实现:1. NMU(NoC Master Units)功能 :NMU是数据进入NoC(片上网络)的入口 ,类似高速公路的“入口收费站”。它负责将主设备(如CPU、DMA控制器等)发出的数据请求...

Versal ACAP Primer Handbook

Versal ACAP Primer Handbook

一、核心架构区别1. Versal(ACAP)异构计算架构 :Versal是AMD/Xilinx推出的自适应计算加速平台(ACAP) ,集成多种计算单元:标量处理引擎 (Scalar Engine):包含ARM Cortex-A72应用处理器(APU)和Cortex-R5实时处理器(RPU),支持L...

(二)自定义Versal BSP编译Petalinux

(二)自定义Versal BSP编译Petalinux

接下来我们配置uboot、内核,弹出uboot页面按两次Esc按键即可退出chanra1n@chanra1n-Standard-PC-i440FX-PIIX-1996:~/vd100$ petalinux-config -c u-boot [INFO] Bi...

自定义Versal BSP创建XSA文件

自定义Versal BSP创建XSA文件

新建工程:紧接着添加CIPS双击,然后根据你的硬件添加外设,例如我添加SPI的存储器、EMMC和SD卡这里图片截图有问题,GEM0需要勾选MDIO。接下来按OK即可,我们现在开始配置NOC按OK后退出,我们配置这个时钟紧接着创建例化模板:Verilog程序(top.v)`timescale ...