[Linux]u-boot_2014移植(三)设置时钟 修改内存

[Linux]u-boot_2014移植(三)设置时钟、修改内存

个人博客https://aeneag.xyz/

艾恩凝

2021/6/4

一、设置时钟

start.S

该文件在 arch/arm/cpu/arm920t

注释掉

1	/* FCLK:HCLK:PCLK = 1:2:4 */
2	/* default FCLK is 120 MHz ! */
3	ldr	r0, =CLKDIVN
4	mov	r1, #3
5	str	r1, [r0]

替换为

 1	/* 2. 设置时钟 */
 2	/* CLKDIVN(0x4C000014) = 0X5, tFCLK:tHCLK:tPCLK = 1:4:8  */
 3	ldr r0, =0x4C000014
 4	ldr r1, =0x5
 5	str r1, [r0]
 6
 7	/* 设置CPU工作于异步模式 */
 8	mrc p15,0,r0,c1,c0,0
 9	orr r0,r0,#0xc0000000   //R1_nF:OR:R1_iA
10	mcr p15,0,r0,c1,c0,0
11
12    /* 设置MPLLCON(0x4C000004) = (92<<12)|(1<<4)|(1<<0) 
13	 *  m = MDIV+8 = 92+8=100
14	 *  p = PDIV+2 = 1+2 = 3
15	 *  s = SDIV = 1
16	 *  FCLK = 2*m*Fin/(p*2^s) = 2*100*12/(3*2^1)=400M
17	 */
18	ldr r0, =0x4C000004
19	ldr r1, =(92<<12)|(1<<4)|(1<<0)
20	str r1, [r0]
21  
22	/* 启动ICACHE */
23	mrc p15, 0, r0, c1, c0, 0	@ read control reg
24	orr r0, r0, #(1<<12)
25	mcr	p15, 0, r0, c1, c0, 0   @ write it back
26

smdk2440.c

在这个文件夹下 C函数 board_init_f 中,注释掉下面几行,关于时钟的

1
2	/* to reduce PLL lock time, adjust the LOCKTIME register */
3	//writel(0xFFFFFF, &clk_power->locktime);
4
5	/* configure MPLL */
6	//writel((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV,
7	 //      &clk_power->mpllcon);

smdk2440.h

这个文件中,将

1#define CONFIG_S3C2410

改为

1#define CONFIG_S3C2440

注释掉

1#define CONFIG_CMD_NAND
2#define CONFIG_YAFFS2

二、设置内存

汇编函数 lowlevel_init.S 代码段最后,将

 1    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
 2    .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
 3    .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
 4    .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
 5    .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
 6    .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
 7    .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
 8    .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
 9    .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
10    .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
11    .word 0x32
12    .word 0x30
13    .word 0x30

替换为

 1 	.long 0x22111110		//BWSCON
 2	.long 0x00000700		//BANKCON0
 3	.long 0x00000700		//BANKCON1
 4	.long 0x00000700		//BANKCON2
 5	.long 0x00000700		//BANKCON3
 6	.long 0x00000740		//BANKCON4
 7	.long 0x00000700		//BANKCON5
 8	.long 0x00018005		//BANKCON6
 9	.long 0x00018005		//BANKCON7
10	.long 0x008e07a3		//REFRESH,HCLK=12MHz:0x008e07a3,HCLK=100MHz:0x008e04f4
11	.long 0x000000b2		//BANKSIZE
12	.long 0x00000030		//MRSRB6
13	.long 0x00000030		//MRSRB7

end

时钟这样就修改成功了

u-boot移植系列目录

上一篇[Linux]u-boot_2014移植(二)创建单板

下一篇[Linux]u-boot_2014移植(四)支持nand启动


    


公众号'艾恩凝'
个人公众号
个人微信
个人微信
    吾心信其可行,
          则移山填海之难,
                  终有成功之日!
                                  ——孙文
    评论
    0 评论
avatar

取消