ddd
全部博文(22)
分类: 嵌入式
2010-06-03 18:41:59
移植U-Boot-2010.03到友善之臂mini2440(五)
5.1在文件中添加“CONFIG_S
(1)include/serial.h
在
40
行
添加
#if defined(CONFIG_S
(2)include/asm/arch-s3c24x0/s3c24x0.h。这是将原来的include/ s3c24x.h等 移到include/asm/arch-s3c24x0/目录下,文件的第81、91、95、106、144、400行:
将“#ifdef CONFIG_S3C2410”改为 #if defined(CONFIG_S3C2410) || defined (CONFIG_S3C2440)
顺便在其中加入2440 的NAND FLASH 寄存器定义(第155行附近)和CAMDIVN定义(第124行附近):
/* CLOCK & POWER MANAGEMENT (see S
/* (see S
struct s
u32 LOCKTIME;
u32 MPLLCON;
u32 UPLLCON;
u32 CLKCON;
u32 CLKSLOW;
u32 CLKDIVN;
#if defined (CONFIG_S
u32 CAMDIVN;
#endif
};
#if defined(CONFIG_S
/* NAND FLASH (see S
struct s
u32 NFCONF;
u32 NFCMD;
u32 NFADDR;
u32 NFDATA;
u32 NFSTAT;
u32 NFECC;};
#endif
#if defined (CONFIG_S
/* NAND FLASH (see S
struct s
u32 NFCONF;
u32 NFCONT;
u32 NFCMD;
u32 NFADDR;
u32 NFDATA;
u32 NFMECCD0;
u32 NFMECCD1;
u32 NFSECCD;
u32 NFSTAT;
u32 NFESTAT0;
u32 NFESTAT1;
u32 NFMECC0;
u32 NFMECC1;
u32 NFSECC;
u32 NFSBLK;
u32 NFEBLK;
};
#endif
(3)include/asm/arch/s3c24x0_cpu.h,这个文件使添加对2440的支持的头文件的工作量少了很多。文件的第23行
#if defined(CONFIG_S
#include 3c2400.h>
#elif defined(CONFIG_S
#include 3c2410.h>
(4)cpu/arm920t/s3c24x0/timer.c文件的在
184行添加
defined(CONFIG_MINI2440) || \
(5)cpu/arm920t/s3c24x0/speed.c
由于
S3C2410和
S3C2440的
MPLL、
UPLL计算公式不一样,所以
get_
PLLCLK函数也需要修改
m = ((r & 0xFF000) >> 12) + 8;
p = ((r & 0x
s = r & 0x3;
在66行添加
#if defined(CONFIG_S
if (pllreg == MPLL)
return ((CONFIG_SYS_CLK_FREQ * m * 2) /(p << s));
else if (pllreg == UPLL)
#endif
return((CONFIG_SYS_CLK_FREQ * m ) / (p << s));
由于
S3C2410和
S3C2440的设置方法也不一样,所以get_HCLK函数也需要修改
87
行
/* return HCLK frequency */
ulong get_HCLK(void)
{
S// return (readl(&clk_power->CLKDIVN) & 2) ? get_FCLK() / 2 : get_FCLK();
#if defined(CONFIG_S
if (readl(&clk_power->CLKDIVN) & 0x6)
{
if ((readl(&clk_power->CLKDIVN) & 0x6)==2) return(get_FCLK()/2);
if ((readl(&clk_power->CLKDIVN) & 0x6)==6) return((readl(&clk_power->CAMDIVN) & 0x100) ? get_FCLK()/6 : get_FCLK()/3);
if ((readl(&clk_power->CLKDIVN) & 0x6)==4) return((readl(&clk_power->CAMDIVN) & 0x200) ? get_FCLK()/8 : get_FCLK()/4);
return(get_FCLK());
}
else return(get_FCLK());
#else
return((readl(&clk_power->CLKDIVN) & 0x2) ? get_FCLK()/2 : get_FCLK());
#endif
}
(7)修改drivers/i2c/s3c24x0_i2c.c文件,其原来的位置
/cpu/arm920t/s3c24x0/i2c.c
第
60
、
79
、
131
、
140
、
166
行
:
将
“#ifdef CONFIG_S3C2410”
改为
#if defined(CONFIG_S3C2410) || defined (CONFIG_S3C2440)
(8)修改common/serial.c文件,
62
行
将
#elif defined(CONFIG_S3C2410)
改为
#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
,
151
行
改为
#if defined(CONFIG_S
|| defined(CONFIG_S