0x80000000起始地址原因

本文解释了32位架构芯片的寻址空间特点,重点分析了i.MX6ULL芯片的内存地址映射,以及在正点原子Linux开发板上的应用实例,包括使用U-Boot通过TFTP加载Kernel和DTB文件的过程。
摘要由CSDN通过智能技术生成

一、芯片的基础知识说起

MCU、MPU、CPU这些主控芯片,有8位、16位和32位、64位,
为啥一般的芯片的开始地址是0x80000000,那是因为芯片制造商的想法。
一、地址空间

一个颗32位架构的芯片它的寻址空间为:0 ~ 0xFFFFFFFF
大小    字节    尺寸    地址范围
2^32(4294967296)    4GB    0x1 0000 0000    0 ~ 0xFFFFFFFF
(1)i.MX6ULL系列芯片
i.MX6ULL 应用处理器内存地址映射表

来源:《IMX6ULL参考手册》
ARM Platform Memory Map
Start address    End address    Size    Description
8000_0000    FFFF_FFFF    2048 MB    MMDC—x16 DDR Controller.
7000_0000    7FFF_FFFF    256 MB    Reserved
6000_0000    6FFF_FFFF    256 MB    QSPI1 Memory
5800_0000    5FFF_FFFF    128 MB    EIM Aliased
5000_0000    57FF_FFFF    128 MB    EIM (NOR/SRAM)
1000_0000    4FFF_FFFF    1024 MB    Reserved
0E00_0000    0FFF_FFFF    32 MB    Reserved
0C00_0000    0DFF_FFFF    32 MB    QSPI1 Rx Buffer
0900_0000    0BFF_FFFF    48 MB    Reserved
0800_0000    08FF_FFFF    16 MB    Reserved
02C0_0000    07FF_FFFF    84 MB    Reserved
0230_0000    02BF_FFFF    9 MB    Reserved
0220_0000    022F_FFFF    1 MB    Table 2-4 AIPS-3. See IP listing on the separate map.
0210_0000    021F_FFFF    1 MB    Table 2-3 AIPS-2. See the IP listing on the separate map.
0200_0000    020F_FFFF    1 MB    Table 2-2 AIPS-1. See the IP listing on the separate map.
0181_0000    01FF_FFFF    8128 KB    Reserved
0180_C000    0180_FFFF    16 KB    Reserved
0180_8000    0180_BFFF    16 KB    BCH
0180_6000    0180_7FFF    8 KB    GPMI
0180_4000    0180_5FFF    32 KB    APBH DMA
0180_0000    0180_3FFF    16 KB    Reserved
0120_0000    017F_FFFF    6 MB    Reserved
0110_0000    011F_FFFF    1 MB    Reserved
0100_0000    010F_FFFF    1 MB    Reserved
00F0_0000    00FF_FFFF    1 MB    Reserved
00E0_0000    00EF_FFFF    1 MB    (per_m) configuration port
00D0_0000    00DF_FFFF    1 MB    (cpu) configuration port
00C0_0000    00CF_FFFF    1 MB    GPV_1 PL301
00B0_0000    00BF_FFFF    1 MB    GPV_0 PL301 configuration port
00A0_8000    00AF_FFFF    992 KB    Reserved
00A0_0000    00A0_7FFF    32 KB    ARM Peripherals: GIC400 Only visible to ARM core(s)
009C_0000    009F_FFFF    256 KB    Reserved
0098_0000    009B_FFFF    256 KB    Reserved
0092_0000    0097_FFFF    384 KB    OCRAM aliased
0090_0000    0091_FFFF    128 KB    OCRAM 128 KB
008F_8000    008F_FFFF    32 KB    Reserved
007F_8000    008F_7FFF    1 MB    Reserved
0010_0000    0010_7FFF    32 KB    Reserved
0001_8000    000F_FFFF    928 KB    Reserved
0001_7000    0001_7FFF    4 KB    Boot ROM—Protected 4 KB area
0000_0000    0001_6FFF    92 KB    Boot ROM (ROMCP)

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

    512MB DDR3L
    8GB EMMC

大小    字节    尺寸    地址范围
536870912    512MB    0x2000 0000    0 ~ 0x1FFF FFFF

对应i.MX6ULL地址映射空间:
字节    尺寸    地址范围    对应
512MB    0x2000 0000    0 ~ 0x1FFF FFFF    0x8000 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值