NXP(Freescale) QorIQ T2080 Memory Map分析

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

概述

在这里插入图片描述
在T2080中,有4种地址域(address domains),

  1. CPU看到的逻辑地址,虚拟地址,物理地址,由MMU负责三者的转换
  2. 内部本地地址空间,包含CCSR和DSCR
  3. SRIO的外部内存,IO,和配置空间
  4. PCIe的外部内存,IO,和配置空间

本地地址映射(local address map)指的是,CPU看到的物理地址,即CPU访问内存和IO空间时,发出的地址,DMA控制器也使用这个本地地址映射,所有的DDR空间和其他模块如CCSR存在于这个地址映射中,本地地址映射由32个本地访问窗口LAWs(local access window)定义,每个窗口映射一个目标接口,比如DDR控制器,PCIe控制器,CCSR有一个专用的CCSR窗口,本地地址映射还有一个固定的启动(boot)窗口,位于0x00_FF80_0000到0x00_FFFF_FFFF,DCSR会占用一个LAW。
如果对LAW的访问落到了外设接口比如SRIO,那么外设会用ATMU(address translation and mapping unit)再对这个地址进行转换,发到外设上的地址是转换后的地址,DDR Controller和IFC也有类似的功能,

  • Outbound ATMU负责将本地地址空间翻译到外设地址空间
  • Inbound ATMU负责把外设地址空间翻译到本地地址空间

所以Inbound ATMU和LAW必须是一致的。对比ATMU和LAW可以发现,LAW只是标识哪一段地址空间是哪个外设,但没有翻译操作。

LAW

如果不同外设对应的LAW有重复部分,那么32个窗中编号小的占有这段空间。一组LAW由3个32位寄存器表示,高32地址,低32位地址,属性。注意每组LAW占用4个32位寄存器,后面预留了一个(比如0xC0C),这样是对齐的,2的整数幂。
在这里插入图片描述
CCSR地址在0xFFE000000,LAW从0xC00到0xDF8,这是我们custom board的内存映射,

开始结束定义长度
0xFFFDF00000xFFFDFFFFFIFC-CPLD4KB
0xFFE0000000xFFEFFFFFFCCSR16MB
0xFFD0000000xFFDFFFFFFIFC-FPGA16MB
0xFF80300000xFF803FFFFPCIe4 IO Space64KB
0xFF80200000xFF802FFFFPCIe3 IO Space64KB
0xFF80100000xFF801FFFFPCIe2 IO Space64KB
0xFF80000000xFF800FFFFPCIe1 IO Space64KB
0xFF60000000xFF7FFFFFFQMan32MB
0xFF40000000xFF5FFFFFFBMan32MB
0xFE00000000xFEFFFFFFFIFC-NOR256MB
0xFD00000000xFDFFFFFFFIFC-FPGA-BPI-NOR256MB
0xF000000000xF003FFFFFDCSR4MB
0xC400000000xC4FFFFFFFPCIe4 Mem Space256MB
0xC300000000xC3FFFFFFFPCIe3 Mem Space/RapidIO2256MB
0xC200000000xC2FFFFFFFPCIe2 Mem Space/RapidIO1256MB
0xC000000000xC1FFFFFFFPCIe1 Mem Space512MB
0x0000000000x0FFFFFFFFDDR4GB

看下Linux下的LAW,LAW在u-boot下就已经设置好,Linux并没有对LAW进行更改,PCIe123没有出现,因为我们板子上没用,对应也没有使能,最后一个LAW(Source ID=0x10),对应的是DDR,大小的计算公式为2^(val + 1),所以DDR的大小为2^(0x1f + 1) = 4GB

T2080> md 0xFE000C00 0x80
fe000c00: 0000000f e0000000 81f0001b 00000000    ................
fe000c10: 0000000f f4000000 81800018 00000000    ................
fe000c20: 0000000f f6000000 83c00018 00000000    ................
fe000c30: 0000000f ffdf0000 81f0000b 00000000    ................
fe000c40: 0000000f fd000000 81f00017 00000000    ................
fe000c50: 0000000f d0000000 81f0001b 00000000    ................
fe000c60: 0000000f 00000000 81d00018 00000000    ................
fe000c70: 0000000c 40000000 8030001b 00000000    ....@....0......
fe000c80: 0000000f f8030000 8030000f 00000000    .........0......
fe000c90: 00000000 00000000 00000000 00000000    ................
fe000ca0: 00000000 00000000 00000000 00000000    ................
fe000cb0: 00000000 00000000 00000000 00000000    ................
fe000cc0: 00000000 00000000 00000000 00000000    ................
fe000cd0: 00000000 00000000 00000000 00000000    ................
fe000ce0: 00000000 00000000 00000000 00000000    ................
fe000cf0: 00000000 00000000 00000000 00000000    ................
fe000d00: 00000000 00000000 00000000 00000000    ................
fe000d10: 00000000 00000000 00000000 00000000    ................
fe000d20: 00000000 00000000 00000000 00000000    ................
fe000d30: 00000000 00000000 00000000 00000000    ................
fe000d40: 00000000 00000000 00000000 00000000    ................
fe000d50: 00000000 00000000 00000000 00000000    ................
fe000d60: 00000000 00000000 00000000 00000000    ................
fe000d70: 00000000 00000000 00000000 00000000    ................
fe000d80: 00000000 00000000 00000000 00000000    ................
fe000d90: 00000000 00000000 00000000 00000000    ................
fe000da0: 00000000 00000000 00000000 00000000    ................
fe000db0: 00000000 00000000 00000000 00000000    ................
fe000dc0: 00000000 00000000 00000000 00000000    ................
fe000dd0: 00000000 00000000 00000000 00000000    ................
fe000de0: 00000000 00000000 00000000 00000000    ................
fe000df0: 00000000 00000000 8100001f 00000000    ................
root@t2080rdb:~# memtool md -l 0xFFE000C00+0x200 
ffe000c00: 0000000f e0000000 81f0001b 00000000                ................
ffe000c10: 0000000f f4000000 81800018 00000000                ................
ffe000c20: 0000000f f6000000 83c00018 00000000                ................
ffe000c30: 0000000f ffdf0000 81f0000b 00000000                ................
ffe000c40: 0000000f fd000000 81f00017 00000000                ................
ffe000c50: 0000000f d0000000 81f0001b 00000000                ................
ffe000c60: 0000000f 00000000 81d00018 00000000                ................
ffe000c70: 0000000c 40000000 8030001b 00000000                ....@....0......
ffe000c80: 0000000f f8030000 8030000f 00000000                .........0......
ffe000c90: 00000000 00000000 00000000 00000000                ................
ffe000ca0: 00000000 00000000 00000000 00000000                ................
ffe000cb0: 00000000 00000000 00000000 00000000                ................
ffe000cc0: 00000000 00000000 00000000 00000000                ................
ffe000cd0: 00000000 00000000 00000000 00000000                ................
ffe000ce0: 00000000 00000000 00000000 00000000                ................
ffe000cf0: 00000000 00000000 00000000 00000000                ................
ffe000d00: 00000000 00000000 00000000 00000000                ................
ffe000d10: 00000000 00000000 00000000 00000000                ................
ffe000d20: 00000000 00000000 00000000 00000000                ................
ffe000d30: 00000000 00000000 00000000 00000000                ................
ffe000d40: 00000000 00000000 00000000 00000000                ................
ffe000d50: 00000000 00000000 00000000 00000000                ................
ffe000d60: 00000000 00000000 00000000 00000000                ................
ffe000d70: 00000000 00000000 00000000 00000000                ................
ffe000d80: 00000000 00000000 00000000 00000000                ................
ffe000d90: 00000000 00000000 00000000 00000000                ................
ffe000da0: 00000000 00000000 00000000 00000000                ................
ffe000db0: 00000000 00000000 00000000 00000000                ................
ffe000dc0: 00000000 00000000 00000000 00000000                ................
ffe000dd0: 00000000 00000000 00000000 00000000                ................
ffe000de0: 00000000 00000000 00000000 00000000                ................
ffe000df0: 00000000 00000000 8100001f 00000000                ................

看下LAW的Source ID,
在这里插入图片描述
在这里插入图片描述

ATMU

  • SRIO有8个Outbound ATMU和1个默认的ATMU,4个Inbound ATMU和1个默认的ATMU,
  • PCIe有4个Outbound ATMU和1个默认的ATMU,4个Inbound ATMU和1个固定的MSI ATMU。

如果一个Inbound传输对应的LAW指向一个外设,这样有可能造成系统死锁。ATMU寄存器意义如下,
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值