编译ZedBoard的devicetree.dtb

2.2设备树的规范(dts和dtb)——DTB格式 本节讲述设备的dtb格式。 上节讲述了dts格式。回顾上节,在dts文件和dtsi文件中,可以使用C语言的define和include,使用方法和作用也同C语言相同。 编写dts文件后,需要使用dtc工具将dts文件编译成dtb文件。dtc工具可以检查dts文件是否存在语法或格式错误,如果发现语法或格式上有错误,那么就会提示修改这些错误。 在dts文件中,可以包含一个或多个dtsi文件,通过dtc工具将这些文件编译得到一个dtb文件。同时,可以在dts文件中重新定义覆盖dtsi文件中设置的节点属性。 阅读详情

设备树是一种用来描述硬件的数据结构,它可以描述CPU,可以描述时钟、中断控制器、IO控制器、SPI总线控制器、I2C控制器、存储设备等任何现有驱动设备。内核可以识别这棵树,并根据它展开出Linux 内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核, 内核会将这些资源绑定给展开的相应的设备。

ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,采用Device Tree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。

设备树的编译器在linux源码目录下scripts/dtc/中。注意:要使用设备树,内核在编译时需要配置为打开设备树编译器。

         生成设备树有两种方法:一种是通过linux源码中的设备树源文件生成设备树、另一种是使用xilinx的SDK2014.2软件生成设备树。

方法一:

1、在linux源码目录下的arch/arm/boot/dts目录中有设备树源文件,ZedBoard对应的设备树源文件名为zynq-zed.dts(如果需要包含PL部分的借口,则需要手动在zynq-zed.dts中添加相应的设备描述)

2、编译设备树:在linux源码根目录下运行如下命令,即可生成devicetree.dtb文件。

scripts/dtc/dtc –I dts –O dtb –o devicetree.dtb arch/arm/boot/dts/zynq-zed.dts


注:dtb的反编译命令:

scripts/dtc/dtc –I dtb –O dts –o my_devicetree.dts devicetree.dtb

方法二:

 

由于从2014.1版本开始,SDK里面软硬件管理的机制发生了变化,无法在2014.1上生成DTS文件。为了解决这个问题,xilinx在2014.2版本的SDK里面提供了一个新的BSP包。为了和之前的版本隔离开,下载位置也发生了变化:https://github.com/Xilinx/device-tree-xlnx/releases

 

将2014.2对应的gz文件下载下来,解压后发现和以前相比变化非常大:

下面是2013.4的SDK生成devicetree的BSP包解压后的内容

 

而2014.2版本的SDK生成devicetree的BSP包解压后的内容如下:

随便进入其中一个目录查看文件夹内容: 在2014.2的版本里面将每个接口放到独立的文件夹去描述了。

       之前制作dts的步骤我们可以参考http://www.wiki.xilinx.com/Build+Device+Tree+Blob。在2014.2版本里面也是参考该链接的步骤来做。

         将下载的文件device-tree-xlnx-xilinx-v2014.2.tar.gz解压得到一个叫device-tree-xlnx-xilinx-v2014.2目录,将该目录下同样名为device-tree-xlnx-xilinx-v2014.2的目录重命名为device-tree_v0_00_a,然后将device-tree_v0_00_a拷贝到一个名叫bsp的目录中,bsp的上一级目录的路径将会是添加到repo中的路径。

         比如我的device-tree_v0_00_a文件夹的路径是D:\Xilinx-doc\Code\targz_devicetree\devicetree_repo\bsp,其中D:\Xilinx-doc\Code\targz_devicetree\devicetree_repo就是被添加到repo中的路径: 

添加完了repo路径之后,通过file->New->Board Support Package来创建DTS的BSP:

在弹出的界面中选择device tree

然后点击Finish按钮:

 这里可以直接先点击OK,当然也可以添加自己的bootargs,如果你的硬件工程里面有多个串口,可能还要配置一下console_device,也就是linux启动后的打印串口。

         点击OK之后,在工程窗口会生成一个device_tree_bsp_0的目录,这个目录里面有ps.dtsi和system.dts两个文件是我们需要的。

其中ps.dtsi包含了你外设接口信息的内容,但它不是一个完整的DTS,后缀中的i表示它类似于C语言里面的头文件。在system.dts里面通过/include/ "ps.dtsi"来包含它。

         system.dts里面的内容比较简单,值有chosen、aliases以及memory的信息:

/*

* CAUTION: This file is automatically generated by Xilinx.

* Version: 

 * Today is: Mon Jul 07 16:24:07 2014

*/

 

/dts-v1/;

/include/ "ps.dtsi"

/{

    chosen {

        bootargs = "console=ttyPS0,115200";

        linux,stdout-path = &ps7_uart_1;

    } ;

    aliases {

        ethernet0 = &ps7_ethernet_0;

        serial0 = &ps7_uart_1;

        spi0 = &ps7_qspi_0;

    } ;

    ps7_ddr_0: memory@00100000 {

        device_type = "memory";

        reg = <0x0 0x20000000>;

    } ;

};

 如果硬件工程里面包含了PL的接口怎么办?事实上如果你的硬件工程里面有PL的信息的话,会另外生成一个pl.dtsi的文件。

    将ps.dtsi和system.dts文件拷贝到虚拟机里面,你可以考虑放到2014.2的内核arch/arm/boot/dts目录中,也可以放到别的地方。

    如果你将上述两个文件放到arch/arm/boot/dts目录中,在linux的目录里面直接make system.dtb就可以生成dtb文件。

    如果你放到别的目录,也可以在对应目录执行dtc -I dts -O dtb -o system.dtb system.dts生成dtb文件。

    需要特别指出的一点是,SDK里面生成的ps.dtsi文件里面会将ZYNQ所有的接口都加进去,比如说你没有选择UART0,在ps.dtsi里面也会有UART0的信息:

        ps7_uart_0: ps7-uart@0xe0000000 {

            clock-names = "ref_clk", "aper_clk";

            clocks = <&clkc 23>, <&clkc 40>;

            compatible = "xlnx,ps7-uart-1.00.a";

            interrupt-parent = <&ps7_scugic_0>;

            interrupts = <0 27 4>;

            reg = <0xE0000000 0x1000>;

            status = "disabled";

        } ;

 

    但是与你硬件工程中包括的接口相比,在这种不存在的接口的描述信息里面有一个status = “disabled”字段,用户可以根据这个字段将不需要的接口删除。

嵌入式设备树语法总结和of函数 ARM内核Linux3.0 以前是没有设备树的,那时ARM Linux使用者们用C语言的数据结构来描述板子的设备,每一个设备就对应到一个描述文件。实际上单独编译驱动是可以的,但是,为了统一操作步骤就都用 petalinux-build命令了) 设备树就是设备树结构体,树是个形象的比喻,以系统总线为主干,其它挂在在系统总 线上的如 I2C,SPI,GPIO 控制器等设备为分支,而那些挂载在主干上的分支又有它们自身挂载的设备,such as I2C上挂载了EEPROM、RTC等,这种树干分叉结构就如同树一般。 阅读详情

相关推荐

ZedBoard REV_C的BOOT.BIN、devicetree.dtb、logo.bin、zImage、led_test.sh、oled_test.sh

针对ZedBoard REV_C开发板配套的HDMI显示Linaro Ubuntu系统界面需要的BOOT.BIN、devicetree.dtb、logo.bin、zImage文件,测试LED、OLED的可执行文件。

全志平台boot.scr、script.bin文件介绍(“全志设备树系统”)

全志平台boot.scr、script.bin文件介绍(“全志设备树系统”)

二进制模----细微行动改变影响世界 1322

device-tree-xlnx-xilinx-v2018.3

device-tree-xlnx-xilinx-v2018.3

使用dtc将dtb反编译成dts

kernel_dir/script/dtc/dtc -I dtb -O dts -o xxx.dts xxx.dtb dtb通过dtc转换为dts后是一个全的device tree,因为之前#include "xxx.dtsi"中的内容也一起在反编译出来的dts中了,所有的内容都集中在一个dts文件中了。

luckywang1103的专栏 9978

二叉树的操作之统计二叉树中节点的个数

一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结...

weixin_34200628的博客 4568

快速理解STLink引脚图中复位引脚作用

深入讲解STLink引脚图中复位引脚的实际用途,帮助开发者快速掌握其在调试与下载过程中的关键作用,结合stlink引脚图理解更高效。

weixin_32324637的博客 1326

mangopi R3--Allwinner F1C200S一步到位编译法

文章目录前言Buildroot一键编译 前言 https://mangopi.cc/f1c_mainline Buildroot一键编译 地址:https://github.com/mangopi-sbc/buildroot-mangopi-r

似水流年 1万+

Matlab实战:12种优化算法在CEC2014测试集上的性能对比(附完整代码)

本文详细对比了12种优化算法在CEC2014测试集上的性能表现,包括PSO、DE、GA等主流算法。通过Matlab实现完整的实验流程,涵盖算法实现、参数设置、结果分析与可视化,为工程优化问题提供实用解决方案。特别关注收敛曲线和评价指标,帮助读者选择最适合特定场景的优化算法。

wine的专栏 681

zedboard vivado+zedboard之Linux编译

vivado+zedboard之Linux编译   本文将介绍如何利用上节搭建好的交叉编译环境编译嵌入式Linux所需的文件,包括u-boot、uImage(内核)、uramdisk.image.gz(文件系统)和devicetree.dtb(设备树)。 原料: u-boot-xlnx.git  linux-xlnx.gitdevice-tree-xlnx-xilinx-v2014.

linuxarmsummary的专栏 8998

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速)

本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。

peach的博客 962

HDMI2.1/eDP TX接口设计:

HDMI2.1向下兼容,HDMI2.1工作在FRL模式,HDMI2.0工作在TMDS模式。因此采用AC耦合电压模式驱动器。一般采用220nF,封装建议0201。,但是协议要求,往 CEC 管脚通过 27K 电阻加 3.3V 电压,漏电不允许超过。NOTE:如果只需要支持 HDMI2.0 及以下模式时, MOS管也不能省掉。DDC_SCL/DDC_SDA 协议规定是。HDMI2.0模式:配置为高,MOS导通。HDMI2.1模式:配置为低,MOS不导通。,必须增加电平转换电路。形成直流偏置,大约3V。

qq_40010777的博客 7859

三、zedboard Linux内核编译

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33762130的博客 182

ubuntu恢复分区表——testdisk

testdisk恢复ubuntu分区表testdisk介绍安装testdisk使用testdisk恢复分区表 testdisk介绍 testdisk 具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,也经常被用来恢复被误删的文件。 安装testdisk 如果系统分区表被删除,需要使用ubuntu的启动盘,选择try ubnutu模式进入试用系统。 1、可以直接在终端安装testdisk: sudo apt-get install testdisk 通过命令直接打开testdisk: t

ZNestor的博客 6459

在基于ZedBoard的Linux系统下添加自定义硬件IP(2)——自定义硬件IP设计

硬件使用C语言在Vivado HLS里面设计,完成了最简单的两个输入数据的乘法和求和。具体的下载链接:http://download.csdn.net/detail/young_fly/9509703 。 (1)硬件IP设计 出下图中可以看到,输入为a,b,输出位accum。选择的软硬件接口为AXI4-Lite。 (2)硬件IP打包 编译通过之后,点击工具栏的Export RTL,

young_fly的专栏 1589

RandLA-Net Tensorrt 推理 c++

RandLA-Net 实现 Tensorrt 部署.

J。 1110

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 774

vivado+zedboard之Linux编译

vivado+zedboard之Linux编译   本文将介绍如何利用上节搭建好的交叉编译环境编译嵌入式Linux所需的文件,包括u-boot、uImage(内核)、uramdisk.image.gz(文件系统)和devicetree.dtb(设备树)。 原料: u-boot-xlnx.git linux-xlnx.gitdevice-tree-xlnx-xilinx-v2

linsheng_111的专栏 621

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux dtb在哪个目录,ZedBoard移植嵌入式Linux教程(9,10)——编译设备树dts为dtb,制作根文件系统...

九、编译设备树dts为dtb前面的linux内核源码目录中已经包含了设备树编译器Device Tree Compiler(dtc),在目录arch/arm/boot/dts/目录下。将前面生成的xilinx.dts文件拷贝到ubuntu下,使用如下命令进行编译dtc -I dts -O dtb -o devicetree.dtb xilinx.dts上面Dtc编译器有几个选项和参数:-I是输入文件...

weixin_39934613的博客 1939

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux下vivado编译卡死,vivado+zedboard之Linux编译

本文将介绍如何利用上节搭建好的交叉编译环境编译嵌入式Linux所需的文件,包括u-boot、uImage(内核)、uramdisk.image.gz(文件系统)和devicetree.dtb(设备树)。原料:u-boot-xlnx.gitlinux-xlnx.gitdevice-tree-xlnx-xilinx-v2014.4.zip编译1. U-Boot~$ mkdir ZYNQ~$ cd ZY...

weixin_35917339的博客 1129

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[ZedBoard移植嵌入式Linux教程(9,10)]编译设备树dts为dtb,制作根文件系统

九、编译设备树dts为dtb前面的linux内核源码目录中已经包含了设备树编译器Device Tree Compiler(dtc),在目录arch/arm/boot/dts/目录下。将前面生成的xilinx.dts文件拷贝到ubuntu下,使用如下命令进行编译dtc -I dts -O dtb -o devicetree.dtb xilinx.dts上面Dtc编译器有几个选项和参数:-I是输入文件

DC的陋室 5711

在ZedBoard上运行Linaro Ubuntu并挂载U盘

首先是按照官方demo和网上很多帖子的步骤,用zedboard成功运行Linux系统,主要参考的是:http://www.eefocus.com/nightseas/blog/12-09/285685_7f77d.html 但是按照上述步骤,遇到了帖子评论里所说的屏幕上只显示两只小企鹅,串口隔几秒就打印一行 “detect: f0 1 0 0” 的问题,我从以下帖子中找到了原因及解决方法:htt

Bangzhao的博客 992

在基于ZedBoard的Linux系统下添加自定义硬件IP(1)——启动Linux系统

在2015年7月来到北京,接触到了ZedBoard这个开发平台。从一无所知,到现在能在Linux下添加自定义IP并完成相应的驱动程序和应用程序,走了很多的弯路。 希望能把我碰到的一些问题和大家分享,让初学者少走弯路。 (1)如果是刚接触ZedBoard,还没有到使用Linux系统这一步,可以参考超群晴天的博客:http://www.cnblogs.com/surpassal/。最开始学习ZedB

young_fly的专栏 1775

ZYNQ学习(2.1) —— 启动流程分析及各环节文件生成流程(ZedBoard为例)

ZYNQ学习(2.1) —— 启动流程分析及各环节文件生成流程(ZedBoard为例) 1.ZYNQ的启动流程 Zynq7000就如同他的名字一样,Zynq-7000ExtensibleProcessingPlatform,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。 所以,它的启动流程自然也和FPGA完全...

weixin_30859423的博客 1307

[Zedboard u-boot Linux系统移植]-Embedded Linux® Hands-on Tutorial for the ZedBoard™

本文翻译自Embedded Linux® Hands-on Tutorial for the ZedBoard™ 本文主要是详细讲解zedboard硬件系统搭建,u-boot,linux-kernel移植,linaro文件系统移植。过程中需要生成的文件有system.bit,fsbl.elf,u-boot.elf,devicetree.dtb,uImage(zImage和uImage区别请看),l

夏菠 2506

Zedboard上运行Linaro系统(一):SD卡分区

原文链接:http://blog.csdn.net/yake827/article/details/51980181 硬件环境: Zedboard 不小于4G的SD卡 软件环境:        1.Vivado 2015.2开发环境(其他也可)        2.Xilinx SDK 2015.2        3.Ubuntu 14.04        4.xilinx的交叉

爱她就要努力 663
上一篇: 编译ZedBoard的linux镜像(uImage)
下一篇: wince7下的串口信息打印函数
EmSoftEn
博客等级 码龄12年 40粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值