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节点的定义
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节点的定义