spl需要初始化定时器、atf控制器、pmic、ddr。spl_dram_init会将ddr的timming信息写入ddr控制器。最后调用spl的board_init_r函数,加载BL31验证atf固件,从emmc/sd中加载BL32(uboot),最后移交控制权给uboot。 board_init_r common/spl/spl.c voidboard_init_r(gd_t*dummy1,ulongdummy2) { u32spl_boot_list...
env_init(); #endif get_clocks(); (e) preloader_console_init(); (f) #ifdef CONFIG_SPL_I2C_SUPPORT (g) i2c_init_all(); #endif dram_init(); (h) } 该函数主要做一些board基本功能相关的初始化。如清空gd内存,定时器的初始化,获取系统时钟,总线时钟频率,console的初始化以及ddr...
bl board_init_f_init_reserve mov r0, #0 bl board_init_f #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_FRAMEWORK) #ifdef CONFIG_SPL_BUILD /*use a DRAM stack for the rest of SPL, if requested */ bl spl_relocate_stack_gd cmp r0, #0 movne sp, r0 movne r9, r0 #endif ...
bl board_init_f_init_reserve mov r0, #0 bl board_init_f #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_FRAMEWORK) #ifdef CONFIG_SPL_BUILD /*use a DRAM stack for the rest of SPL, if requested */ bl spl_relocate_stack_gd cmp r0, #0 movne sp, r0 movne r9, r0 #endif ...
Re: F133的SPL代码DRAM初始化参数是怎样的? Similar information request. Working on a SPL for F133. BUT as a Windows Eclipse xpack GNU risc-v project. Have a lot working but trying to do simple DRAM init. Have researched D1 mainline SPL, xboot, and xfel github source code. Almost got...
dram_init(); (h) } 该函数主要做一些board基本功能相关的初始化。如清空gd内存,定时器的初始化,获取系统时钟,总线时钟频率,console的初始化以及ddr的初始化等。下面对各步骤做一简要介绍: (a)清空gd的内存。其中gd的定义位于arch/arm/include/asm/global_data.h中,它会从x18...
The feature is enabled by setting the option CONFIG_SPL_ZYNQMP_DRAM_ECC_INIT and providing the following data: SPL_ZYNQMP_DRAM_BANK1_BASE: start of memory to initialize SPL_ZYNQMP_DRAM_BANK1_LEN : len of memory to initialize (hex) SPL_ZYNQMP_DRAM_BANK2_BASE: start of memory to ...
分析:Trying to boot mmc0应该是SPL加载U-boot主程序到DRAM中,SPL中成功初始化了MMC,并且SPL运行在芯片内部的RAM中,应该和MMC问题关系不大,重定向到DRAM中发生错误,应该就是芯片DRAM方向的问题了。尝试解决办法:1.检查供电,VCC-DRAM供电2.48V,纹波40mv。2.DDR那 Svref管脚发现PCB中两个电阻和两个电容中少连...
int dram_init(void) { gd->ram_size = get_ram_size((long *)PHYS_SDRAM_0, PHYS_SDRAM_0_SIZE); struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION);if (spl == INVALID_SPL_HEADER) gd->ram_size = get_ram_size((long *)PHYS_SDRAM_0,...
*/ memset((void *)gd, 0, sizeof(gd_t)); (a) board_early_init_f(); (b) timer_init(); (c) #ifdef CONFIG_ARCH_LS2080A (d) env_init(); #endif get_clocks(); (e) preloader_console_init(); (f) #ifdef CONFIG_SPL_I2C_SUPPORT (g) i2c_init_all(); #endif dram_init(); ...