U-boot移植
(以下步骤适用于s3c2440开发板)
1、修改Makefile文件:
a.修改交叉编译宏(CROSS_COMPILE?=)修改为(CROSS_COMPILE?=arm-linux-);
b.将._LIBS:后的两个变量交换位置(line289)
c.添加tocore2440_config Make文件(line2997)
tocore2440_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t tocore2440 tocore s3c24x0
包含六个参数:$1. tocore2440 表示在include/configs/目录下必须包含tocore2440.h文件;$2. arm表示在主目录下包含lib_arm目录,在include/目录下包含asm_arm目录;$3.arm920t表示CPU型号,在cpu目录下包含arm920t目录;$4.tocore2440芯片型号;$5.厂商目录(if($5!=NULL),则在board目录下有$5/$4目录,else,则在board目录下有$4目录);$6. s3c24x0表示在include/asm_arm/包含arch_ s3c24x0目录;
d.以上部分表示在移植U-boot前首先要添加开发板自己的配置头文件,并在board目录下建立自己的开发板目录,修改s3c24x0(cpu/arm920t/s3c24x0,include/asm_arm/archs3c24x0)文件,改为支持2440开发板,修改过程如下:
1) 修改inperrupts.c文件,添加宏定义:#defined(CONFIG_S3C2440)( line36)。
2) 修改speed.c文件:a.添加宏定义:#defined (CONFIG_S3C2440) ( line33);b.在get_PLLCLK()函数中添加2440支持,具体修改方式如下:在return返回值前添加#if defined(CONFIG_S3C2440)
if (pllreg == MPLL)
return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s)); //得到2440开发板的频率
else if (pllreg == UPLL)
#endif
c.将get_HCLK()函数修改为2440支持,将原函数返回改为:
//该函数为读取当前系统时钟
#if defined(CONFIG_S3C2440)
if (clk_power->CLKDIVN & 0x6)
{
if ((clk_power->CLKDIVN & 0x6)==2) return(get_FCLK()/2);
if ((clk_power->CLKDIVN & 0x6)==6) return((clk_power->CAMDIVN & 0x100) ? get_FCLK()/6 : get_FCLK()/3);
if ((clk_power->CLKDIVN & 0x6)==4) return((clk_power->CAMDIVN & 0x200) ? get_FCLK()/8 : get_FCLK()/4);
return(get_FCLK());
}
else return(get_FCLK());
#else
return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
#endif
d.修改time.c文件,添加宏定义#defined (CONFIG_S3C2440)(line33)
2、添加配置文件
a.将smdk2410.h复制为tocore2440.h,其文件修改如下:
1)添加宏#undef CONFIG_SKIP_LOWLEVEL_INIT (line40)
2)注释2410宏定义:
//#define CONFIG_S 3C2410 1
//#define CONFIG_SBC2410X 1
3)添加2440宏定义:
#define CONFIG_S3C2440 1
#define CONFIG_TOCORE2440 1
#define CONFIG_TOCORE2440_LED 1 //添加点灯宏定义
#define CONFIG_S3C2440_NAND_BOOT 1 //Nandflash启动
4)注释CS8900网卡宏定义(在line72添加#if 0,在line76 添加#endif),添加DM9000网卡宏定义:
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_USE_16BIT 1
#define CONFIG_DM9000_BASE 0x20000300
#define DM9000_IO 0x20000300
#define DM9000_DATA 0x20000304
#define CONFIG_DM9000_NO_SROM 1
#undef CONFIG_DM9000_DEBUG
#define CONFIG_NET_MULTI
5)在命令行宏定义中添加如下宏定义:
#define CONFIG_CMD_ASKENV
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_PING
#define CONFIG_CMD_NAND
#define CONFIG_CMD_SAVEENV
#define CONFIG_BOOTDELAY 3 //设置系统启动等待时间
#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/nfs "