at91sam9260 开发环境的建立
来源:互联网 发布:数码宝贝网络侦探才能 编辑:程序博客网 时间:2024/05/29 11:00
root@emboard:/workdir/atmel/at91sam9260#
AT91Bootstrap1.14.zip
arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
u-boot-1.3.4-exp.3.diff
u-boot-1.3.4.tar.bz
22.6.24.at91.2-exp.patch.gz
2.6.24-at91.patch.gz
linux-2.6.24 linux-2.6.24.tar.bz2
2,建立工作目录文件夹,解压源码和打入相应的补丁:
3,开始编译源码:
3.1:编译一级启动代码:
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap# unzip AT91Bootstrap1.14.zip
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap# ls
AT91Bootstrap1.14.zip Bootstrap-v1.14
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap# cd Bootstrap-v1.14/board/at91sam9260ek/nandflash/
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# ls
at91sam9260ek.h debug.o main.o nandflash_at91sam9260ek.elf pmc.o udiv.o
at91sam9260ek.o div0.o Makefile nandflash_at91sam9260ek.map sdramc.o _udivsi3.o
crt0_gnu.o gpio.o nandflash_at91sam9260ek.bin nandflash.o string.o _umodsi3.o
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# make clean
rm -f *.o *.bin *.elf *.map
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# ls
at91sam9260ek.h Makefile
因为9260编译后必须使这个烧入文件小于4K,所以要针对Makefile做修改:
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# vim Makefile
修改下面这个地方:
OBJDUMP=$(CROSS_COMPILE)objdump
CCFLAGS=-g -mcpu=arm9 -O1 -Wall -D$(TARGET) -I$(INCL)
ASFLAGS=-g -mcpu=arm9 -c -O1 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14# cd include/
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/include# ls
AT91CAP9_inc.h AT91SAM9263_inc.h AT91SAM9XE128_inc.h debug.h nandflash.h part.h sdramc.h
AT91SAM9260_inc.h AT91SAM9G45_inc.h dataflash.h gpio.h nand_ids.h pmc.h
AT91SAM9261_inc.h AT91SAM9RL_inc.h ddramc.h main.h norflash.h sddrc.h
修改这个文件:
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/include# vim nand_ids.h
#ifndef _NAND_IDS_H
#define _NAND_IDS_H
#include "../include/nandflash.h"
/* Supported NandFlash devices */
static struct SNandInitInfo NandFlash_InitInfo[] = {
{0xecda, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08U0M\0"},
//{0xecaa, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08R0A\0"},
//{0x2cca, 0x800, 0x20000, 0x800, 0x40, 0x1, "MT29F2G16AAB\0"},
//{0x2cda, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08AAC\0"},
//{0x20aa, 0x800, 0x20000, 0x800, 0x40, 0x0, "STMNAND02GR3B\0"},
//{0x2caa, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08ABD\0"},
{0,}
};
#endif
屏蔽掉你不用的nandflash,这样就可以使编译最后的大小小于4K!
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# make
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# ls -l
total 140
-rwxrwxrwx 1 root root 5118 2008-12-04 19:18 at91sam9260ek.h
-rw-r--r-- 1 root root 5652 2010-05-18 21:26 at91sam9260ek.o
-rw-r--r-- 1 root root 2604 2010-05-18 21:26 crt0_gnu.o
-rw-r--r-- 1 root root 992 2010-05-18 21:26 debug.o
-rw-r--r-- 1 root root 2068 2010-05-18 21:26 div0.o
-rw-r--r-- 1 root root 8336 2010-05-18 21:26 gpio.o
-rw-r--r-- 1 root root 2472 2010-05-18 21:26 main.o
-rwxr--r-- 1 nobody nogroup 3219 2010-05-18 21:22 Makefile
-rwxr-xr-x 1 root root 3972 2010-05-18 21:26 nandflash_at91sam9260ek.bin
-rwxr-xr-x 1 root root 27381 2010-05-18 21:26 nandflash_at91sam9260ek.elf
-rw-r--r-- 1 root root 18270 2010-05-18 21:26 nandflash_at91sam9260ek.map
-rw-r--r-- 1 root root 9924 2010-05-18 21:26 nandflash.o
-rw-r--r-- 1 root root 4092 2010-05-18 21:26 pmc.o
-rw-r--r-- 1 root root 3864 2010-05-18 21:26 sdramc.o
-rw-r--r-- 1 root root 3448 2010-05-18 21:26 string.o
-rw-r--r-- 1 root root 4920 2010-05-18 21:26 udiv.o
-rw-r--r-- 1 root root 1752 2010-05-18 21:26 _udivsi3.o
-rw-r--r-- 1 root root 1828 2010-05-18 21:26 _umodsi3.o
可以看到nandflash_at91sam9260ek.bin小于4K!
将编译出来的文件写入nandflash的0x00000000里面去:
3.2:编译u-boot:
root@emboard:/workdir/at91sam9260/u-boot# ls -l
total 7668
-rw-rw-rw- 1 root root 111418 2009-10-23 10:08 u-boot-1.3.4-exp.3.diff
-rw-rw-rw- 1 root root 7714456 2009-05-11 09:51 u-boot-1.3.4.tar.bz2
root@emboard:/workdir/at91sam9260/u-boot# tar -xjvf u-boot-1.3.4.tar.bz2
root@emboard:/workdir/at91sam9260/u-boot# ls
u-boot-1.3.4 u-boot-1.3.4-exp.3.diff u-boot-1.3.4.tar.bz2
进入u-boot目录:
root@emboard:/workdir/at91sam9260/u-boot# cd u-boot-1.3.4
将补丁复制到u-boot目录里:
root@emboard:/workdir/at91sam9260/u-boot/u-boot-1.3.4# cp ../u-boot-1.3.4-exp.3.diff .
打入atmel的补丁:
root@emboard:/workdir/at91sam9260/u-boot/u-boot-1.3.4# cat u-boot-1.3.4-exp.3.diff | patch -p1
root@emboard:/workdir/atmel/at91sam9260/u-boot/u-boot-1.3.4# make distclean
root@emboard:/workdir/atmel/at91sam9260/u-boot/u-boot-1.3.4# make at91sam9260ek_nandflash_config
... with environment variable in NAND FLASH
Configuring for at91sam9260ek board...
root@emboard:/workdir/atmel/at91sam9260/u-boot/u-boot-1.3.4# make
这样就可以编译出u-boot.bin
可以去这个文件来看u-boot烧写进nandflash的地址
root@emboard:/workdir/atmel/at91sam9260/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9260ek/nandflash# vim at91sam9260ek.h
/* ******************************************************************* */
/* BootStrap Settings */
/* */
/* ******************************************************************* */
#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */
#define IMG_SIZE 0x40000 /* Image Size in NandFlash */
看到烧到nandflash的地址是:0x20000
然后打开串口,写入进nandflash串口信息如下:
RomBOOT
>
U-Boot 1.3.4 (May 18 2010 - 21:40:34)
DRAM: 64 MB
NAND: 256 MiB
*** Warning - bad CRC or NAND, using default environment
In: serial
Out: serial
Err: serial
Net: macb0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0xa0000, size 0x200000
2097152 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot>
可以看到u-boot启动起来了:
然后插上网线,看下网络能通吗?
U-Boot> ping 192.168.1.1
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
*** ERROR: `ipaddr' not set
ping failed; host 192.168.1.1 is not alive
看到提示没有设置ipaddr:
U-Boot> setenv ipaddr 192.168.1.250
U-Boot> printenv
bootargs=console=ttyS0,115200 root=/dev/mtdblock5 mtdparts=at91_nand:128k(bootstrap)ro,256k(uboot)ro,128k(env1)ro,128k(env2)ro,2M(linux),-(root) rw rootfstype=jffs2
bootcmd=nand read 0x22000000 0xA0000 0x200000; bootm
bootdelay=3
baudrate=115200
stdin=serial
stdout=serial
stderr=serial
ethact=macb0
ipaddr=192.168.1.250
Environment size: 321/131067 bytes
U-Boot> saveenv
Saving Environment to NAND...
Erasing redundant Nand...
Erasing at 0x80000 -- 100% complete.
Writing to redundant Nand... done
U-Boot> setenv ethaddr 3e:36:65:ba:6f:be
U-Boot> setenv netmask 255.255.255.0
U-Boot> setenv gatewayip 192.168.1.1
U-Boot> savenv
Unknown command 'savenv' - try 'help'
U-Boot> saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x60000 -- 100% complete.
Writing to Nand... done
U-Boot> ping 192.168.1.1
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
host 192.168.1.1 is alive
现在可以ping通网络了:
我们现在ping下google:
U-Boot> ping 66.249.89.104
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
host 66.249.89.104 is alive
可以看到也能ping到外网!
3.3移植linux内核:
root@emboard:/workdir/atmel/at91sam9260/kernel# tar -xjvf linux-2.6.24.tar.bz2
root@emboard:/workdir/atmel/at90sam9260/kernel# ls
2.6.24.at91.2-exp.patch.gz 2.6.24-at91.patch.gz linux-2.6.24.tar.bz2
root@emboard:/workdir/at91sam9260/kernel/linux-2.6.24# zcat 2.6.24.at91.2-exp.patch.gz | patch -p1
root@emboard:/workdir/at91sam9260/kernel/linux-2.6.24# zcat
2.6.24-at91.patch.gz | patch -p1
root@emboard:/workdir/atmel/at91sam9260/kernel# cd linux-2.6.24
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# ls
arch CREDITS drivers init kernel Makefile net samples sound vmlinux
block crypto fs ipc lib mm README scripts System.map vmlinux.o
COPYING Documentation include Kbuild MAINTAINERS Module.symvers REPORTING-BUGS security usr
root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24# vim Makefile
linux-2.6.24 主目录下有个Makefile 文件,打开,找到185 行左右,修改
ARCH ?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabi-
保存退出。
root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24# make distclean
root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24# make at91sam9261ek_defconfig
root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24# make menuconfig
然后配置:
kernel Features -->选中:
[*]Use the ARM EABI to compile the kernel
[*]Allow old ABI ............
然后编译:
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make uImage
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/arch/arm/mach-at91# pwd
/workdir/atmel/at91sam9260/kernel/linux-2.6.24/arch/arm/mach-at91
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/arch/arm/mach-at91# vim board-sam9260ek.c
修改这里可以修改为自己想要的:
116行开始:
/*
* NAND flash
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
.name = "Bootstrap",
.offset = 0,
.size = 4 * 1024 * 1024,
},
{
.name = "u-boot",
.offset = 4 * 1024 * 1024,
.size = 4 * 1024 * 1024,
},
{
.name = "kernel",
.offset = 8 * 1024 * 1024,
.size = 22 * 1024 * 1024,
},
{
.name = "fs",
.offset = 30 * 1024 * 1024,
.size = 40 * 1024 * 1024,
},
{
.name = "user space0",
.offset = 70 * 1024 * 1024,
.size = 60 * 1024 * 1024,
},
{
.name = "user space2",
.offset = 130 * 1024 * 1024,
.size = MTDPART_SIZ_FULL,
},
};
我的是256M的nandflash!
然后编译写入板子:
串口信息如下:
RomBOOT
>
U-Boot 1.3.4 (May 18 2010 - 21:40:34)
DRAM: 64 MB
NAND: 256 MiB
*** Warning - bad CRC or NAND, using default environment
In: serial
Out: serial
Err: serial
Net: macb0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0xa0000, size 0x200000
2097152 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot> printenv
bootargs=console=ttyS0,115200 root=/dev/mtdblock5 mtdparts=at91_nand:128k(bootstrap)ro,256k(uboot)ro,128k(env1)ro,128k(env2)ro,2M(linux),-(root) rw rootfstype=jffs2
bootcmd=nand read 0x22000000 0xA0000 0x200000; bootm
bootdelay=3
baudrate=115200
stdin=serial
stdout=serial
stderr=serial
ethact=macb0
Environment size: 300/131067 bytes
U-Boot> nand read 0x22000000 0x800000 0x200000
NAND read: device 0 offset 0x800000, size 0x200000
2097152 bytes read: OK
U-Boot> bootm 0x22000000
## Booting kernel from Legacy Image at 22000000 ...
Image Name: Linux-2.6.24
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1070252 Bytes = 1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux....................................................................... done, booting the kernel.
Linux version 2.6.24 (root@emboard) (gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)) #1 Tue May 18 22:50:41 HKT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttyS0,115200 root=/dev/mtdblock5 mtdparts=at91_nand:128k(bootstrap)ro,256k(uboot)ro,128k(env1)ro,128k(env2)ro,2M(linux),-(root) rw rootfstype=jffs2
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
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: 62616KB available (1944K code, 194K data, 100K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: pit clocksource has been installed.
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
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler anticipatory registered (default)
Internal error: Oops - undefined instruction: 0 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.24 #1)
PC is at device_create+0x20/0xb8
LR is at tty_register_device+0xb4/0xd0
pc : [<c0101288>] lr : [<c00e8c18>] psr: a0000013
sp : c3c19ea8 ip : c3c19ed8 fp : c3c19ed0
r10: 00000000 r9 : 00000000 r8 : c3c18000
r7 : c00e8c17 r6 : 00000004 r5 : c3c36bc0 r4 : 00000002
r3 : c3c19ee0 r2 : 00400003 r1 : 00000000 r0 : c3c36bc0
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc3c18268)
Stack: (0xc3c19ea8 to 0xc3c1a000)
9ea0: 00000000 c3c19ea8 c00e8c18 00000002 00000001 00000004
9ec0: 00000000 c3c19f3c c3c19ed8 c00e8c18 c010127c c3c19ee0 0000001c 00000004
9ee0: 33797474 c3c19e00 c010530c c019cf94 00000000 c3c52804 c3c52800 c3cab800
9f00: 00000000 c3c18000 00000000 00000000 c3c19f3c c3c19f20 c007d518 c0105210
9f20: 00000003 c3c52800 c3cab800 00000000 c3c19f64 c3c19f40 c00e9744 c00e8b74
9f40: c3c19f64 00400001 c0234404 c0233ae0 00000000 c001d60c c3c19f7c c3c19f68
9f60: c0017a2c c00e95b0 00000000 c0233ae0 c3c19f94 c3c19f80 c00172c4 c0017988
9f80: c001e000 00000000 c3c19ff4 c3c19f98 c0008934 c0017160 c0035918 c00354d4
9fa0: 00000000 c3c19fb0 c0021e64 c0035910 00000000 00000000 c0008870 c003bbc0
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 c3c19ff8 c003bbc0 c0008880 ffffff7f feffefff
Backtrace:
[<c010126c>] (device_create+0x4/0xb8) from [<c00e8c18>] (tty_register_device+0xb4/0xd0)
r7:00000000 r6:00000004 r5:00000001 r4:00000002
[<c00e8b64>] (tty_register_device+0x0/0xd0) from [<c00e9744>] (tty_register_driver+0x1a4/0x1e4)
r7:00000000 r6:c3cab800 r5:c3c52800 r4:00000003
[<c00e95a0>] (tty_register_driver+0x0/0x1e4) from [<c0017a2c>] (vty_init+0xb4/0xec)
r7:c001d60c r6:00000000 r5:c0233ae0 r4:c0234404
[<c0017978>] (vty_init+0x0/0xec) from [<c00172c4>] (tty_init+0x174/0x1cc)
r5:c0233ae0 r4:00000000
[<c0017150>] (tty_init+0x0/0x1cc) from [<c0008934>] (kernel_init+0xc4/0x284)
r5:00000000 r4:c001e000
[<c0008870>] (kernel_init+0x0/0x284) from [<c003bbc0>] (do_exit+0x0/0x710)
Code: e24dd00c e2505000 e1a07001 e1a06002 (0a000019)
---[ end trace 119d4c116316149b ]---
Kernel panic - not syncing: Attempted to kill init!
可以看到内核是启动起来了!但是还文件系统等还没完全启动,所以还需要进行修改!
4:添加内核对yaffs2的支持
上面可以看到,没有对yaffs2文件系统的支持,现在就添加yaffs2的支持
4.1解压yaffs2文件包
root@emboard:/workdir/atmel/at91sam9260/kernel# tar -xzvf yaffs2.tar.gz
root@emboard:/workdir/atmel/at91sam9260/kernel# ls
2.6.24.at91.2-exp.patch.gz 2.6.24-at91.patch.gz linux-2.6.24 linux-2.6.24.tar.bz2 yaffs2 yaffs2.tar.gz
root@emboard:/workdir/atmel/at91sam9260/kernel# cd linux-2.6.24/fs
root@emboard:/workdir/atmel/at91sam9260/kernel# mkdir yaffs
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs2# pwd
/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# cp ../../../yaffs/*.h .
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# cp ../../../yaffs/*.c .
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# ls
devextras.h yaffs_fs.c yaffs_mtdif1.h yaffs_nandemul2k.h yaffs_qsort.c yportenv.h
moduleconfig.h yaffs_getblockinfo.h yaffs_mtdif2.c yaffs_nand.h yaffs_qsort.h
yaffs_checkptrw.c yaffs_guts.c yaffs_mtdif2.h yaffs_packedtags1.c yaffs_tagscompat.c
yaffs_checkptrw.h yaffs_guts.h yaffs_mtdif.c yaffs_packedtags1.h yaffs_tagscompat.h
yaffs_ecc.c yaffsinterface.h yaffs_mtdif.h yaffs_packedtags2.c yaffs_tagsvalidity.c
yaffs_ecc.h yaffs_mtdif1.c yaffs_nand.c yaffs_packedtags2.h yaffs_tagsvalidity.h
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# cp ../../../yaffs2/Makefile.kernel .
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# ls
devextras.h yaffs_ecc.h yaffs_mtdif1.c yaffs_nand.c yaffs_packedtags2.h yaffs_tagsvalidity.h
Makefile.kernel yaffs_fs.c yaffs_mtdif1.h yaffs_nandemul2k.h yaffs_qsort.c yportenv.h
moduleconfig.h yaffs_getblockinfo.h yaffs_mtdif2.c yaffs_nand.h yaffs_qsort.h
yaffs_checkptrw.c yaffs_guts.c yaffs_mtdif2.h yaffs_packedtags1.c yaffs_tagscompat.c
yaffs_checkptrw.h yaffs_guts.h yaffs_mtdif.c yaffs_packedtags1.h yaffs_tagscompat.h
yaffs_ecc.c yaffsinterface.h yaffs_mtdif.h yaffs_packedtags2.c yaffs_tagsvalidity.c
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# mv Makefile.kernel Makefile
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# ls
devextras.h yaffs_ecc.h yaffs_mtdif1.c yaffs_nand.c yaffs_packedtags2.h yaffs_tagsvalidity.h
Makefile yaffs_fs.c yaffs_mtdif1.h yaffs_nandemul2k.h yaffs_qsort.c yportenv.h
moduleconfig.h yaffs_getblockinfo.h yaffs_mtdif2.c yaffs_nand.h yaffs_qsort.h
yaffs_checkptrw.c yaffs_guts.c yaffs_mtdif2.h yaffs_packedtags1.c yaffs_tagscompat.c
yaffs_checkptrw.h yaffs_guts.h yaffs_mtdif.c yaffs_packedtags1.h yaffs_tagscompat.h
yaffs_ecc.c yaffsinterface.h yaffs_mtdif.h yaffs_packedtags2.c yaffs_tagsvalidity.c
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# pwd
/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs2
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# cp ../../../yaffs2/Kconfig .
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs/yaffs# cd ..
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs# pwd
/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs
119行开始:
obj-$(CONFIG_OCFS2_FS) += ocfs2/
obj-$(CONFIG_GFS2_FS) += gfs2/
obj-$(CONFIG_YAFFS_FS) += yaffs/
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24/fs# vim Kconfig
修改2119行:
endif # NETWORK_FILESYSTEMS
source "fs/yaffs2/Kconfig"
if BLOCK
menu "Partition Types"
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make distclean
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make at91sam9260ek_defconfig
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make menuconfig
修改配置,去选择支持yaffs!
Device Drivers --> Memory Technology Device(MTD) support
File Systems --> YAFFS2 file system support
Autoselect yaffs2 format
Disable lazy loading
Turn off wide tnodes
Kernel Features --> Use the ARM EABI to compile the kernel
Allow ole ABI binaries to run with this kernel
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make uImage
root@emboard:/workdir/atmel/at91sam9260/kernel/yaffs2/utils# pwd
/workdir/atmel/at91sam9260/kernel/yaffs2/utils
root@emboard:/workdir/atmel/at91sam9260/kernel/yaffs2/utils# ls
Makefile mkyaffs2image.c mkyaffsimage.c
root@emboard:/workdir/atmel/at91sam9260/kernel/yaffs2/utils# make
root@emboard:/workdir/atmel/at91sam9260/kernel/yaffs2/utils# ls
Makefile mkyaffs2image.c mkyaffsimage mkyaffsimage.o yaffs_ecc.o yaffs_packedtags2.o yaffs_tagsvalidity.o
mkyaffs2image mkyaffs2image.o mkyaffsimage.c yaffs_ecc.c yaffs_packedtags2.c yaffs_tagsvalidity.c
然后将这个"mkyaffs2image"目录添加到环境变量里面去!
root@emboard:/workdir/atmel/at91sam9260/kernel/yaffs2/utils# cd ../../../../
root@emboard:/workdir/atmel/at91sam9260# ls
AT91Bootstrap crosstool filesyetem kernel setenv-9260 Source Insight Workdir u-boot
然后就得到支持yaffs2的内核了!
==================================================================================
1,给ubuntu建立tftp服务器:
1.1:首先设置虚拟机能上网步骤如下:
1.1.1配置ip,配置 /etc/network/interfaces 文件
1.1.2.然后是DNS,配置 /etc/resolv.conf
例如:配置静态IP地址
vim /etc/network/interfaces
内容如下:
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0
配置DNS
vim /etc/resolv.conf
增加以下内容:
nameserver 202.96.134.133
1.1.3.增加默认网关
route add default gw 192.168.1.1
1.1.4.重新启动网络配置
/etc/init.d/networking restart
1.2:建立tftp服务器:
网上摘抄方法:
1. sudo apt-get install tftp-hpa tftpd-hpa
2. cd /
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
3. sudo in.tftpd -l /tftpboot
这样tftp服务器就启动了,下面可以做一个测试
4. cd /tftpboot
touch test
建立一个文件
5. cd /home/usrname
登录另一个目录
6. tftp 192.168.0.60
换成自己的ip
> get /tftpboot/test
如果能够得到文件,那么就成功了。
PS:不要忘了 sudo apt-get install xinetd
sudo apt-get install netkit-inetd
关于不能上传(put)的解决
打开目录 /etc/xinetd.d/
新建文件tftp
tftp内容:
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c
per_source = 11
cps = 100 2
}
重新启动服务:
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot
安装过程中出现的问题及原因
现象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服务没有启动
现象二:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了
现象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件。
3.板子通过tftp下载虚拟机的文件:
U-Boot> setenv ethaddr 3e:36:65:ba:6f:be
U-Boot> setenv ipaddr 192.168.1.254
U-Boot> setenv getwayip 192.168.1.1
U-Boot> setenv netmask 255.255.255.0
U-Boot> setenv serverip 192.168.1.5
U-Boot> setenv bootfile uImage
U-Boot> saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x60000 -- 100% complete.
Writing to Nand... done
U-Boot> tftp uImage
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.254
Filename 'uImage'.
Load address: 0x0
Loading: #################################################################
###########
done
Bytes transferred = 1113208 (10fc78 hex)
这样u-boot就可以直接下载文件到板子上了!
当然你也可以下载其它的文件:
U-Boot> tftp test
2.下载内核:
U-Boot> tftp 0x22000000 uImage
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.254
Filename 'uImage'.
Load address: 0x22000000
Loading: #################################################################
#########
done
Bytes transferred = 1075144 (1067c8 hex)
U-Boot> bootm 0x22000000
U-Boot> bootm 0x22000000
## Booting kernel from Legacy Image at 22000000 ...
Image Name: Linux-2.6.24
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1075080 Bytes = 1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux....................................................................... done, booting the kernel.
Linux version 2.6.24 (root@emboard) (gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)) #1 Thu May 20 21:16:55 HKT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttyS0,115200
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
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: 62616KB available (1944K code, 194K data, 100K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: pit clocksource has been installed.
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
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler anticipatory registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
ssc ssc.0: Atmel SSC device at 0xc4820000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
usbmon: debugfs is not available
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
i2c /dev entries driver
i2c-gpio i2c-gpio: using pins 55 (SDA) and 56 (SCL)
at91sam9_wdt: invalid timeout (must be between 1 and 16)
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
VFS: Cannot open root device "<NULL>" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
停在这里就运行不下去了!
google下,知道是内核恐慌.原因是内核的
Linux内核命令行有6个环境变量。如果即将达到或者已经超过了的话 root= 参数会没有传进去启动时会引发panics错误。
所以去看uboot的参数传递,没有!
现在去看下u-boot
配置内核 :
RomBOOT
>
U-Boot 1.3.4 (May 18 2010 - 21:40:34)
DRAM: 64 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: macb0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Hit any key to stop autoboot: 0
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot>
U-Boot> printenv
bootdelay=3
baudrate=115200
ethact=macb0
ethaddr=3e:36:65:ba:6f:be
ipaddr=192.168.1.254
getwayip=192.168.1.1
netmask=255.255.255.0
serverip=192.168.1.5
bootfile=uImage
bootcmd=nand read 0x22000000 0x00800000 0x20000000; bootm 0x22000000
bootargs=noinitrd console=ttyS0,115200 init=/linuxrc root=/dev/mtdblock2 rootfs=cramfs men=64M
stdin=serial
stdout=serial
stderr=serial
Environment size: 373/131067 bytes
U-Boot> tftp 0x22000000 uImage
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.254
Filename 'uImage'.
Load address: 0x22000000
Loading: #################################################################
############
done
Bytes transferred = 1119716 (1115e4 hex)
U-Boot> bootm 0x22000000
## Booting kernel from Legacy Image at 22000000 ...
Image Name: Linux-2.6.24
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1119652 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux.......................................................................... done, booting the kernel.
Linux version 2.6.24 (root@emboard) (gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)) #1 Thu May 20 22:01:58 HKT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: noinitrd console=ttyS0,115200 init=/linuxrc root=/dev/mtdblock2 rootfs=cramfs men=64M
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
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: 62592KB available (2036K code, 195K data, 100K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: pit clocksource has been installed.
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
NetWinder Floating Point Emulator V0.97 (double precision)
yaffs May 20 2010 21:59:45 Installing.
io scheduler noop registered
io scheduler anticipatory registered (default)
Unable to handle kernel NULL pointer dereference at virtual address 00000c20
pgd = c0004000
[00000c20] *pgd=00000000
Internal error: Oops: 0 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.24 #1)
PC is at 0xc20
LR is at link_path_walk+0x8c/0x168
pc : [<00000c20>] lr : [<c008479c>] psr: 60000013
sp : c3c79d98 ip : c022d511 fp : c3c79de4
r10: c022d516 r9 : 00000000 r8 : c022d510
r7 : 00000000 r6 : c3800d08 r5 : c3c79ee0 r4 : 00000107
r3 : 00000000 r2 : c3c79db0 r1 : c3c79da4 r0 : c3c79ee0
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process khelper (pid: 616, stack limit = 0xc3c78268)
Stack: (0xc3c79d98 to 0xc3c7a000)
9d80: 00000101 c3c78000
9da0: 00000107 01c000e1 00000004 c022d511 c3c0d7a0 c3801a18 c3c78000 c3c263c0
9dc0: c3c79ee0 c3c0d7a0 c3801798 c022d510 00000000 00000000 c3c79e5c c3c79de8
9de0: c008479c c00838a8 c3801798 c3c0d7a0 c3c79f64 c3801698 c3c1ab20 00000101
9e00: 00000001 00000000 c3c79f34 c3c79f10 00000001 c0238e10 c0239590 c0238e10
9e20: 3f2e5100 00000000 c3c79f54 00000011 00000000 c3c27b20 c3c79ecc c3c263c0
9e40: 00000001 c3c79ee0 00000001 c022d510 c3c79e6c c3c79e60 c00848a0 c0084720
9e60: c3c79e9c c3c79e70 c0084d04 c0084888 c022d510 00000001 c3c79e9c c3c79ee0
9e80: ffffff9c c022d510 00000001 c3c79f70 c3c79ebc c3c79ea0 c00857ec c0084ad0
9ea0: c3c79ee0 c022d510 c3cfe000 c3c19dfc c3c79ed4 c3c79ec0 c00858c0 c00857a8
9ec0: 00000011 00000000 c3c79f44 c3c79ed8 c007eef8 c00858ac 00000011 00000000
9ee0: c3801798 c3c0d7a0 c3c79f64 c3801698 c3c1ab20 00000105 00000001 00000000
9f00: c3c79f34 c3c79f10 00000001 c0238e10 c0239590 c0238e10 3f2e5100 00000000
9f20: c3c79f54 00000011 00000000 c3c27b20 c3c64380 c022d510 c3c79f6c c3c79f48
9f40: c008042c c007eed8 c022d510 c3c19dfc c3cfe000 c3c79f70 00000000 00000000
9f60: c3c79fd4 c3c79f70 c00254f4 c00803fc 00000000 00000000 00000000 00000000
9f80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fa0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 c3c78000
9fc0: 00000000 c3c741e0 c3c79ff4 c3c79fd8 c0048700 c00254c4 00000000 00000000
9fe0: 00000000 00000000 00000000 c3c79ff8 c003bbc0 c0048630 ffffffff ffffffff
Backtrace:
[<c0083898>] (__link_path_walk+0x0/0xe78) from [<c008479c>] (link_path_walk+0x8c/0x168)
[<c0084710>] (link_path_walk+0x0/0x168) from [<c00848a0>] (path_walk+0x28/0x2c)
r8:c022d510 r7:00000001 r6:c3c79ee0 r5:00000001 r4:c3c263c0
[<c0084878>] (path_walk+0x0/0x2c) from [<c0084d04>] (do_path_lookup+0x244/0x274)
[<c0084ac0>] (do_path_lookup+0x0/0x274) from [<c00857ec>] (__path_lookup_intent_open+0x54/0x94)
r8:c3c79f70 r7:00000001 r6:c022d510 r5:ffffff9c r4:c3c79ee0
[<c0085798>] (__path_lookup_intent_open+0x0/0x94) from [<c00858c0>] (path_lookup_open+0x24/0x2c)
r7:c3c19dfc r6:c3cfe000 r5:c022d510 r4:c3c79ee0
[<c008589c>] (path_lookup_open+0x0/0x2c) from [<c007eef8>] (open_exec+0x30/0xc0)
[<c007eec8>] (open_exec+0x0/0xc0) from [<c008042c>] (do_execve+0x40/0x184)
r5:c022d510 r4:c3c64380
[<c00803ec>] (do_execve+0x0/0x184) from [<c00254f4>] (kernel_execve+0x40/0x8c)
r9:00000000 r8:00000000 r7:c3c79f70 r6:c3cfe000 r5:c3c19dfc
r4:c022d510
[<c00254b4>] (kernel_execve+0x0/0x8c) from [<c0048700>] (____call_usermodehelper+0xe0/0xec)
r7:c3c741e0 r6:00000000 r5:c3c78000 r4:00000000
[<c0048620>] (____call_usermodehelper+0x0/0xec) from [<c003bbc0>] (do_exit+0x0/0x710)
r7:00000000 r6:00000000 r5:00000000 r4:00000000
Code: bad PC value.
---[ end trace e314335e86712eef ]---
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
ssc ssc.0: Atmel SSC device at 0xc4820000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
usbmon: debugfs is not available
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
i2c /dev entries driver
i2c-gpio i2c-gpio: using pins 55 (SDA) and 56 (SCL)
at91sam9_wdt: invalid timeout (must be between 1 and 16)
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
VFS: Cannot open root device "mtdblock2" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
现在内核已经起来了,现在就是要做文件系统了!
对内核进行重新配置
root@emboard:/workdir/atmel/at91sam9260/kernel/linux-2.6.24# make menuconfig
500)this.width=500;" border=0>500)this.width=500;" border=0>
500)this.width=500;" border=0>500)this.width=500;" border=0>
修改后重新启动板子可以看到mtd分区:
RomBOOT
>
U-Boot 1.3.4 (May 18 2010 - 21:40:34)
DRAM: 64 MB
NAND: RomBOOT
>
U-Boot 1.3.4 (May 18 2010 - 21:40:34)
DRAM: 64 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: macb0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Hit any key to stop autoboot: 0
macb0: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using macb0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.254
Filename 'uImage'.
Load address: 0x22000000
Loading: #################################################################
#############################
done
Bytes transferred = 1377500 (1504dc hex)
## Booting kernel from Legacy Image at 22000000 ...
Image Name: Linux-2.6.24
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1377436 Bytes = 1.3 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux.......................................................................................... done, booting the kernel.
Linux version 2.6.24 (root@emboard) (gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)) #2 Thu May 20 23:52:25 HKT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: menm=64M noinitrd console=ttyS0,115200 init=linuxrc root=/dev/mtdblock2 rootfstype=cramfs
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
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: 61964KB available (2544K code, 245K data, 112K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: pit clocksource has been installed.
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
NetWinder Floating Point Emulator V0.97 (double precision)
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
yaffs May 20 2010 23:08:52 Installing.
io scheduler noop registered
io scheduler anticipatory registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
nbd: registered device at major 43
ssc ssc.0: Atmel SSC device at 0xc4820000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
AT91 NAND: 8-bit, Software ECC
Scanning device for bad blocks
Creating 6 MTD partitions on "at91_nand":
0x00000000-0x00400000 : "Bootstrap"
0x00400000-0x00800000 : "u-boot"
0x00800000-0x01e00000 : "kernel"
0x01e00000-0x04600000 : "fs"
0x04600000-0x08200000 : "user space0"
0x08200000-0x10000000 : "user space2"
usbmon: debugfs is not available
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
i2c /dev entries driver
i2c-gpio i2c-gpio: using pins 55 (SDA) and 56 (SCL)
at91sam9_wdt: invalid timeout (must be between 1 and 16)
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtdblock2" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
3.板子通过nfs挂载主机的文件:
root@emboard:/workdir/atmel/at91sam9260# apt-get install nfs-kernel-serve
root@emboard:/workdir/atmel/at91sam9260# vim /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
#
/workdir/atmel/at91sam9260/filesyetem/rootfs *(rw,sync,no_root_squash)
root@emboard:/workdir/atmel/at91sam9260# exportfs -r
root@emboard:/workdir/atmel/at91sam9260# /etc/init.d/nfs-kernel-server restart
* Stopping NFS kernel daemon
...done.
* Unexporting directories for NFS kernel daemon...
...done.
* Exporting directories for NFS kernel daemon...
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/workdir/atmel/at91sam9260/filesyetem/rootfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
...done.
* Starting NFS kernel daemon
...done.
@emboard:/workdir/atmel/at91sam9260# mount -t nfs 192.168.1.5:/workdir/atmel/at91sam9260/filesyetem/rootfs /mnt
root@emboard:/workdir/atmel/at91sam9260# ls /mnt/
app bin boot dev driver etc home lib linuxrc mnt proc root sbin sys tmp usr var
这样可以看到成功挂载,nfs服务器配置成功
root@emboard:/workdir/atmel/at91sam9260# umount 192.168.1.5:/workdir/atmel/at91sam9260/filesyetem/rootfs
root@emboard:/workdir/atmel/at91sam9260# ls /mnt/
hgfs
成功卸载了.
================================================
1,问题1
为什么我选择下面的这个内核配置会出现这个结果呢?
选种的话,会自己自动创建MTD分
500)this.width=500;" border=0>
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
AT91 NAND: 8-bit, Software ECC
Scanning device for bad blocks
6 cmdlinepart partitions found on MTD device at91_nand
Creating 6 MTD partitions on "at91_nand":
0x00000000-0x00020000 : "bootstrap"
0x00020000-0x00060000 : "uboot"
0x00060000-0x00080000 : "env1"
0x00080000-0x000a0000 : "env2"
0x000a0000-0x002a0000 : "linux"
0x002a0000-0x10000000 : "root"
不选中的话:500)this.width=500;" border=0>
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
AT91 NAND: 8-bit, Software ECC
Scanning device for bad blocks
Creating 6 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x00000000-0x00400000 : "Bootstrap"
0x00400000-0x00800000 : "u-boot"
0x00800000-0x01e00000 : "kernel"
0x01e00000-0x04600000 : "fs"
0x04600000-0x08200000 : "user space0"
0x08200000-0x10000000 : "user space2"
2,NFS文件系统搭建:
主机:
安装nfs服务器端和客户端
root@emboard:/workdir/atmel/at91sam9260# apt-get install portmap nfs-kernel-server
root@emboard:/workdir/atmel/at91sam9260# apt-get install portmap nfs-common
2.配置共享文件
编辑/etc/exports,在其中增加要共享的目录
/nfs *(rw,sync,no_subtree_check)
root@emboard:/workdir/atmel/at91sam9260# exportfs -ra
3.重启服务
root@emboard:/workdir/atmel/at91sam9260# /etc/init.d/portmap restart
root@emboard:/workdir/atmel/at91sam9260# /etc/init.d/nfs-kernel-server restart
4.客户就可以加载了
root@emboard:/workdir/atmel/at91sam9260# mount 192.168.1.5:/nfs /workdir/ -o nolock
5,设置开发板的启动参数
U-Boot>setenv bootargs mem=64M console=ttyS0 115200 root=/dev/nfs
nfsroot=192.168.1.5:/nfs/rootfs
ip=192.168.1.254:192.168.1.5:192.168.1.1:255.255.255.0::eth0:off
这样就可以看到系统通过nfs文件系统启动了.
当然要把内核关于nfs的选项选中
当开发板的系统跑起来后,可以执行这个命令来验证:
[root@microcreat /]$mount -o nolock -t nfs 192.168.1.5:/nfs/rootfs /mnt/
要加上-o nolock
内核里面关于nfs文件系统的选项选上
原文地址 http://blog.chinaunix.net/u3/103748/showart_2250636.html- at91sam9260 开发环境的建立
- at91sam9260 开发环境的建立
- at91sam9260 开发环境的建立
- AT91SAM9260开发环境的搭建
- 开发环境的建立:
- AT91SAM9260的SMC的驱动开发
- 驱动程序开发--AT91SAM9260的GPIO驱动笔记
- 驱动程序开发--AT91SAM9260的GPIO驱动笔记
- at91sam9260的Telnet远程登录开发板
- Symbian开发环境的建立
- j2ee 开发环境的建立
- eCos开发环境的建立
- NDS开发环境的建立
- Ubuntu开发环境的建立
- J2ME开发环境的建立
- ADA开发环境的建立
- Qt开发环境的建立
- Qt开发环境的建立
- c语言全局变量和局部变量问题汇总
- Objective-C语法之NSMutableString字符串的那些事儿(四)
- js在线压缩和混淆
- AppWidgetTest
- TcxGridTableView中怎么控制某一行的某列不可编辑?
- at91sam9260 开发环境的建立
- Java格式化时间
- li下3px BUG
- 浅谈嵌入式软件中的一些性能优化方法
- Java正则表达式入门
- 兼容IE,FF的收藏代码
- C编译器错误信息中文翻译
- 新工 作 ,新环境
- java程序获取一些常用时间的方法