使U-BOOT能正确引导LINUX

    技术2022-05-11  6

    http://blog.chinaunix.net/u1/56388/showart_438727.html 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内核,得修改UBOOT的2410CPU频率。 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.8M VIVI 200M 能跑得好好的,那我把 U-BOOT 的频率改成 200M 2.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-BOOT到NAND FLASH,通过setenv 设置bootargs, 引导内核时就可以将bootargs传递给内核了。   注意: 1、  对于U-BOOT而言,启动内核时候使用bootm命令才能传递内核参数,使用go命令是不传递内核参数的。 2、 命令引导的只能是用U-BOOT的mkimage工具做过的内核映像,所以要引导阳初光盘带的内核映像,必须用其工具转换一下,至于这个工具怎么用,到U-BOOT的tools目录下找这个工具去吧,./mkimage --help 或者网上找找资料看下就知道了。^_^。 bootm

    最新回复(0)