Не получается загрузить плату с SD-карты  
	
	| Gregory | 
	
		
	 |  
	
		
		  |  
		 |  
		 |  
		 |  
		 |  
		
  |  
		 |  
		| Регистрация: 23.07.2010 |  
		 |  
		 |  
		 
	 | 
		
		Доброго времени суток, Господа! 
 
Сегодня решили попробовать научить плату AT91SAM9XE512 загружаться с SD-карты. Нашли в офисе карточку QUMO Sequre Digital 2 GB. Поступили следующим образом. Разбили флешку на два раздела, один для ядра, другой для корневой системы. Раздел для ядра (8 Мб) отформатировали как fat, раздел для корневой (оставшееся пространство флешки) отформатировали как ext3.  
 
mkfs.vfat -n kernel /dev/sdd1 
mkfs.ext3 /dev/sdd2 
tune2fs -L rootfs /dev/sdd2 
 
 
В ядре включили поддержку ext3. Также в конфигурации ядра в разделе General Setup сняли галочку с опции Initial RAM filesystem and RAM disk support. Скопировали из папки /tftpboot/ файл zlinux в раздел для ядра. При копировании файл был переименован в uImage.bin. Далее всё содержимое папки /buildroot-2010.02/output/target скопировали при помощи команды: 
cp -a /home/user/src/buildroot-2010.02/ouptut/target/* /media/rootfs 
 
rootfs – название раздела на флешке, созданного для хранения корневой. 
 
Засунули флешку в плату. Зашли в U-Boot. В нём выполнили следующую последовательность действий: 
 
U-Boot> setenv bootargs rootwait=5 root=/dev/mmcblk0p2 console=ttyS0,115200 mem=64M 
 
U-Boot> mmc init 1 
Manufacturer ID:       1B 
OEM/Application ID:    534D 
Product name:          SD 
Product Revision:      1.0 
Product Serial Number: 2927664458 
Manufacturing Date:    09/08 
SD Card detected (RCA 45928) 
CSD data: 002f0032 5f5a83c7 6db7ffbf 96800045 
CSD structure version:   1.2 
MMC System Spec version: 12 
Card command classes:    3c7 
Read block length:       256 
Does not support partial reads 
Write block length:      1 
Does not support partial writes 
Does not support group WP 
Card capacity:          132120576 bytes 
File format:            1/2 
Write protection:         permanent 
mmc: Using 524288 cycles data timeout (DTOR=0x68) 
Card does not support 512 byte reads, aborting. 
.mmc1 is available 
 
U-Boot> fatload mmc 1 20400000 uImage.bin 
 
Видим, что процесс загрузки ядра проходит нормально. Загрузил ровно столько байт, сколь и весит uImage.bin 
 
После этой загрузки выполняем: 
 
U-Boot> bootm 20400000 
 
Вот то, что плата вернула в ответ: 
 
## Booting kernel from Legacy Image at 20400000 ... 
   Image Name:   Linux Kernel Image 
   Image Type:   ARM Linux Kernel Image (gzip compressed) 
   Data Size:    1787282 Bytes =  1.7 MB 
   Load Address: 20008000 
   Entry Point:  20008000 
   Verifying Checksum ... OK 
   Uncompressing Kernel Image ... OK 
 
Starting kernel ... 
 
Linux version 2.6.28 (user@debian) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #51 Thu Aug 12 04:44:32 EDT 2010 
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 
CPU: VIVT data cache, VIVT instruction cache 
Machine: Starterkit.ru SK-AT91SAM9XXXXX-SIMXXX 
Memory policy: ECC disabled, Data cache writeback 
Clocks: CPU 200 MHz, master 100 MHz, main 12.000 MHz 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256 
Kernel command line: rootwait=5 root=/dev/mmcblk0p2 console=ttyS0,115200 mem=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: 61200KB available (3268K code, 264K data, 124K init) 
Calibrating delay loop... 99.73 BogoMIPS (lpj=498688) 
Mount-cache hash table entries: 512 
CPU: Testing write buffer coherency: ok 
net_namespace: 288 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 
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 
NetWinder Floating Point Emulator V0.97 (double precision) 
JFFS2 version 2.2. (NAND) (SUMMARY)  б╘ 2001-2006 Red Hat, Inc. 
yaffs Mar 27 2010 12:35:28 Installing. 
msgmni has been set to 119 
alg: No test for stdrng (krng) 
io scheduler noop registered (default) 
Console: switching to colour frame buffer device 60x34 
fb0: Hecuba frame buffer device, using 510K of video memory 
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 0xfffb8000 (irq = 8) is a ATMEL_SERIAL 
brd: module loaded 
loop: module loaded 
ssc ssc.0: Atmel SSC device at 0xc48f8000 (irq 14) 
PPP generic driver version 2.4.2 
PPP Deflate Compression module registered 
PPP BSD Compression module registered 
PPP MPPE Compression module registered 
NET: Registered protocol family 24 
PPPoL2TP kernel driver, V1.0 
MACB_mii_bus: probed 
eth0: Atmel MACB at 0xfffc4000 irq 21 (00:1f:f2:00:00:00) 
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:01, 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) 
Scanning device for bad blocks 
Creating 2 MTD partitions on "atmel_nand": 
0x00000000-0x00800000 : "Partition 1" 
0x00800000-0x10000000 : "Partition 2" 
atmel_spi atmel_spi.1: Atmel SPI Controller at 0xfffcc000 (irq 13) 
usbmon: debugfs is not available 
ohci_hcd: 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 
input: HP Jornada touchscreen as /class/input/input0 
i2c /dev entries driver 
usbcore: registered new interface driver usbhid 
usbhid: v2.6:USB HID core driver 
Advanced Linux Sound Architecture Driver Version 1.0.18rc3. 
tlv320aic23b spi1.0: tlv320aic23b: supported bitrate is 47348 (66 divider) 
mmc0: host does not support reading read-only switch. assuming write-enable. 
mmc0: new SD card at address b368 
ALSA device list: 
  #0: AT91SAM9260 external CODEC on irq 14 
TCP cubic registered 
NET: Registered protocol family 17 
mmcblk0: mmc0:b368 SD    1.88 GiB 
 mmcblk0:<7>mmc0: starting CMD18 arg 00000000 flags 000000b5 
RPC: Registered udp transport module. 
RPC: Registered tcp transport module. 
 p1 p2 
kjournald starting.  Commit interval 5 seconds 
EXT3 FS on mmcblk0p2, internal journal 
EXT3-fs: recovery complete. 
EXT3-fs: mounted filesystem with ordered data mode. 
VFS: Mounted root (ext3 filesystem). 
Freeing init memory: 124K 
 
 
И всё. На этом месте плата намертво зависает. Пожалуйста, может быть посоветуете что-нибудь? Что мы делаем не правильно?  |  
		 |  
		 
	 |  
	| 
		
	 | 
	
		
	 |   
 |   
	
	| Jury093 | 
	
		
	 |  
	
		
		  |  
		 |  
		 |  
		 |  
		 |  
		
  |  
		| Пункты: 54288 |  
		| Регистрация: 25.05.2009 |  
		| Пол: Мужчина |  
		| Из: Санкт-Петербург |  
		 
	 | 
		
		попробуйте перенести корневую слегка "по другому" 
заархивируйте каталог с корневой а потом распакуйте архив на флешке. возможно у вас симлинки неправильно скопировались.. 
или ключик -s для команды cp 
 
еще вариант - попробовать EXT2  |  
		 На любой вопрос есть любой ответ. |  
		 
	 |  
	| 
		
	 | 
	
		
	 |   
 |   
	
	| Gregory | 
	
		
	 |  
	
		
		  |  
		 |  
		 |  
		 |  
		 |  
		
  |  
		 |  
		| Регистрация: 23.07.2010 |  
		 |  
		 |  
		 
	 | 
		
		Попробовали ext2, но не помогло. У нас есть подозрения вот на какую вещь. мы в корневой, перед тем как скопировать её на флешку, создали файлы: 
 
mknod /home/user/src/buildroot-2010.02/output/target/dev/mmcblk0 b 179 0  
mknod /home/user/src/buildroot-2010.02/output/target/dev/mmcblk0p1 b 179 1  
mknod /home/user/src/buildroot-2010.02/output/target/dev/mmcblk0p2 b 179 2  
mknod /home/user/src/buildroot-2010.02/output/target/dev/mmcblk0p3 b 179 3  
 
Есть подозрение, что мы тут с цифрами немного перемудрили.  |  
		 |  
		 
	 |  
	| 
		
	 | 
	
		
	 |   
 |   
	
	| Gregory | 
	
		
	 |  
	
		
		  |  
		 |  
		 |  
		 |  
		 |  
		
  |  
		 |  
		| Регистрация: 23.07.2010 |  
		 |  
		 |  
		 
	 | 
		
		Всем большое спасибо. Всё заработало. Всё дело было в правах на /dev/mmc* файлы. Если коротко, то мы сделали вот что. Загрузились с NANDFlash и стали ковырятся через плату в SD-карте. После втыкания в плату карточка обнаружила себя как: 
mmc0: host does not support reading read-only switch. assuming write-enable. 
mmc0: new SD card at address b368 
mmcblk0: mmc0:b368 SD    1.88 GiB 
 mmcblk0:<7>mmc0: starting CMD18 arg 00000000 flags 000000b5 
 p1 p2 
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended 
FAT: IO charset iso8859-1 not found 
 
Ну а дальше уже... 
 
# mount 
rootfs on / type rootfs (rw) 
proc on /proc type proc (rw) 
devpts on /dev/pts type devpts (rw,mode=600) 
tmpfs on /tmp type tmpfs (rw) 
sysfs on /sys type sysfs (rw) 
mdev on /dev type tmpfs (rw) 
devpts on /dev/pts type devpts (rw,mode=600) 
/dev/mtdblock1 on /mnt/nand type yaffs (rw) 
/dev/mmcblk0p2 on /mnt/mmcblk0p2 type ext2 (rw,sync,errors=continue) 
/dev/mmcblk0p1 on /mnt/mmcblk0p1 type msdos (rw,sync,fmask000,dmask000,allow_utime022,codepage=cp437) 
# 
 
# ls -l /dev/mmc* 
brw-rw----    1 root     root     179,   0 Dec 31 18:07 /dev/mmcblk0 
brw-rw----    1 root     root     179,   1 Dec 31 18:07 /dev/mmcblk0p1 
brw-rw----    1 root     root     179,   2 Dec 31 18:07 /dev/mmcblk0p2 
# 
 
# ls -l /mnt/mmcblk0p2/ 
drwxr-xr-x    2 default  default      4096 Aug 12  2010 bin 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 boot 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 config 
drwxr-xr-x    4 default  default      4096 Dec 31 17:00 dev 
drwxr-xr-x    7 default  default      4096 Aug 12  2010 etc 
drwxr-xr-x    3 default  default      4096 Mar 20  2010 home 
lrwxrwxrwx    1 default  default         9 Aug 13  2010 init -> sbin/init 
drwxr-xr-x    3 default  default      4096 Aug 12  2010 lib 
lrwxrwxrwx    1 default  default        11 Aug 13  2010 linuxrc -> bin/busybox 
drwxr-xr-x    4 default  default      4096 Mar 27  2010 mnt 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 opt 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 proc 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 root 
drwxr-xr-x    2 default  default      4096 Aug 12  2010 sbin 
drwxr-xr-x    2 default  default      4096 Mar 20  2010 sys 
drwxrwxrwt    2 default  default      4096 Mar 20  2010 tmp 
drwxr-xr-x    7 default  default      4096 Aug  5  2010 usr 
drwxr-xr-x   10 default  default      4096 Feb 26  2010 var 
# 
 
# ls -l /mnt/mmcblk0p2/dev/mmc* 
brw-r--r--    1 root     root     179,   0 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0 
brw-r--r--    1 root     root     179,   1 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p1 
brw-r--r--    1 root     root     179,   2 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p2 
brw-r--r--    1 root     root     179,   3 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p3 
# 
 
chmod 660  /mnt/mmcblk0p2/dev/mmc* 
 
# ls -l /mnt/mmcblk0p2/dev/mmc* 
brw-rw----    1 root     root     179,   0 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0 
brw-rw----    1 root     root     179,   1 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p1 
brw-rw----    1 root     root     179,   2 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p2 
brw-rw----    1 root     root     179,   3 Aug 13  2010 /mnt/mmcblk0p2/dev/mmcblk0p3 
# 
 
chown -R root:root /mnt/mmcblk0p2 
 
# ls -l /mnt/mmcblk0p2/ 
drwxr-xr-x    2 root     root         4096 Aug 12  2010 bin 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 boot 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 config 
drwxr-xr-x    4 root     root         4096 Dec 31 17:00 dev 
drwxr-xr-x    7 root     root         4096 Aug 12  2010 etc 
drwxr-xr-x    3 root     root         4096 Mar 20  2010 home 
lrwxrwxrwx    1 root     root            9 Aug 13  2010 init -> sbin/init 
drwxr-xr-x    3 root     root         4096 Aug 12  2010 lib 
lrwxrwxrwx    1 root     root           11 Aug 13  2010 linuxrc -> bin/busybox 
drwxr-xr-x    4 root     root         4096 Mar 27  2010 mnt 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 opt 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 proc 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 root 
drwxr-xr-x    2 root     root         4096 Aug 12  2010 sbin 
drwxr-xr-x    2 root     root         4096 Mar 20  2010 sys 
drwxrwxrwt    2 root     root         4096 Mar 20  2010 tmp 
drwxr-xr-x    7 root     root         4096 Aug  5  2010 usr 
drwxr-xr-x   10 root     root         4096 Feb 26  2010 var 
# 
 
 
НУ а потом попробовали загрузится с SD-карты снова и... загрузились.  |  
		 |  
		 
	 |  
	| 
		
	 | 
	
		
	 |   
 |   
 |  
  |