嵌入式Linux--地址的总结--0x80000000起

一、芯片的基础知识说起

 MCU、MPU、CPU这些主控芯片,有8位、16位和32位、64位,

为啥一般的芯片的开始地址是0x80000000,那是因为芯片制造商的想法。

一、地址空间

一个颗32位架构的芯片它的寻址空间为:0 ~ 0xFFFFFFFF

大小字节尺寸地址范围
2^32(4294967296)4GB0x1 0000 00000 ~ 0xFFFFFFFF

(1)i.MX6ULL系列芯片

i.MX6ULL 应用处理器内存地址映射表

来源:《IMX6ULL参考手册》
ARM Platform Memory Map

Start addressEnd addressSizeDescription
8000_0000FFFF_FFFF2048 MBMMDC—x16 DDR Controller.
7000_00007FFF_FFFF256 MBReserved
6000_00006FFF_FFFF256 MBQSPI1 Memory
5800_00005FFF_FFFF128 MBEIM Aliased
5000_000057FF_FFFF128 MBEIM (NOR/SRAM)
1000_00004FFF_FFFF1024 MBReserved
0E00_00000FFF_FFFF32 MBReserved
0C00_00000DFF_FFFF32 MBQSPI1 Rx Buffer
0900_00000BFF_FFFF48 MBReserved
0800_000008FF_FFFF16 MBReserved
02C0_000007FF_FFFF84 MBReserved
0230_000002BF_FFFF9 MBReserved
0220_0000022F_FFFF1 MBTable 2-4 AIPS-3. See IP listing on the separate map.
0210_0000021F_FFFF1 MBTable 2-3 AIPS-2. See the IP listing on the separate map.
0200_0000020F_FFFF1 MBTable 2-2 AIPS-1. See the IP listing on the separate map.
0181_000001FF_FFFF8128 KBReserved
0180_C0000180_FFFF16 KBReserved
0180_80000180_BFFF16 KBBCH
0180_60000180_7FFF8 KBGPMI
0180_40000180_5FFF32 KBAPBH DMA
0180_00000180_3FFF16 KBReserved
0120_0000017F_FFFF6 MBReserved
0110_0000011F_FFFF1 MBReserved
0100_0000010F_FFFF1 MBReserved
00F0_000000FF_FFFF1 MBReserved
00E0_000000EF_FFFF1 MB(per_m) configuration port
00D0_000000DF_FFFF1 MB(cpu) configuration port
00C0_000000CF_FFFF1 MBGPV_1 PL301
00B0_000000BF_FFFF1 MBGPV_0 PL301 configuration port
00A0_800000AF_FFFF992 KBReserved
00A0_000000A0_7FFF32 KBARM Peripherals: GIC400 Only visible to ARM core(s)
009C_0000009F_FFFF256 KBReserved
0098_0000009B_FFFF256 KBReserved
0092_00000097_FFFF384 KBOCRAM aliased
0090_00000091_FFFF128 KBOCRAM 128 KB
008F_8000008F_FFFF32 KBReserved
007F_8000008F_7FFF1 MBReserved
0010_00000010_7FFF32 KBReserved
0001_8000000F_FFFF928 KBReserved
0001_70000001_7FFF4 KBBoot ROM—Protected 4 KB area
0000_00000001_6FFF92 KBBoot ROM (ROMCP)

 从上表可以看出,在整个4GB的地址空间内,前2GB的地址空间有其他用处,后2GB的地址空间分配给了内存控制器,所以在操作内存地址的时候都是从0x80000000地址开始的,这其实就限制了该类型(32位架构)的芯片最大支持内存为4GB,而i.MX6ULL芯片所支持的最大的内存为2GB。

二、正点原子Linux开发板

  • 512MB DDR3L
  • 8GB EMMC
大小字节尺寸地址范围
536870912512MB0x2000 00000 ~ 0x1FFF FFFF

对应i.MX6ULL地址映射空间:

字节尺寸地址范围对应
512MB0x2000 00000 ~ 0x1FFF FFFF0x8000 0000 ~ 0xA000 0000

我在这里的操作:
嵌入式Linux–U-Boot(九)通过TFT/NFS网络更新U-Boot、Kernel、DTB文件
可以看到:

=> tftp 80800000 zImage
Using FEC1 device
TFTP from server 192.168.0.120; our IP address is 192.168.0.121
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ########
         2.4 MiB/s
done
Bytes transferred = 6786368 (678d40 hex)
=> tftp 83000000 imx6ull_liefyuan_emmc.dtb
Using FEC1 device
TFTP from server 192.168.0.120; our IP address is 192.168.0.121
Filename 'imx6ull_liefyuan_emmc.dtb'.
Load address: 0x83000000
Loading: ###
         2.1 MiB/s
done
Bytes transferred = 38823 (97a7 hex)

 从上面可以看到:

  • 地址0x80800000是从8MB的地方开始的一个内存区域,那前面8MB区域放了些啥玩意?
  • 地址0x83000000是从48MB的地方开始的一个内存区域

在这里插入图片描述

  • 地址一:0x83000000
  • 地址二:0x80800000
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值