源代码https://github.com/jimingkang/news5pv210/tree/master/u-boot-2013.10
git 的提交编号:1103ed50..e69278f7 master -> master
主要涉及三个文件:goni.c s5p_goni.h lowlevel_init.S
1)DDR修改到512M:
A) board/samsung/goni/goni.c
(注销第三个bank板,我们x210只接了两个256M,一个在30000000 ,一个在400000000)
int dram_init(void)
{
gd->ram_size = PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE; //jimmy change
//PHYS_SDRAM_3_SIZE;//jimmy comments
return 0;
}
void dram_init_banksize(void)
{
gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
//jimmy comment
//gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
//gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
}
B) include/configs/s5p_goni.h
把数量改为2,PHYS_SDRAM_1_SIZE 改为 (256 << 20) 原来为80<<20,注销bank3
#define CONFIG_NR_DRAM_BANKS 2 //(原来为3)
#define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE /* OneDRAM Bank #0 */
#define PHYS_SDRAM_1_SIZE (256 << 20) /* 256MB in Bank #0 */
#define PHYS_SDRAM_2 0x40000000 /* mDDR DMC1 Bank #1 */
#define PHYS_SDRAM_2_SIZE (256 << 20) /* 256 MB in Bank #1 */
//#define PHYS_SDRAM_3 0x50000000 /* mDDR DMC2 Bank #2 */
//#define PHYS_SDRAM_3_SIZE (128 << 20) /* 128 MB in Bank #2 */
2)时钟频率修改为1000M(原来以为irom会自动初始化DDR内存大小到1000M,实际irom只初始化到400M):
注意:这里只是修改到显示为正确大小,DDR的初始化之前就好了 ,DDR相关的宏在s5p_goni.h中
board/samsung/goni/lowlevel_init.S
在uart初始化前加上: bl system_clock_init,
system_clock_init:(内容从smdkv210拷贝)
ldr r0, =ELFIN_CLOCK_POWER_BASE @0xe0100000
/* Set Mux to FIN */
ldr r1, =0x0
str r1, [r0, #CLK_SRC0_OFFSET]
ldr r1, =APLL_LOCKTIME_VAL
str r1, [r0, #APLL_LOCK_OFFSET]
/* Disable PLL */
retryloop:
ldr r1, =0x0
str r1, [r0, #APLL_CON0_OFFSET]
ldr r1, =0x0
str r1, [r0, #MPLL_CON_OFFSET]
ldr r1, =0x0
str r1, [r0, #MPLL_CON_OFFSET]
ldr r1, [r0, #CLK_DIV0_OFFSET]
ldr r2, =CLK_DIV0_MASK
bic r1, r1, r2
ldr r2, =CLK_DIV0_VAL
orr r1, r1, r2
str r1, [r0, #CLK_DIV0_OFFSET]
ldr r1, =APLL_VAL
str r1, [r0, #APLL_CON0_OFFSET]
ldr r1, =MPLL_VAL
str r1, [r0, #MPLL_CON_OFFSET]
ldr r1, =VPLL_VAL
str r1, [r0, #VPLL_CON_OFFSET]
#if defined(CONFIG_EVT1)
ldr r1, =AFC_ON
str r1, [r0, #APLL_CON1_OFFSET]
#endif
mov r1, #0x10000
1: subs r1, r1, #1
bne 1b
/* MPLL software workaround */
ldr r1, [r0, #MPLL_CON_OFFSET]
orr r1, r1, #(1<<28)
str r1, [r0, #MPLL_CON_OFFSET]
mov r1, #0x100
1: subs r1, r1, #1
bne 1b
ldr r1, [r0, #MPLL_CON_OFFSET]
and r1, r1, #(1<<29)
cmp r1, #(1<<29)
bne retryloop
/* H/W lock detect disable */
ldr r1, [r0, #MPLL_CON_OFFSET]
bic r1, r1, #(1<<28)
str r1, [r0, #MPLL_CON_OFFSET]
ldr r1, [r0, #CLK_SRC0_OFFSET]
ldr r2, =0x10001111
orr r1, r1, r2
str r1, [r0, #CLK_SRC0_OFFSET]
/* CLK_DIV6 */
ldr r1, [r0, #CLK_DIV6_OFFSET]
bic r1, r1, #(0x7<<12) @; ONENAND_RATIO: 0
str r1, [r0, #CLK_DIV6_OFFSET]
mov pc, lr
#endif
3)烧写,输出:
>sd_fusing.sh /dev/sdb
--------------------------------------------
U-Boot 2013.10 (May 26 2020 - 10:50:30) for ASTON210
CPU: S5PC110@1000MHz
Board: Goni
I2C: ready
DRAM: 512 MiB
Board PMIC init
MMC: 3776MB
In: serial
Out: serial
Err: serial
Net: Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot: 0