使U-BOOT能正确引导LINUX

来源:互联网 发布:nodejs json 编辑:程序博客网 时间:2024/05/16 23:42

1、为了能使得U-BOOT正确引导linux内核。必须传递合适的参数给内核。

修改include/configs/zj2410.h如下:

……

……

/************************************************************

 * RTC

 ************************************************************/

#define    CONFIG_RTC_S3C24X0     1

 

/* allow to overwrite serial and ethaddr */

#define CONFIG_ENV_OVERWRITE

 

#define CONFIG_BAUDRATE             115200

 

/************************************************************/

/* My Add */

/* enable passing of ATAGs   */

#define CONFIG_CMDLINE_TAG      1

#define CONFIG_SETUP_MEMORY_TAGS 1

#define CONFIG_INITRD_TAG   1

 

/***********************************************************

 * Command definition

 ***********************************************************/

#define CONFIG_COMMANDS \

                     (CONFIG_CMD_DFL   | \

                     CFG_CMD_CACHE      | \

                     CFG_CMD_NAND       | \

                     /*CFG_CMD_EEPROM |*/ \

                     /*CFG_CMD_I2C  |*/ \

                     /*CFG_CMD_USB |*/ \

                     CFG_CMD_REGINFO  | \

                     CFG_CMD_DATE  | \

                     CFG_CMD_ELF)

……

……

 

2、为了能稳定正确引导linux内核,得修改UBOOT2410CPU频率。

smdk2410U-BOOT原来运行频率是202.8M,在这个频率我已开始能正确引导内核,但是后来突然就不能引导了,总是死在下面这个地方:

Uncompressing Linux....................................................... done, booting the kernel.

按照网上的说法,内核中,在\arch\arm\mach_s3c2410\s3c2410.c
       fclk = s3c2410_get_pll(MPLLCON, xtal);   //
读出来的fclk结果和bootloader的频率不一致。

既然不能用202.8MVIVI200M能跑得好好的,那我把U-BOOT的频率改成200M2.6.20.3的内核和阳初光盘的2.4.18的内核都能正确稳定地引导了。

修改board/yangchu2410/smdk2410.c文件如下:

#define FCLK_SPEED 1

#if FCLK_SPEED==0  /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif FCLK_SPEED==1  /* Fout = 202.8MHz */
//#define M_MDIV 0xA1
//#define M_PDIV 0x3
//#define M_SDIV 0x1
#define M_MDIV 0x5c  /* Fout = 200MHz */
#define M_PDIV 0x4
#define M_SDIV 0x0

#endif

 

 

 

好了,编译烧写U-BOOTNAND FLASH,通过setenv 设置bootargs

引导内核时就可以将bootargs传递给内核了。

 

注意:

1、  对于U-BOOT而言,启动内核时候使用bootm命令才能传递内核参数,使用go命令是不传递内核参数的。

2、  bootm命令引导的只能是用U-BOOTmkimage工具做过的内核映像,所以要引导阳初光盘带的内核映像,必须用其工具转换一下,至于这个工具怎么用,到U-BOOTtools目录下找这个工具去吧,./mkimage  --help 或者网上找找资料看下就知道了。^_^

 

 

 

阅读(2801) | 评论(0) | 转发(0) |
0

上一篇:uboot for s3c2410 nandboot 使用saveenv保存环境变量

下一篇:移植linux2.6.19成功^_^

相关热门文章
  • linux下的鸟哥私房菜第一篇—...
  • 系统调用详解
  • linux gsoap使用
  • libvirt架构及源码分析(一)...
  • Linux之gdb
  • OpenBSD系统的文件布局[转]...
  • [原创]OpenBSD Current版本更...
  • [原创]OpenBSD Current版本更...
  • nginx支持泛域名支持的方法...
  • [FreeBSD] 因缺少/etc/termcap...
  • 如何编写一个C程序实现将字符...
  • C程序能不能在main函数之前调...
  • 看一个程序调用了哪些动态库用...
  • 回复不了你啊,咋,威望值不够...
  • mysql的medium.cnf在哪里?...
给主人留下些什么吧!~~