全部博文(29)
分类: LINUX
2009-03-20 22:02:23
今天下午终于成功了,uboot1.2.0+linux2.6.18.6+root.img移植成功,真开心。再一次让我体验到,碰到困难就要克服它!!在这个过程中学到了许多知识,这也是一个成长的过程咯。
不过还是有很些遗憾,就是还没有自己制作过交叉编译器和文件系统,驱动也是刚学习。前面还有很长的路走~~~
下一步就要开始这些工作~~感谢网上各位高手的资料共享,没有你们的奉献,我是不可能移植成功的:D
uboot1.2.0采用交叉编译器3.3.2进行编译
linux2.6.18.6采用3.4.1编译,交叉编译器的版本可能会导致你编译出错哦~
下面关于vivi的分区信息是以前针对vivi移植时做的总结,但我现在已经成功移植了uboot1.2.0,具体个人的uboot移植总结,待整理好了再帖出来:D
我下载的内核版本是2.6.18
2.6.18的内核映像文件一般会大于1M,所以对nandflash重新进行分区是很重要的。通常2410的分区模式是
内核只占了768K的大小,
内核的分区信息必须与vivi的分区信息一致。因为vivi的分区信息是用来将自己、内核、文件系统加载到SDRAM中的真正地址(0x30000000~0x34000000),而内核并不会去读vivi中的分区信息,它只会读取内核本身MTD分区中的信息。若两者不一致,可能会导致读取失败。
重新定义vivi分区。
Name |
Offset |
Size |
Flag |
|
Vivi |
0x00000000 |
0x00020000 |
0 |
128k |
Param |
0x00020000 |
0x00010000 |
0 |
64k |
Kernel |
0x00030000 |
0x001e0000 |
0 |
1M+896k |
Filesystem |
0x00200000 |
0x00400000 |
4 |
4M |
Program |
0x00600000 |
0x03a00000 |
0 |
58M |
上述的vivi信息只作参考。
1 正文:
内核MTD需要注意的是,2.6.16前需要自己添加分区信息,2.6.17以后的版本源码中已经添加了分区信息,仅需要修改分区信息就行了。相对来讲新的内核版本修改起来也比较简单。
因此不能修改/arch/arm/mach_s3c2410目录下的devs.c,而应该去修改这个目录下的common_smdk.c文件,这个c文件已经定义了内核的分区信息,如果在devs.c中自己又添加分区信息,那么会造成重复。可能会出错。
/* NAND parititon from 2.6.18 2009-3-31*/
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "bootloader",这是我修改的信息
.size = SZ_128K,
.offset = 0,
},
[1] = {
.name = "bootloader param",修改的
.offset = SZ_128K,
.size = SZ_64K,
},
[2] = {
.name = "KERNEL",内核分区
.offset = SZ_128K+SZ_64K,
.size = SZ_1M+(SZ_1M-(SZ_128K+SZ_64K)),
},
[3] = {
.name = "FILE SYSTEM",文件系统
.offset = SZ_1M * 2,
.size = SZ_1M * 4,
},
[4] = {
.name = "THE REST",剩余的空间
.offset = SZ_1M * 6,
.size = SZ_1M* 58,
},
/*[5] = {
.name = "S3C2410 flash partition 5",
.offset = SZ_1M * 14,
.size = SZ_1M * 10,
},
[6] = {
.name = "S3C2410 flash partition 6",
.offset = SZ_1M * 24,
.size = SZ_1M * 24,
},
[7] = {
.name = "S3C2410 flash partition 7",
.offset = SZ_1M * 48,
.size = SZ_16M,
}*/
};
修改/drivers/mtd/nand/s3c2410.c 在s3c2410_nand_init_chip函数中,禁止nandflash的差错检错。将chip->eccmode=NAND_ECC_NONE
编译linux2.6.18.6时
1 修改makefile中的SUBDIR值,令SUBDIR=arm
修改CROSS-COMPILE=/usr/local/arm/3.3.2/bin/arm-linux-
将/arch/arm/config/目录下的s3c2410_defconfig复制到根目录下,
cp arch/arm/configs/smdk2410_cdefconfig .config
执行make menuconfig时 将这个导入进去。。。再进行相关配置。。具体配置就不一一例举了,只要稍作修改即可!
接着make 错误就出现了。
错误1
scripts/mod/sumversion.c:384: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)
scripts/mod/sumversion.c:384: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
scripts/mod/sumversion.c:384: 错误: 所在的函数内也只报告一次。)
scripts/mod/sumversion.c:384: 警告: 未使用的变量‘filelist’
这是一个bug..修改措施,在scripts/mod/sumversion.c文件中添加#include
再make ,这个问题解决。但下个问题又出来了
2问题2
/tmp/ccnVXlT1.s: Assembler messages:
/tmp/ccnVXlT1.s:5741: Error: .err encountered
make[1]: *** [mm/page_alloc.o] 错误 1
make: *** [mm] 错误 2
据网上说,又是一个bug
这个交叉编译器的问题。3.3.2会出现这个错误。换了3.4.1问题则能解决。
3.4.1下载地址
二 烧写内核
1 要使用tftp命令,首先要在电脑上安装tftp服务,具体怎么安装,在我另一个帖子里已经说明了:D
将编译好的zImage下载到板子上之后可以直接用go来执行,但是go启动内核的话会出现下面错误:
tc2410 # tftp 30008000 zImage
TFTP from server 192.168.1.10; our IP address is 192.168.1.110
Filename 'zImage'.
Load address: 0x30008000
Loading: #################################################################
#################################################################
#################################################################
########################
done
Bytes transferred = 1118644 (1111b4 hex)
tc2410 # go 30008000
## Starting application at 0x30008000 ...
Uncompressing Linux.............................................................
Error: unrecognized/unsupported machine ID (r1 = 0x33f4fcac).
Available machine support:
ID (hex) NAME
000000c1 SMDK2410
Please check your kernel config and/or bootloader.
go命令不能将Uboot的参数传递给内核,因此内核不能启动。
至于如何使go命令能够传递参数,我没有试验过,以后再弄弄
产生的原因是go启动内核的话,u-boot不会传machiine ID给内核,因为go只是执行普通的应用程序,不考虑到传递参数给内核的问题,没有必要在乎它。如果只是想看看go能不能启动内核的话,修改方法有两个:
a、修改u-boot的common/cmd_boot.c的do_go()函数:
/*#if defined(CONFIG_I386)*/ <==注释掉
DECLARE_GLOBAL_DATA_PTR;
/*#endif*/ <==注释掉
....
#if !defined(CONFIG_NIOS)
/*******************add here*******************************/
if(argc==2)
rc = ((ulong (*)(int, char *[]))addr) (0, gd->bd->bi_arch_number);
else
/*********************add end *****************************/
rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]);
b、修改内核的arch/arm/kernel/head.S,直接将s3c2410的参数赋给内核
__INIT
.type stext, %function
ENTRY(stext)
/****************add here*****************/
mov r0, #0
mov r1, #0xc1
ldr r2, =0x30000100
/***************end add******************/
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode
@ and irqs disabled
2 用bootm启动内核
这个方法u-boot可以将machine Id传给内核,正常启动,不过用u-boot的mkimage工具(在u-boot1.2.0/tools/目录下)将前面生成的zImage加上一个信息头(有关如何添加头的命令和使用tftp在后面讲述),之后下载到板子上,启动控制台信息如下:
切换到uboot1.2.0目录下,将tools目录下的mkimage文件以及zImage拷贝到自己的工作目录下,输入下面命令用来给zImage添加信息头。先看看mkimage的用法吧
tangcong@ubuntu:~/working/add_imageheader$ ./mkimage
Usage: ./mkimage -l image mkiamge的用法
-l ==> list image header information
./mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch' 体系结构
-O ==> set operating system to 'os ' 操作系统
-T ==> set image type to 'type' 给什么类型加信息头
-C ==> set compression type 'comp' 压缩类型
-a ==> set load address to 'addr' (hex) 加载地址
-e ==> set entry point to 'ep' (hex) 入口点,信息头占64个字节因此是30008040
-n ==> set image name to 'name' 源名字
-d ==> use image data from 'datafile' 目标名字
-x ==> set XIP (execute in place)
tangcong@ubuntu:~/working/add_imageheader$ ./mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n linux2.6.18.6 -d zImage uImage2.6.18.6
Image Name: linux2.6.18.6
Created: Sun Apr 19 17:53:35 2009
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1394320 Bytes = 1361.64 kB = 1.33 MB
Load Address: 0x30008000
Entry Point: 0x30008040
再重新输入tftp 0x30008000 uImage2.6.18.6
U-Boot 1.2.0 (Apr 19 2009 - 15:31:15)
U-Boot code: 33F80000 -> 33F9B9C8 BSS: -> 33FA0180
DRAM: 64 MB
Flash: 512 kB
NAND: 64 MB
In: serial
Out: serial
Err: serial
tc2410 # tftp 0x30008000 uImage2.6.18.6
TFTP from server 192.168.1.100; our IP address is 192.168.1.10
Filename 'uImage2.6.18.6'.
Load address: 0x30008000
Loading: T T T T ###############################################################
#################################################################
#################################################################
#################################################################
#############
done
Bytes transferred = 1394384 (1546d0 hex)
tc2410 # bootm 30008000
## Booting image at 30008000 ...
Image Name: linux2.6.18.6
Created: 2009-04-19 9:53:35 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1394320 Bytes = 1.3 MB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
Starting kernel ...
Uncompressing Linux.............................................................
Linux version 2.6.18.6 (tangcong@ubuntu) (gcc version 3.4.1) #2 Wed Apr 8 12:319
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz
S3C24XX Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists. Total pages: 16384
Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0M
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 2048 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c
Console: colour dummy device 80x30
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: 61884KB available (2341K code, 535K data, 104K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2410 Power Management, (c) 2004 Simtec Electronics
S3C2410: Initialising architecture
usbcore: registered new driver usbfs
usbcore: registered new driver hub
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS version 1.0, (C) 1999, 2000 Axis Communications AB
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
s3c2410-lcd s3c2410-lcd: no platform data for lcd, cannot attach
s3c2410-lcd: probe of s3c2410-lcd failed with error -22
lp: driver loaded but no devices found
S3C2410 RTC, (c) 2004 Simtec Electronics
ppdev: user-space parallel port driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
dm9000 Ethernet Driver
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand s3c2410-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "bootloader"
0x00020000-0x00030000 : "bootloader param" 这是我在内核中设置的分区信息
0x00030000-0x00200000 : "KERNEL"
0x00200000-0x00600000 : "FILE SYSTEM"
0x00600000-0x04000000 : "THE REST"
usbmon: debugfs is not available
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
mice: PS/2 mouse device common for all mice
s3c2410-i2c s3c2410-i2c: slave address 0x10
s3c2410-i2c s3c2410-i2c: bus frequency set to 99 KHz
s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter
TCP bic registered
NET: Registered protocol family 1
jffs_scan_flash(): Did not find even a single chunk of free space. This is BAD!
jffs_scan_falsh():Free size accounting screwed
jfffs_scan_flash():free_chunk_size1 == 0x400000, free_chunk_size2 == 0x0, fmc->0
JFFS: Failed to mount device mtdblock3.
No filesystem could mount root, tried: ext3 cramfs msdos vfat jffs romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)
这句话表示没有挂载文件系统,现在离移植成功已经很近了,只要再挂载文件系统就OK。
tftp命令只是将内核下载到0x30008000开始的内存地址中,断电以后内容将会消失,如果想实现自启动,可以使用下面的方法。
要实现自启动,必须将它烧写到nandflash中去,可以使用Uboot的nand_erase,nand_write命令来实现。每次开机后让u-boot帮你复制到sdram中,再使用bootm命令引导的话,可以按照这样操作:
tc2410=>tftp 0x30008000 uImage2.6.18.6
TFTP from server 192.168.1.100; our IP address is 192.168.1.10
Filename 'uImage2.6.18.6'.
Load address: 0x30008000
Loading: #################################################################
#################################################################
#################################################################
####################################################
done
Bytes transferred = 1263324 (1346dc hex)
tc2410=>nand erase 0x30000 0x200000 根据内核的分区信息填写
NAND erase: device 0 offset 196608, size 1900544 ... OK
tc2410=>nand write 0x30008000 0x30000 0x200000
NAND write: device 0 offset 196608, size 1900544 ... 1900544 bytes written: OK
tc2410=>setenv bootcmd nand read 0x30008000 0x30000 0x200000\;bootm 0x30008000
tc2410=>saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
tc2410=>reset
开发板重启以后,可以自动启动内核了。
2.6的内核挂在cramfs时,需要在/dev目录下添加console,null节点
具体操作:切换到root权限,以及转到dev目录
mknod -m 660 null c 1 3
mknod -m 660 console 5 1具体什么意思我也不懂。
先少进板子里看看吧。以后有机会了再自己制作文件系统。
2.6的内核挂在cramfs时,需要在/dev目录下添加console,null节点
具体操作:切换到root权限,以及转到dev目录
mknod -m 660 null c 1 3
mknod -m 660 console 5 1具体什么意思我也不懂。
先少进板子里看看吧。以后有机会了再自己制作文件系统。
mkcramfs的用法
Mkcramfs [-h][--eedition][-l file][-n name] Dirname,outputfile
./mkcramfs root root.img
uboot传递给内核的参数
/board/tc2410/tc2410.c
/* arch number of SMDK2410-Board */
gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
/* adress of boot parameters */
gd->bd->bi_boot_params = 0x30000100;
而MACH_TYPE_SMDK2410在include/asm-arm/mach_type.h中定义了
#define MACH_TYPE_SMDK2410 193
因此我们可知bi_arch_number = 193
bi_boot_params= 0x30000100
这两个参数是传递到内核里去的,如果与内核里面的不相等,则linux不能启动。linux关于这两个参数的定义在arch/arm/tools/mach_types文件中定义了。
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
smdk2410 ARCH_SMDK2410 SMDK2410 193
可以看出类型都是SMDK2410,且为193。参数相等,可以启动。
使用tftp下载过来是下在内存里面,断电以后就不存在了。因此如果要实现自启动,必须将它烧写到nandflash中去,可以使用Uboot的nand_erase,nand_write命令来实现。每次开机后让u-boot帮你复制到sdram中,再使用bootm命令引导的话,可以按照这样操作:
下载内核
tc2410=>tftp 0x30008000 uImage2.6.18.6
TFTP from server 192.168.1.100; our IP address is 192.168.1.10
Filename 'uImage2.6.18.6'.
Load address: 0x30008000
Loading: #################################################################
#################################################################
#################################################################
####################################################
done
Bytes transferred = 1263324 (1346dc hex)
tc2410=>nand erase 0x30000 0x200000 根据内核的分区信息填写
NAND erase: device 0 offset 196608, size 1900544 ... OK
tc2410=>nand write 0x30008000 0x30000 0x200000
NAND write: device 0 offset 196608, size 1900544 ... 1900544 bytes written: OK
如何设置Uboot自启动内核
我默认的下载地址是0x30008000,因此采用这条自启动命令
tc2410=>setenv bootcmd nand read 0x30008000 0x30000 0x200000\;bootm 0x30008000
tc2410=>saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
tc2410=>reset,可以加载内核了。
因为我编译的内核里面的boot option参数设置了加载的文件系统在/dev/mtdblock3里,因此我只要根据我的nandflash分区信息,将下载的文件系统烧到mtdblock3分区中,就能实现内核自动挂载文件系统了。
下载文件系统
tc2410 # tftp 0x31000000 root.img
TFTP from server 192.168.1.100; our IP address is 192.168.1.10
Filename 'root.img'.
Load address: 0x31000000
##########################
tc2410=>nand erase 0x200000 0x600000 我nandflash分区的mtdblock3的范围,只给cramfs分了4M的空间,很明显对于以后拥有更多的应用程序的文件这是不够用的。不过还剩余了58M的空间够我来挂载大的文件系统拉
tc2410=>nand write 0x31000000 0x200000 0x600000
reset一下。搞定!下面是我的启动信息
U-Boot 1.2.0 (Apr 19 2009 - 15:31:15)
U-Boot code: 33F80000 -> 33F9B9C8 BSS: -> 33FA0180
DRAM: 64 MB
Flash: 512 kB
NAND: 64 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
NAND read: device 0 offset 196608, size 2097152 ...
2097152 bytes read: OK
## Booting image at 30008000 ...
Image Name: linux2.6.18.6
Created: 2009-04-19 9:53:35 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1394320 Bytes = 1.3 MB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
Starting kernel ...
Uncompressing Linux.............................................................
Linux version 2.6.18.6 (tangcong@ubuntu) (gcc version 3.4.1) #2 Wed Apr 8 12:319
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz
S3C24XX Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists. Total pages: 16384
Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0M
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 2048 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c
Console: colour dummy device 80x30
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: 61884KB available (2341K code, 535K data, 104K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2410 Power Management, (c) 2004 Simtec Electronics
S3C2410: Initialising architecture
usbcore: registered new driver usbfs
usbcore: registered new driver hub
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS version 1.0, (C) 1999, 2000 Axis Communications AB
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
s3c2410-lcd s3c2410-lcd: no platform data for lcd, cannot attach
s3c2410-lcd: probe of s3c2410-lcd failed with error -22
lp: driver loaded but no devices found
S3C2410 RTC, (c) 2004 Simtec Electronics
ppdev: user-space parallel port driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
dm9000 Ethernet Driver
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand s3c2410-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "bootloader"
0x00020000-0x00030000 : "bootloader param"
0x00030000-0x00200000 : "KERNEL"
0x00200000-0x00600000 : "FILE SYSTEM" 我现在的mtdblock3只有4M的大小,难怪我烧root_china.cramfs进去时,不能启动,因为这个文件有20多M了。。
0x00600000-0x04000000 : "THE REST"
usbmon: debugfs is not available
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
mice: PS/2 mouse device common for all mice
s3c2410-i2c s3c2410-i2c: slave address 0x10
s3c2410-i2c s3c2410-i2c: bus frequency set to 99 KHz
s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter
TCP bic registered
NET: Registered protocol family 1
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 104K
mount /etc as ramfs
re-create the /etc/mtab entries
console=/dev/console
init started: BusyBox v0.60.3 (2002.05.13-08:36+0000) multi-call binary
Starting pid 751, console /dev/console: '/etc/init.d/rcS'
mount: Mounting none on /dev/pts failed: No such file or directory
mount: Mounting tmpfs on /dev/shm failed: No such file or directory
exec: /usr/etc/rc.local: No such file or directory
Waiting for enter to start '/bin/sh' (pid 754, terminal /dev/console)
Please press Enter to activate this console.
Starting pid 754, console /dev/console: '/bin/sh'
BusyBox v0.60.3 (2002.05.13-08:36+0000) Built-in shell (ash)
使用的以前得旧文件系统,下一步目标就是自己用busubox做一个文件系统了
Enter 'help' for a list of built-in commands.
# ls
bin etc linuette mnt qt tmp var
dev lib linuxrc proc sbin usr
#
问题:如何设置linux_cmd_line,bootargs是什么?
uboot是用来引导linux的,如果uboot的bootargs设置了的话,uboot在引导Linux时会用bootargs替换掉linux的command string。这个command_string是不是就等价于linux_cmd_line??
进去系统以后,Mount 主机上的nfs不成功,好像是我主机ip的问题,掩码变成244,而不是我设置的255.255.255.0,更奇怪的是我设置以后它又自己变成244了,- -