分类: 嵌入式
2009-10-30 16:20:59
1、U-BOOT给linux内核传递合适参数的定义
修改include/configs/s3c2410.h如下:
……
……
#define CONFIG_RTC_S 3C24X0 1
#define CONFIG_ENV_OVERWRITE
#define CONFIG_BAUDRATE 115200
#define CONFIG_CMDLINE_TAG 1
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG 1
2、修改UBOOT的2410CPU频率
smdk2410的U-BOOT原来运行频率是202.8M,而FS2410的BIOS里面是200M,所以不修改频率可能会出点问题。按照网上的说法,内核中,在\arch\arm\mach_s3c2410\s3c2410.c 中,fclk = s3c2410_get_pll(MPLLCON, xtal); //读出来的fclk结果和bootloader的频率不一致。
修改board/s3c2410/s3c2410.c文件如下:
#define FCLK_SPEED 1
#if FCLK_SPEED==0
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif FCLK_SPEED==1
//#define M_MDIV 0xA1
//#define M_PDIV 0x3
//#define M_SDIV 0x1
#define M_MDIV 0x5c
#define M_PDIV 0x4
#define M_SDIV 0x0
#endif
3、修改include/configs/s3c2410.h中的CFG_LOAD_ADDR的地址为0x30007FC0
这是内核的加载地址,board/smdk2410/config.mk文件注释中提到Linux内核希望自己被加载到0x30008000的内存地址,而由于uImage会在kernel镜像之前加上大小为0x40的头文件消息,所以需要减去0x40。