内存划分概述

来源:互联网 发布:让mac变成显示器 编辑:程序博客网 时间:2024/06/06 02:43
1)SBL阶段
AMSS/boot_images/build/ms/8953.target.builds
定义很多内存地址,比如SCL_SBL1_IMAGE_BASE等
AMSS/boot_images/build/ms/build_8937.sh
用$TOOLS_SCONS_ROOT/build/build.sh -f target.scons --tcfgf=8953.target.builds  $BUILD_CMD
加载上述内存地址的定义,并编译Image
AMSS/boot_images/build/ms/targlaasanaza.h
使用上述地址,再定义代码中使用的地址宏
AMSS/boot_images/core/boot/secboot3/hw/msm8953/boot_mmu_table.h
引用各个内存地址,创建const struct mem_block sbl_initial_memory_map[]数组、sbl1_addtional_memory_map[]数组、sbl1_rw_dep_mem_block、sbl1_code_dep_mem_block、sbl1_ddr_mem_block等内存块
AMSS/boot_images/core/boot/secboot3/hw/msm8953/sbl1/DDR_DEBUG_8953_ASIC.map等map和sym文件中定义了固定位置放置关键符号的内存地址,也包括上述这些
AMSS/boot_images/core/boot/secboot3/hw/msm8952/sbl1/sbl1_mc.c
对上述内存块进行了创建工作
注:SET TOOLS_SCONS_ROOT=%BUILD_ROOT%\tools\build\scons对于boot_images来说就是AMSS/boot_images/tools/build/scons
build/ms/build_8953.sh:export BUILD_CMD="BUILD_ID=$BUILD_ID BUILD_VER=$BUILD_VER MSM_ID=$MSM_ID HAL_PLATFORM=$HAL_PLATFORM TARGET_FAMILY=$TARGET_FAMILY BUILD_ASIC=$BUILD_ASIC CHIPSET=$CHIPSET  $IMAGES"


2)LK阶段
target/msm8953/rules.mk
MEMBASE := 0x8F600000 # SDRAM
MEMSIZE := 0x00400000 # 1MB
BASE_ADDR        := 0x80000000
SCRATCH_ADDR     := 0xA0100000
platform/msm8953/platform.c
static mmu_section_t mmu_section_table[] = {
/*           Physical addr,         Virtual addr,            Size (in MB),     Flags */
{    MEMBASE,               MEMBASE,                 (MEMSIZE / MB),   LK_MEMORY},
{    MSM_IOMAP_BASE,        MSM_IOMAP_BASE,          MSM_IOMAP_SIZE,   IOMAP_MEMORY},
{    APPS_SS_BASE,          APPS_SS_BASE,            APPS_SS_SIZE,      IOMAP_MEMORY},
{    MSM_SHARED_IMEM_BASE,  MSM_SHARED_IMEM_BASE,    1,                COMMON_MEMORY},
{    SCRATCH_ADDR,          SCRATCH_ADDR,            512,              SCRATCH_MEMORY},
{    MIPI_FB_ADDR,          MIPI_FB_ADDR,            20,                     COMMON_MEMORY},
{    RPMB_SND_RCV_BUF,      RPMB_SND_RCV_BUF,        RPMB_SND_RCV_BUF_SZ,    IOMAP_MEMORY},
};
kmain()->arch_early_init()(定义ARM_WITH_MMU宏时)->arm_mmu_init()(ENABLE_LPAE_SUPPORT宏定义时为mmu_lpae.c否则为mmu.c->platform_init_mmu_mappings()


3)内核
就是dtsi中的各个memory节点的定义
原创粉丝点击