A Tutorial on the Device Tree (Zynq) -- Part V

Application-specific data

之前提过,设备树中是一些特殊信息,这样一个驱动可以管理数片类似的硬件。例如,一个LCD显示驱动,分辨率信息和物理尺寸可能出现在设备树中。串口信息要告诉驱动当前的时钟频率。

最简单的,最常用的形式,这个信息由一条赋值语句组成:

      xlnx,slv-awidth = <0x20>;

"xlnx"前缀可以防止命名冲突。名字可以任意取,但最好能望文知意。这里的"xlnx"是使用软件自动生成设备树时加上的前缀。

为了抓取到这一条信息,代码可以这样写:

  void *ptr;
ptr = of_get_property(op->dev.of_node, "xlnx,slv-awidth", NULL); if (!ptr) {
/* Couldn't find the entry */
}

第三个参数NULL,是一个长度指针,可以返回数据的长度。

这条语句的值是一个数字:

  int value;
value = be32_to_cpup(ptr);

be32_to_cpup读“ptr”指向的数据,从大端转到处理器的小端,然后就得到想要的数字了。

drivers/of/base.c中有大量读取这些信息的API。

总结

为一个外置写一个设备树entry很简单:

  • 为"compatible"赋一个字符串"magic string",自动生成工具的生成格式一般是:名字+版本。
  • 在数据手册里查看总线上设备的地址分配信息, 写一条 "reg=" 语句。
  • "interrupt-parent=<&gic>"
  • 中断号 "interrupt="
  • 最后加上一些设备的自定义参数

翻译:A Tutorial on the Device Tree (Zynq) -- Part V的更多相关文章

  1. 翻译:A Tutorial on the Device Tree (Zynq) -- Part III

    A Tutorial on the Device Tree (Zynq) -- Part III 定义外设 可能你读本文是为了给你的设备写一个Linux驱动,在这方面要推荐著名的<Linux D ...

  2. 翻译:A Tutorial on the Device Tree (Zynq) -- Part II

    A Tutorial on the Device Tree (Zynq) -- Part II 设备树结构 Zynq的设备树如下: /dts-v1/; / { #address-cells = < ...

  3. 翻译:A Tutorial on the Device Tree (Zynq) -- Part I

    A Tutorial on the Device Tree (Zynq) -- Part I 此教程的目的 本教程是针对Xilinx' Zynq-7000 EPP设备(一个集成了FPGA的ARM Co ...

  4. 翻译:A Tutorial on the Device Tree (Zynq) -- Part IV

    获取资源信息 内核模块驱动加载之后,就开始把硬件资源管理起来,如读写寄存器.接收中断. 来看看设备树里的一条: xillybus_0: xillybus@50000000 { compatible = ...

  5. Device Tree Usage 【转】

    转自:http://blog.chinaunix.net/uid-20522771-id-3457184.html 原文链接:http://devicetree.org/Device_Tree_Usa ...

  6. Device Tree(二):基本概念

    转自:http://www.wowotech.net/linux_kenrel/dt_basic_concept.html 一.前言 一些背景知识(例如:为何要引入Device Tree,这个机制是用 ...

  7. Device Tree Usage( DTS文件语法)

    http://elinux.org/Device_Tree_Usage Device Tree Usage     Top Device Tree page This page walks throu ...

  8. 【转】Device Tree(二):基本概念

    原文网址:http://www.wowotech.net/linux_kenrel/dt_basic_concept.html 一.前言 一些背景知识(例如:为何要引入Device Tree,这个机制 ...

  9. Device Tree Usage(理解DTS文件语法)

    Basic Data Format The device tree is a simple tree structure of nodes and properties. Properties are ...

随机推荐

  1. Result实现类

    package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.ActionInvocation; import com.o ...

  2. 【Kubernetes】深入解析声明式API

    在Kubernetes中,一个API对象在Etcd里的完整资源路径,是由:Group(API组).Version(API版本)和Resource(API资源类型)三个部分组成的. 通过这样的结构,整个 ...

  3. 洛谷 [P2964] 硬币的游戏

    博弈论+dp 依旧是博弈论的壳子,但问的是最大值,所以要dp 设 dp[i][j] 表示该取 i 号硬币,上一次取了 j 个的先手能取的最大值, 因为每次从小到大枚举复杂度太高,所以我们要从 dp[i ...

  4. 【HDOJ6354】Everything Has Changed(计算几何)

    题意: 给定一个平面和一个(0,0)为中心的大圆,有n个小圆保证没有两两之间相交与覆盖整个大圆的情况,求小圆覆盖后大圆的周长并 1≤m≤100, -1e3<=x[i],y[i]<=1e3, ...

  5. 提高google网站访问速度

    修改:C:\Windows\System32\drivers\etc\hosts文件 # google websites.203.208.46.180 ssl.gstatic.com203.208.4 ...

  6. “ORA-01747: user.table.column, table.column 或列说明无效” 的解决方案

    此问题的原因是因为表的列名称使用了Oracle声明的关键字,列名起的不好引起的. 如果列很多,又不好确定是哪个列名使用了关键字,以下建议可供参考: select * from v$reserved_w ...

  7. 如何更改ORACLE 用户的 expired状态

    ORACLE(113) 版权声明:本文为博主原创文章,未经博主允许不得转载. oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢? 首先,  如果是l ...

  8. grafana结合influxdb、open-falcon出图配置

    1.https://www.jianshu.com/p/fadcf4d92b0e 2.https://www.jianshu.com/p/21ce6ee143f3 3.http://www.super ...

  9. myBatis学习笔记(10)——使用拦截器实现分页查询

    1. Page package com.sm.model; import java.util.List; public class Page<T> { public static fina ...

  10. BUPT复试专题—中位数(2014-2)

    题目描述 给定一个长度为N的非降数列,求数列的中位数.中位数:当数列的项数N为奇数吋,处于中间位置的变最值即为中位数:当N 为偶数时,中位数则为处于中间位置的两个数的平均数.   输入 输入数据第一行 ...