编译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

OrangePi Kunpeng Pro 安装 ROS2 + Gazebo

OrangePi Kunpeng Pro 的优点很明显,内置openEuler,配备PD电源,做到开箱即用;板子设计也不错,风扇噪音不大,散热良好,昇腾芯片又确保小板子的性能,接口丰富是这类板子共同的优点,也很好的继承了下来,甚至还可以外接固态,可靠性大大提升。使用起来,哪怕不用openEuler的话,也可以很方便的刷Ubuntu来实现一些需要依赖的开发工作,这次没有跑AI模型,所以对算力的优势还没有很明显的感受,下次可以试一下yolo跑跑看。

Arcan 1824

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

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

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

似水流年 1万+

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且不构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1196

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

Python解析骑行fit文件:从数据缺失到完整记录

本文详细介绍了如何利用Python解析和处理骑行FIT文件,解决数据缺失问题。通过使用fitparse库读取二进制FIT文件,并结合Garmin FitCSVTool进行格式转换,指导读者一步步诊断数据完整性、设计心率修补方案,并最终生成完整的骑行记录文件。该方法为骑行爱好者提供了灵活的数据修复与自定义分析能力。

weixin_29062255的博客 456

PYTHON 打印三角形大全

用PYTHON语言打印各种三角形

世上无难事,只要肯攀登 1万+

三、zedboard Linux内核编译

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

weixin_33762130的博客 182

Labwindows CVI写上位机与STM32下位机通信(二)

接着上篇,这篇主要谈谈流量计数据读取。我们使用的MEMS流量计采用Modbus协议Modbus 使用RS-485 作为硬件载体。 一. Modbus协议   该协议定义了 Modbus 总线Master(主设备)与Slave(从设备)之间的通讯报文格式,对于主设备来说,Modbus 协议是联系上位机(如PC、PLC、HMI 等)的接口,而且所有的通讯都是“透明的”。控制器通信使用主-从技术,即

yang2011079080010的专栏 1万+

在基于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

9.1 机器人动力学建模

目录9.1 机器人动力学建模一、机器人动力学的基本概念1. 什么是机器人动力学?2. 动力学方程二、机器人动力学建模方法1. 拉格朗日方法2. 牛顿-欧拉方法三、Simulink 中的机器人动力学建模1. 使用 Simscape Multibody 建模示例:构建一个两连杆机械臂的动力学模型。步骤:2. 使用 Robotics System Toolbox 建模示例:构建一个六自由度工业机器人的动力学模型。步骤:四、示例:两连杆机械臂的动力学建模目标:步骤:五、结果分析1. 动态响应2. 参数敏感性六、总结

xiaoheshang_123的博客 626

小波变换(深入浅出)

小波变换

weixin_46713695的博客 3万+

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[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、付费专栏及课程。

余额充值