按照”Mini2440 Linux移植开发实战指南.pdf”(2010-4-14版)来操作
一.按部就班
1.安装arm-linux-gcc 4.3.2
2.修改顶层makefile指定交叉编译变量:
原
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
3.将 linux-2.6.32.2/arch/arm/mach-s3c2440/目录下的 mach-smdk2440.c 复制一份。命名为
mach-mini2440.c ,找到 MACHINE_START(S3C2440, "SMDK2440") ,修改为
MACHINE_START(MINI2440, "Cody’s mini2440 DevBoard")。
4. 修改时钟源频率为12MHz(12000000)
5. 替换所有mach-mini2440.c中的smdk2440为mini2440,在 mini2440_machine_init(void)函数中,把
smdk_machine_init()函数调用注释掉.
6. make mini2440_defconfig然后make zImage,成功!
7. 把生成的zImage文件烧到板上运行,出现如下错误:
Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00200000 ... done
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySA
C0"
MACH_TYPE = 1999
NOW, Booting Linux......
Uncompressing Linux.............................................................
.................................................................... done, booti
ng the kernel.
到这里就不动了,把开关拨到从Nand启动,还是出现上面几行字就不动了.
二.先不管它,按照实战手册后面的说明继续做下去.在mach-mini2440.c中加入如下代码:
Code /* add flash partion BY Cody */ static struct mtd_partition mini2440_default_nand_part[] = { [0] = { .name = "supervivi", /*这里是 bootloader 所在的分区,可以放置 u-boot, supervivi 等内容,对应/dev/mtdblock0*/ .size = 0x00040000, .offset = 0, }, [1] = { .name = "param", /*这里是supervivi的参数区,其实也属于bootloader的一部分,如果u-boot 比较大,可以把此区域覆盖掉,不会影响系统启动,对应/dev/mtdblock1 */ .offset = 0x00040000, .size = 0x00020000, }, [2] = { .name = "Kernel",// ;内核所在的分区,大小为 5M,足够放下大部分自己定制的巨型内核了,比如内核使用了更大的Linux Logo图片等,对应/dev/mtdblock2 .offset = 0x00060000, .size = 0x00500000, }, [3] = { .name = "root", //;文件系统分区,友善之臂主要用来存放yaffs2 文件系统内容,对应/dev/mtdblock3 .offset = 0x00560000, .size = 1024 * 1024 * 1024, // }, [4] = { .name = "nand", //;此区域代表了整片的nand flash,主要是预留使用,比如以后可以通过应用程序访问读取/dev/mtdblock4就能实现备份整片nand flash了。 .offset = 0x00000000, .size = 1024 * 1024 * 1024, // } }; //;这里是开发板的nand flash 设置表,因为板子上只有一片,因此也就只有一个表 static struct s3c2410_nand_set mini2440_nand_sets[] = { [0] = { .name = "NAND", .nr_chips = 1, .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part), .partitions = mini2440_default_nand_part, }, }; //;这里是nand flash本身的一些特性,一般需要对照datasheet填写,大部分情况下按照以下参数填写即可 static struct s3c2410_platform_nand mini2440_nand_info = { .tacls = 20, .twrph0 = 60, .twrph1 = 20, .nr_sets = ARRAY_SIZE(mini2440_nand_sets), .sets = mini2440_nand_sets, .ignore_unset_ecc = 1, }; /* End flash Partion*/
再修改如下信息,加入红色那一行
static struct platform_device *mini2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_nand, //;把nand flash设备添加到开发板的设备列表结构
};
重新make zImage,这次出现很多错误,看不懂
错误信息arch/arm/mach-s3c2440/mach-mini2440.c:178: error: array type has incomplete element type arch/arm/mach-s3c2440/mach-mini2440.c:179: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:179: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:180: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:180: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:181: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:181: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:182: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:182: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:184: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:184: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:185: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:185: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:186: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:186: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:187: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:187: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:189: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:189: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:190: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:190: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:191: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:191: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:192: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:192: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:194: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:194: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:195: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:195: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:196: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:196: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:197: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:197: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:199: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:199: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:200: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:200: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:201: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:201: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:202: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:202: error: (near initialization for 'mini2440_default_nand_part') arch/arm/mach-s3c2440/mach-mini2440.c:206: error: array type has incomplete element type arch/arm/mach-s3c2440/mach-mini2440.c:207: error: array index in non-array initializer arch/arm/mach-s3c2440/mach-mini2440.c:207: error: (near initialization for 'mini2440_nand_sets') arch/arm/mach-s3c2440/mach-mini2440.c:208: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:208: error: (near initialization for 'mini2440_nand_sets') arch/arm/mach-s3c2440/mach-mini2440.c:209: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:209: error: (near initialization for 'mini2440_nand_sets') arch/arm/mach-s3c2440/mach-mini2440.c:210: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:210: error: (near initialization for 'mini2440_nand_sets') arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: type defaults to 'int' in declaration of 'type name' arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: type defaults to 'int' in declaration of 'type name' arch/arm/mach-s3c2440/mach-mini2440.c:210: error: negative width in bit-field '<anonymous>' arch/arm/mach-s3c2440/mach-mini2440.c:211: error: field name not in record or union initializer arch/arm/mach-s3c2440/mach-mini2440.c:211: error: (near initialization for 'mini2440_nand_sets') arch/arm/mach-s3c2440/mach-mini2440.c:215: error: variable 'mini2440_nand_info' has initializer but incomplete type arch/arm/mach-s3c2440/mach-mini2440.c:216: error: unknown field 'tacls' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:216: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:216: warning: (near initialization for 'mini2440_nand_info') arch/arm/mach-s3c2440/mach-mini2440.c:217: error: unknown field 'twrph0' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:217: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:217: warning: (near initialization for 'mini2440_nand_info') arch/arm/mach-s3c2440/mach-mini2440.c:218: error: unknown field 'twrph1' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:218: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:218: warning: (near initialization for 'mini2440_nand_info') arch/arm/mach-s3c2440/mach-mini2440.c:219: error: unknown field 'nr_sets' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: type defaults to 'int' in declaration of 'type name' arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: type defaults to 'int' in declaration of 'type name' arch/arm/mach-s3c2440/mach-mini2440.c:219: error: negative width in bit-field '<anonymous>' arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: (near initialization for 'mini2440_nand_info') arch/arm/mach-s3c2440/mach-mini2440.c:220: error: unknown field 'sets' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:220: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:220: warning: (near initialization for 'mini2440_nand_info') arch/arm/mach-s3c2440/mach-mini2440.c:221: error: unknown field 'ignore_unset_ecc' specified in initializer arch/arm/mach-s3c2440/mach-mini2440.c:221: warning: excess elements in struct initializer arch/arm/mach-s3c2440/mach-mini2440.c:221: warning: (near initialization for 'mini2440_nand_info') make[1]: *** [arch/arm/mach-s3c2440/mach-mini2440.o] 错误 1 make: *** [arch/arm/mach-s3c2440] 错误 2
baidu一下,发现有人(原文)遇到同样的错误,OK,按照原文的做,在mach-mini2440.c加入头文件,在 static void __init mini2440_map_io(void)加入红色内容
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>
#include <plat/nand.h>
static void __init mini2440_map_io(void)
{
s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));
s3c24xx_init_clocks(120000000);
s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs));
s3c_device_nand.dev.platform_data = &mini2440_nand_info;
}
再次make试试看....
还是出现错误,提示找不到mini2440_nand_info'
错误信息 arch/arm/mach-s3c2440/mach-mini2440.c: In function 'mini2440_map_io': arch/arm/mach-s3c2440/mach-mini2440.c:172: error: 'mini2440_nand_info' undeclared (first use in this function) arch/arm/mach-s3c2440/mach-mini2440.c:172: error: (Each undeclared identifier is reported only once arch/arm/mach-s3c2440/mach-mini2440.c:172: error: for each function it appears in.) make[1]: *** [arch/arm/mach-s3c2440/mach-mini2440.o] 错误 1 make: *** [arch/arm/mach-s3c2440] 错误 2
可能是分区信息在文件的后面导致找不到的原因,把第二步加入的分区信息移到最前面试试看…经过十多分钟,make成功了,把zImage下载到板上试试看
郁闷,跟第一步信息一下,到booting the kernel.就不到了. 下班了,先吃饭去,下午再回来试试.
-------------------------------------------------------------------------------------------
下午,实在不知道问题在哪里,修改一下mach-mini2440.c,源代码如下(网上copy的):
mach-mini2440.c #include <linux/kernel.h> #include <linux/types.h> #include <linux/interrupt.h> #include <linux/list.h> #include <linux/timer.h> #include <linux/init.h> #include <linux/serial_core.h> #include <linux/platform_device.h> #include <linux/io.h> #include <linux/gpio.h> #include <linux/sysdev.h> #include <linux/mtd/mtd.h> #include <linux/mtd/nand.h> #include <linux/mtd/nand_ecc.h> #include <linux/mtd/partitions.h> #include <linux/dm9000.h> #include <linux/mmc/host.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/irq.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <mach/hardware.h> #include <mach/regs-gpio.h> #include <mach/regs-lcd.h> #include <mach/leds-gpio.h> #include <mach/idle.h> #include <mach/fb.h> #include <plat/regs-serial.h> #include <plat/iic.h> #include <plat/s3c2410.h> #include <plat/s3c2440.h> #include <plat/clock.h> #include <plat/devs.h> #include <plat/cpu.h> #include <plat/nand.h> #include <plat/pm.h> #include <plat/mci.h> #include <sound/s3c24xx_uda134x.h> static struct map_desc mini2440_iodesc[] __initdata = { }; static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = { [0] = { .hwport = 0, .flags = 0, .ucon = 0x3c5, .ulcon = 0x03, .ufcon = 0x51, }, [1] = { .hwport = 1, .flags = 0, .ucon = 0x3c5, .ulcon = 0x03, .ufcon = 0x51, }, [2] = { .hwport = 2, .flags = 0, .ucon = 0x3c5, .ulcon = 0x03, .ufcon = 0x51, } }; #define LCD_WIDTH 240 #define LCD_HEIGHT 320 #define LCD_PIXCLOCK 170000 #define LCD_RIGHT_MARGIN 25 #define LCD_LEFT_MARGIN 0 #define LCD_HSYNC_LEN 4 #define LCD_UPPER_MARGIN 1 #define LCD_LOWER_MARGIN 4 #define LCD_VSYNC_LEN 1 static struct s3c2410fb_display mini2440_lcd_cfg __initdata = { .lcdcon5 = S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_HWSWP, .type = S3C2410_LCDCON1_TFT, .width = LCD_WIDTH, .height = LCD_HEIGHT, .pixclock = LCD_PIXCLOCK, .xres = LCD_WIDTH, .yres = LCD_HEIGHT, .bpp = 16, .left_margin = LCD_LEFT_MARGIN + 1, .right_margin = LCD_RIGHT_MARGIN + 1, .hsync_len = LCD_HSYNC_LEN + 1, .upper_margin = LCD_UPPER_MARGIN + 1, .lower_margin = LCD_LOWER_MARGIN + 1, .vsync_len = LCD_VSYNC_LEN + 1, }; static struct s3c2410fb_mach_info mini2440_fb_info __initdata = { .displays = &mini2440_lcd_cfg, .num_displays = 1, .default_display = 0, .gpccon = 0xaa955699, .gpccon_mask = 0xffc003cc, .gpcup = 0x0000ffff, .gpcup_mask = 0xffffffff, .gpdcon = 0xaa95aaa1, .gpdcon_mask = 0xffc0fff0, .gpdup = 0x0000faff, .gpdup_mask = 0xffffffff, .lpcsel = 0xf82, }; static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { .l3_clk = S3C2410_GPB(4), // IO表示方法,定义在mach/regs-gpio.h->mach/gpio-nrs.h中 .l3_data = S3C2410_GPB(3), .l3_mode = S3C2410_GPB(2), .model = UDA134X_UDA1341, }; static struct platform_device s3c24xx_uda134x = { .name = "s3c24xx_uda134x", .dev = { .platform_data = &s3c24xx_uda134x_data, } }; static struct mtd_partition friendly_arm_default_nand_part[] = { [0] = { .name = "supervivi", .size = 0x00040000, .offset = 0, }, [1] = { .name = "param", .offset = 0x00040000, .size = 0x00020000, }, [2] = { .name = "Kernel", .offset = 0x00060000, .size = 0x00500000, }, [3] = { .name = "root", .offset = 0x00560000, .size = 1024 * 1024 * 1024, //为以后拓展用 }, [4] = { .name = "nand", .offset = 0x00000000, .size = 1024 * 1024 * 1024, // } }; static struct s3c2410_nand_set friendly_arm_nand_sets[] = { [0] = { .name = "NAND", .nr_chips = 1, .nr_partitions = ARRAY_SIZE(friendly_arm_default_nand_part), .partitions = friendly_arm_default_nand_part, }, }; static struct s3c2410_platform_nand friendly_arm_nand_info = { .tacls = 20, // 建立时间 .twrph0 = 60, // 等待时间 .twrph1 = 20, // 保持时间 .nr_sets = ARRAY_SIZE(friendly_arm_nand_sets), .sets = friendly_arm_nand_sets, .ignore_unset_ecc = 1, }; #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) static struct resource mini2440_dm9k_resource[] = { [0] = { .start = MACH_MINI2440_DM9K_BASE, .end = MACH_MINI2440_DM9K_BASE + 3, .flags = IORESOURCE_MEM }, [1] = { .start = MACH_MINI2440_DM9K_BASE + 4, .end = MACH_MINI2440_DM9K_BASE + 7, .flags = IORESOURCE_MEM }, [2] = { .start = IRQ_EINT7, .end = IRQ_EINT7, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, } }; static struct dm9000_plat_data mini2440_dm9k_pdata = { .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), }; static struct platform_device mini2440_device_eth = { .name = "dm9000", .id = -1, .num_resources = ARRAY_SIZE(mini2440_dm9k_resource), .resource = mini2440_dm9k_resource, .dev = { .platform_data = &mini2440_dm9k_pdata, }, }; static struct s3c24xx_mci_pdata mini2440_mmc_cfg = { .gpio_detect = S3C2410_GPG(8), .gpio_wprotect = S3C2410_GPH(8), .set_power = NULL, .ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34, }; static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_rtc, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &mini2440_device_eth, &s3c24xx_uda134x, &s3c_device_nand, &s3c_device_sdi, &s3c_device_usbgadget, }; static void __init mini2440_map_io(void) { s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc)); s3c24xx_init_clocks(12000000); // 外部时钟频率为12000000 s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs)); } static void __init mini2440_machine_init(void) { s3c24xx_fb_set_platdata(&mini2440_fb_info); // lcd platform device add s3c_i2c0_set_platdata(NULL); // i2c s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND); // lcd 背光 s3c_device_nand.dev.platform_data = &friendly_arm_nand_info; //nand s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg; //SD card platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices)); s3c_pm_init(); } MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board") .phys_io = S3C2410_PA_UART, .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, .boot_params = S3C2410_SDRAM_PA + 0x100, .init_irq = s3c24xx_init_irq, .map_io = mini2440_map_io, .init_machine = mini2440_machine_init, .timer = &s3c24xx_timer, MACHINE_END
可以启动了,神了,但是还是有错误:
错误信息 Creating 5 MTD partitions on "NAND 128MiB 3,3V 8-bit": 0x000000000000-0x000000040000 : "supervivi" 0x000000040000-0x000000060000 : "param" uncorrectable error : 0x000000060000-0x000000560000 : "Kernel" uncorrectable error : 0x000000560000-0x000040560000 : "root" mtd: partition "root" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x7aa0000 ftl_cs: FTL header not found. 0x000000000000-0x000040000000 : "nand" mtd: partition "nand" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x8000000
可能是分区不对,先不管,移植文件系统再说.贴上完整的启动信息
启动信息 Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00200000 ... done zImage magic = 0x016f2818 Setup linux parameters at 0x30000100 linux command line is: "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0" MACH_TYPE = 1999 NOW, Booting Linux...... Uncompressing Linux................................................................................................................................. done, booting the kernel. Linux version 2.6.32.2 (root@FC9) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #4 Thu Jul 8 13:43:27 CST 2010 CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 CPU: VIVT data cache, VIVT instruction cache Machine: FriendlyARM Mini2440 development board ATAG_INITRD is deprecated; please update your bootloader. Memory policy: ECC disabled, Data cache writeback CPU S3C2440A (id 0x32440001) S3C24XX Clocks, (c) 2004 Simtec Electronics S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 PID hash table entries: 256 (order: -2, 1024 bytes) Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 64MB = 64MB total Memory: 60620KB available (3588K code, 418K data, 132K init, 0K highmem) SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Hierarchical RCU implementation. NR_IRQS:85 irq: clearing subpending status 00000003 irq: clearing subpending status 00000002 Console: colour dummy device 80x30 console [ttySAC0] enabled Calibrating delay loop... 201.93 BogoMIPS (lpj=504832) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 S3C Power Management, Copyright 2004 Simtec Electronics S3C2440: Initialising architecture S3C2440: IRQ Support S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics DMA channel 0 at c4808000, irq 33 DMA channel 1 at c4808040, irq 34 DMA channel 2 at c4808080, irq 35 DMA channel 3 at c48080c0, irq 36 S3C244X: Clock Support, DVS off bio: create slab <bio-0> at 0 usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb s3c-i2c s3c2440-i2c: slave address 0x10 s3c-i2c s3c2440-i2c: bus frequency set to 98 KHz s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered NET: Registered protocol family 1 RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. ROMFS MTD (C) 2007 Red Hat, Inc. msgmni has been set to 118 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) io scheduler deadline registered io scheduler cfq registered Console: switching to colour frame buffer device 60x53 fb0: s3c2410fb frame buffer device s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440 s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440 s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440 brd: module loaded S3C24XX NAND Driver, (c) 2004 Simtec Electronics s3c24xx-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns s3c24xx-nand s3c2440-nand: NAND soft ECC NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit) Scanning device for bad blocks Creating 5 MTD partitions on "NAND 128MiB 3,3V 8-bit": 0x000000000000-0x000000040000 : "supervivi" 0x000000040000-0x000000060000 : "param" uncorrectable error : 0x000000060000-0x000000560000 : "Kernel" uncorrectable error : 0x000000560000-0x000040560000 : "root" mtd: partition "root" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x7aa0000 ftl_cs: FTL header not found. 0x000000000000-0x000040000000 : "nand" mtd: partition "nand" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x8000000 dm9000 Ethernet Driver, V1.31 dm9000 dm9000: eth%d: Invalid ethernet MAC address. Please set using ifconfig eth0: dm9000e at c486e300,c4872304 IRQ 51 MAC: 00:00:00:00:00:00 (chip) ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver s3c2410-ohci s3c2410-ohci: S3C24XX OHCI s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1 s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected usbcore: registered new interface driver libusual s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes mice: PS/2 mouse device common for all mice S3C24XX RTC, (c) 2004,2006 Simtec Electronics s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0 i2c /dev entries driver S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled cpuidle: using governor ladder sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman s3c-sdi s3c2440-sdi: powered down. s3c-sdi s3c2440-sdi: mmc0 - using pio, sw SDIO IRQ usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.21. No device for DAI UDA134X No device for DAI s3c24xx-i2s S3C24XX_UDA134X SoC Audio driver UDA134X SoC Audio Codec asoc: UDA134X <-> s3c24xx-i2s mapping ok ALSA device list: #0: S3C24XX_UDA134X (UDA134X) TCP cubic registered NET: Registered protocol family 17 s3c2410-rtc s3c2410-rtc: setting system clock to 2009-06-21 08:21:07 UTC (1245572467) List of all partitions: 1f00 256 mtdblock0 (driver?) 1f01 128 mtdblock1 (driver?) 1f02 5120 mtdblock2 (driver?) 1f03 125568 mtdblock3 (driver?) 1f04 131072 mtdblock4 (driver?) No filesystem could mount root, tried: ext3 cramfs vfat msdos romfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3) [<c002e9f8>] (u