博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
范围(地址转换)
阅读量:4473 次
发布时间:2019-06-08

本文共 1685 字,大约阅读时间需要 5 分钟。

根节点始终描述的是 CPU 视角的地址空间。根节点的子节点已经使用的是 CPU 的地址域,所以它们不需要任何直接映射。例如,serial@101f0000 设备就是直接分配的 0x101f0000 地址

非根节点直接子节点的节点就没有使用 CPU 地址域为了得到一个内存映射地址,设备树必须指定从一个域到另一个域地址转换地方法,而 ranges 属性就为此而生。

/ {    compatible = "acme,coyotes-revenge";    #address-cells = <1>;    #size-cells = <1>;    ...    external-bus {        #address-cells = <2>        #size-cells = <1>;        ranges = <0 0  0x10100000   0x10000     // Chipselect 1, Ethernet                  1 0  0x10160000   0x10000     // Chipselect 2, i2c controller                  2 0  0x30000000   0x1000000>; // Chipselect 3, NOR Flash        ethernet@0,0 {            compatible = "smc,smc91c111";            reg = <0 0 0x1000>;        };        i2c@1,0 {            compatible = "acme,a1234-i2c-bus";            #address-cells = <1>;            #size-cells = <0>;            reg = <1 0 0x1000>;            rtc@58 {                compatible = "maxim,ds1338";                reg = <58>;            };        };        flash@2,0 {            compatible = "samsung,k8f1315ebm", "cfi-flash";            reg = <2 0 0x4000000>;        };    };};

ranges 是一个地址转换列表。ranges 表中的每一项都是一个包含子地址、父地址和在子地址空间中区域大小的元组

 

ranges = <0 0  0x10100000   0x10000     // Chipselect 1, Ethernet                 1 0  0x10160000   0x10000     // Chipselect 2, i2c controller                 2 0  0x30000000   0x1000000>; // Chipselect 3, NOR Flash

 

  

 

 ranges 每个字段的值都取决于子节点 #address-cells 、父节点的 #address-cells 和子节点的 #size-cells。以本例中的外部总线来说,子地址是 2 cell、父地址是 1 cell、区域大小也是 1 cell

i2c@1,0 节点中并没有 range 属性,这里的原因是 i2c 总线上的设备并没有被内存映射到 CPU 的地址域。CPU 将通过 i2c@1,0 设备间接访问 rtc@58 设备

缺少 ranges 属性意味着这个设备将不能被出他的父设备之外的任何设备直接访问。

 

  

转载于:https://www.cnblogs.com/liushuhe1990/p/9672017.html

你可能感兴趣的文章
adplus 抓取dump
查看>>
Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)【2.源代码简要说明】...
查看>>
[学习笔记]关于CUDA与OPENCL
查看>>
kafka之consumer参数auto.offset.reset 0.10+
查看>>
Strategic Game HDU - 1054(最小顶点覆盖)
查看>>
C#删除程序自身【总结】
查看>>
单例和多线程
查看>>
解析好的静态页面.shtml浏览器无法解析.需要apache解析后再返回给浏览器
查看>>
面向对象进阶
查看>>
import xxx from 和 import {xxx} from的区别
查看>>
局部内部类的简单应用
查看>>
《构建之法》读书笔记第6、7章——敏捷开发
查看>>
Codeforces 348C Subset Sums 分块思想
查看>>
TFS源代码管理原则
查看>>
SCR文件的关联被AutoCAD所取代的解决办法
查看>>
安装并使用PICT,生成测试用例
查看>>
我们都是爪哇狗
查看>>
背包问题
查看>>
【转】数据库--视图的基本概念以及作用
查看>>
单例模式
查看>>