|
Вопрос про nandflash и UBIFS |
|
|
|
Feb 26 2010, 04:09
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Всем добрый день. Использую отладочную плату AT91SAM9261ek. Ядро linux-2.6.28 с патчем от linux4sam. Файловая система Angstrom, собранная с помощью openembedded. Есть 2 вопроса: 1) При загрузке из Dataflash (Bootstrap - в dataflash по 0х00 адресу, u-boot по 0х8400 адресу в dataflash, ядро по 0х42000 адресу в dataflash, jffs2-образ файловой системы по 0х400000 адресу в nandflash) все происходит нормально. Собственно этим способом я всегда и пользовалась. Возникла необходимость использовать загрузку с nandflash (Bootstrap - в dataflash по 0х00 адресу, u-boot по 0х20000 адресу в nandflash, ядро по 0х200000 адресу в nandflash, jffs2-образ файловой системы по 0х400000 адресу в nandflash). После прошивки первый запуск системы происходит без проблем (грузятся и u-boot, и ядро, монтируется файловая система, происходят операции чтения-записи...). После перезагрузки - как будто вся nandflash стерта((( В консоли только строка от Bootstrap'a, который прошит в dataflash ("Starting AT91 Bootstrap...") и тишина...Перед заливкой в nandflash в самбе выбираю пункты Enable nandflash и Erase All...В чем может быть проблема??? 2)Для ускорения загрузки решили попробовать ubifs вместо jffs2. Посмотрев обсуждения на форумах (и на electronix'е - http://electronix.ru/forum/index.php?showtopic=68478&hl=, и на www.at91.com), попробовала сделать аналогичное - файловую систему от Angstrom Openembedded с помощью mkfs.ubifs и ubinize превратила в образ rootfs.ubi и прошила так же по 0x400000 адресу в nandflash. Результаты получились такими же, какие описаны в упомянутых ветках форума. Ошибки те же, хотя там вроде как проблема решена... Лог загрузки: Код RomBOOT >Start AT91Bootstrap... Uncompressing Linux............................................................. Linux version 2.6.28 (nastya@nastya-desktop) (gcc version 4.2.4) #25 Thu Feb 250 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: Atmel AT91SAM9261-EK Warning: bad configuration page, trying to continue Memory policy: ECC disabled, Data cache writeback On node 0 totalpages: 16384 free_area_init_node: node 0, pgdat c02f9f8c, node_mem_map c0313000 Normal zone: 128 pages used for memmap Normal zone: 0 pages reserved Normal zone: 16256 pages, LIFO batch:3 Movable zone: 0 pages used for memmap Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 ubi.mtd=1 root=ubi0:rootfs row 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: 61748KB available (2796K code, 220K data, 92K init) Calibrating delay loop... 99.12 BogoMIPS (lpj=495616) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 288 bytes NET: Registered protocol family 16 AT91: Power Management AT91: Starting after power-restored wakeup 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) пїЅВ© 2001-2006 Red Hat, Inc. msgmni has been set to 120 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) atmel_lcdfb atmel_lcdfb.0: 525KiB frame buffer at 23a00000 (mapped at ffc00000) Console: switching to colour frame buffer device 80x26 atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00600000 (mapped at c48ae000), 1 atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL dm9000 Ethernet Driver, V1.31 dm9000 dm9000.0: eth%d: Invalid ethernet MAC address. Please set using ifconfig eth0: dm9000e at c48b2000,c48b6044 IRQ 107 MAC: 00:00:00:00:00:00 (chip) Driver 'sd' needs updating - please use bus_type methods NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bi) AT91 NAND: 8-bit, Software ECC Scanning device for bad blocks Creating 2 MTD partitions on "atmel_nand": 0x00000000-0x00040000 : "Partition 1" 0x00040000-0x10000000 : "Partition 2" UBI: attaching mtd1 to ubi0 UBI DBG (pid 1): io_init: min_io_size 2048 UBI DBG (pid 1): io_init: hdrs_min_io_size 512 UBI DBG (pid 1): io_init: ec_hdr_alsize 512 UBI DBG (pid 1): io_init: vid_hdr_alsize 512 UBI DBG (pid 1): io_init: vid_hdr_offset 512 UBI DBG (pid 1): io_init: vid_hdr_aloffset 512 UBI DBG (pid 1): io_init: vid_hdr_shift 0 UBI DBG (pid 1): io_init: leb_start 2048 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 129024 bytes UBI: smallest flash I/O unit: 2048 UBI: sub-page size: 512 UBI: VID header offset: 512 (aligned 512) UBI: data offset: 2048 UBI DBG (pid 1): ubi_scan: process PEB 0 UBI DBG (pid 1): ubi_scan: process PEB 1 UBI DBG (pid 1): ubi_scan: process PEB 2 UBI DBG (pid 1): ubi_scan: process PEB 3 UBI DBG (pid 1): ubi_scan: process PEB 4 UBI DBG (pid 1): ubi_scan: process PEB 5 UBI DBG (pid 1): ubi_scan: process PEB 6 UBI DBG (pid 1): ubi_scan: process PEB 7 UBI DBG (pid 1): ubi_scan: process PEB 8 UBI DBG (pid 1): ubi_scan: process PEB 9 UBI DBG (pid 1): ubi_scan: process PEB 10 UBI DBG (pid 1): ubi_scan: process PEB 11 UBI DBG (pid 1): ubi_scan: process PEB 12 UBI DBG (pid 1): ubi_scan: process PEB 13 UBI DBG (pid 1): ubi_scan: process PEB 14 UBI DBG (pid 1): ubi_scan: process PEB 15 UBI DBG (pid 1): ubi_scan: process PEB 16 UBI DBG (pid 1): ubi_scan: process PEB 17 UBI DBG (pid 1): ubi_scan: process PEB 18 UBI DBG (pid 1): ubi_scan: process PEB 19 UBI DBG (pid 1): ubi_scan: process PEB 20 UBI DBG (pid 1): ubi_scan: process PEB 21 UBI DBG (pid 1): ubi_scan: process PEB 22 UBI DBG (pid 1): ubi_scan: process PEB 23 UBI DBG (pid 1): ubi_scan: process PEB 24 UBI DBG (pid 1): ubi_scan: process PEB 25 UBI DBG (pid 1): ubi_scan: process PEB 26 UBI DBG (pid 1): ubi_scan: process PEB 27 UBI DBG (pid 1): ubi_scan: process PEB 28 UBI DBG (pid 1): ubi_scan: process PEB 29 UBI DBG (pid 1): ubi_scan: process PEB 30 UBI error: validate_ec_hdr: bad VID header offset 2048, expected 512 UBI error: validate_ec_hdr: bad EC header Erase counter header dump: magic 0x55424923 version 1 ec 0 vid_hdr_offset 2048 data_offset 4096 hdr_crc 0x7fb7d50c erase counter header hexdump: 00000000: 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 . 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 . [<c002400c>] (dump_stack+0x0/0x14) from [<c0198e0c>] (ubi_io_read_ec_hdr+0x2f8/) [<c0198b14>] (ubi_io_read_ec_hdr+0x0/0x368) from [<c019bee8>] (ubi_scan+0x164/0) [<c019bd84>] (ubi_scan+0x0/0x71c) from [<c0193360>] (ubi_attach_mtd_dev+0x580/0) [<c0192de0>] (ubi_attach_mtd_dev+0x0/0xc74) from [<c00163cc>] (ubi_init+0x154/0) [<c0016278>] (ubi_init+0x0/0x280) from [<c001f320>] (__exception_text_end+0x60/) [<c001f2c0>] (__exception_text_end+0x0/0x190) from [<c000872c>] (kernel_init+0x) r8:00000000 r7:00000000 r6:00000000 r5:c001ab84 r4:c001ab10 [<c00086bc>] (kernel_init+0x0/0xd8) from [<c003820c>] (do_exit+0x0/0x6cc) r5:00000000 r4:00000000 UBI error: ubi_io_read_ec_hdr: validation failed for PEB 30 UBI error: ubi_attach_mtd_dev: failed to attach by scanning, error -22 UBI error: ubi_init: cannot attach mtd1 UBI error: ubi_init: UBI error: cannot initialize UBI, error -22 atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12) mtd_dataflash spi0.0: AT45DB642x (8448 KBytes) pagesize 1056 bytes (OTP) 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. usbcore: registered new interface driver usbserial usbserial: USB Serial Driver core udc: at91_udc version 3 May 2006 mice: PS/2 mouse device common for all mice input: gpio-keys as /class/input/input0 ads7846 spi0.2: touchscreen, irq 29 input: ADS784x Touchscreen as /class/input/input1 usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver TCP cubic registered NET: Registered protocol family 17 UBIFS DBG (pid 1): ubifs_get_sb: name ubi0:rootfs, flags 0x8000 UBI DBG (pid 1): ubi_open_volume_nm: open volume rootfs, mode 1 UBIFS error (pid 1): ubifs_get_sb: cannot open "ubi0:rootfs", error -19 VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,255) Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 261888 mtdblock1 (driver?) 1f02 8448 mtdblock2 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255) mkfs.ubifs и ubinizе собраны из исходников git clone git://git.infradead.org/mtd-utils.git В ядре включена поддержка UBI и файловой системы UBIFS. Пожалуйста, подскажите, если кто решал уже эти проблемы) Спасибо.
|
|
|
|
|
Feb 26 2010, 09:51
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 26 2010, 11:51)  Это, ИМХО, не соответствует тому, как Вы прошиваете у-бут, ядро и ФС из u-boot'а (или ем Вы прошиваете). http://free-electrons.com/doc/flash-filesystems.odpЗабыла сказать - бутстрап настроен так, что он прыгает сразу же на адрес, по которому прошито ядро в nandflash (на 0х200000). Распаковка и загрузка ядра происходит без у-бута (он даже не прошит по адресу 0х20000)
|
|
|
|
|
Feb 26 2010, 10:39
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 26 2010, 14:02)  Передайте ему нормальный параметр root= . В теме на которвую Вы же ссылаетесь, это обуждалось root=/dev/mtdblock1 . И что "root=ubi0:rootfs row" значит row? rw или ro? Почему??? В той теме параметр bootargs равен Код console=ttyS0,115200 ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,chk_data_crc rw где rw - я так понимаю, параметр, указывающий на то, что монтировать файловую систему на чтение/запись...Или Вы другое имеете в виду???
|
|
|
|
|
Feb 26 2010, 10:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
В той теме все завелось после пропатчивания. Вам даже ядро предлагает варианты: Код Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 261888 mtdblock1 (driver?) 1f02 8448 mtdblock2 (driver?) Стоит попробовать. Из первого Вашего сообщения я вижу, то выпередаете Код Kernel command line: mem=64M console=ttyS0,115200 ubi.mtd=1 root=ubi0:rootfs row Про последний row я и спрашивал.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Feb 26 2010, 11:55
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 26 2010, 14:45)  В той теме все завелось после пропатчивания. Вам даже ядро предлагает варианты: Код Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 261888 mtdblock1 (driver?) 1f02 8448 mtdblock2 (driver?) Стоит попробовать. эх, не могу сообразить, чем пропатчить-то...патч с linux4sam я уже применила...
|
|
|
|
|
Feb 26 2010, 12:06
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 26 2010, 16:03)  Вот уж не знаю, про что VDV писал в том топике. А с mtdblock1 не заработало? C mtdblock1 ядро начинает сканировать flash - и появляются сообщения типа emty scan block jffs2... - в таком роде...
|
|
|
|
|
Feb 26 2010, 16:37
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 26 2010, 16:22)  А Вы пытаетесь решить проблемму из пункта 1 или 2?
Если два, то параметр rootfstype=ubifs Вы передаете? Я прошу прощения за неточности. Снова вернулась к загрузке из dataflash вместе с убутом (так проще менять параметры загрузки ядра). Ситуация следующая: При передаче ядру следующих параметров: Код set bootargs 'mem=64M console=ttyS0,115200 ubi.mtd=1 root=/dev/mtdblock1 rootfstype=ubifs loglevel=8 rootflags=bulk_read,chk_data_crc rw' Лог такой: Код Uncompressing Linux........................................................................... ....................... done, booting the kernel. Linux version 2.6.28 (nastya@nastya-desktop) (gcc version 4.2.4) #26 Fri Feb 26 10:40:27 EET 2010 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: Atmel AT91SAM9261-EK Ignoring unrecognised tag 0x54410008 Memory policy: ECC disabled, Data cache writeback On node 0 totalpages: 16384 free_area_init_node: node 0, pgdat c02fbf8c, node_mem_map c0315000 Normal zone: 128 pages used for memmap Normal zone: 0 pages reserved Normal zone: 16256 pages, LIFO batch:3 Movable zone: 0 pages used for memmap Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 ubi.mtd=1 root=/dev/mtdblock1 rootfstype=ubifs loglevel=8 rootflags=bulk_read,chk_data_crc rw 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: 61748KB available (2804K code, 220K data, 92K init) Calibrating delay loop... 99.12 BogoMIPS (lpj=495616) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 288 bytes NET: Registered protocol family 16 AT91: Power Management AT91: Starting after power-restored wakeup 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) В© 2001-2006 Red Hat, Inc. msgmni has been set to 120 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) atmel_lcdfb atmel_lcdfb.0: 525KiB frame buffer at 23a00000 (mapped at ffc00000) Console: switching to colour frame buffer device 80x26 atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00600000 (mapped at c48ae000), irq 21 atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL dm9000 Ethernet Driver, V1.31 eth0: dm9000e at c48b2000,c48b6044 IRQ 107 MAC: 3a:1f:34:08:54:54 (chip) Driver 'sd' needs updating - please use bus_type methods NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit) AT91 NAND: 8-bit, Software ECC Scanning device for bad blocks Creating 2 MTD partitions on "atmel_nand": 0x00000000-0x00040000 : "Partition 1" 0x00040000-0x10000000 : "Partition 2" UBI: attaching mtd1 to ubi0 UBI DBG (pid 1): io_init: min_io_size 2048 UBI DBG (pid 1): io_init: hdrs_min_io_size 512 UBI DBG (pid 1): io_init: ec_hdr_alsize 512 UBI DBG (pid 1): io_init: vid_hdr_alsize 512 UBI DBG (pid 1): io_init: vid_hdr_offset 512 UBI DBG (pid 1): io_init: vid_hdr_aloffset 512 UBI DBG (pid 1): io_init: vid_hdr_shift 0 UBI DBG (pid 1): io_init: leb_start 2048 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 129024 bytes UBI: smallest flash I/O unit: 2048 UBI: sub-page size: 512 UBI: VID header offset: 512 (aligned 512) UBI: data offset: 2048 UBI DBG (pid 1): ubi_scan: process PEB 0 UBI DBG (pid 1): ubi_scan: process PEB 1 .................. UBI DBG (pid 1): ubi_scan: process PEB 2044 UBI DBG (pid 1): ubi_scan: process PEB 2045 UBI DBG (pid 1): ubi_scan: scanning is finished UBI DBG (pid 1): process_lvol: check layout volume UBI error: vtbl_check: too large reserved_pebs 8127, good PEBs 2046 UBI error: vtbl_check: volume table check failed: record 0, error 9 Volume table record 0 dump: reserved_pebs 8127 alignment 1 data_pad 0 vol_type 1 upd_marker 0 name_len 6 name rootfs crc 0xaa2b7c3 UBI error: ubi_attach_mtd_dev: failed to attach by scanning, error -22 UBI error: ubi_init: cannot attach mtd1 UBI error: ubi_init: UBI error: cannot initialize UBI, error -22 atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12) mtd_dataflash spi0.0: AT45DB642x (8448 KBytes) pagesize 1056 bytes (OTP) 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. usbcore: registered new interface driver usbserial usbserial: USB Serial Driver core udc: at91_udc version 3 May 2006 mice: PS/2 mouse device common for all mice input: gpio-keys as /class/input/input0 ads7846 spi0.2: touchscreen, irq 29 input: ADS784x Touchscreen as /class/input/input1 usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver TCP cubic registered NET: Registered protocol family 17 UBIFS DBG (pid 1): ubifs_get_sb: name /dev/root, flags 0x8000 UBIFS error (pid 1): ubifs_get_sb: cannot open "/dev/root", error -22 List of all partitions: 1f00 256 mtdblock0 (driver?) 1f01 261888 mtdblock1 (driver?) 1f02 8448 mtdblock2 (driver?) No filesystem could mount root, tried: ubifs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1) При передаче следующих параметров: Код set bootargs 'console=ttyS0,115200 ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,chk_data_crc rw' лог загрузки следующий: Код Starting kernel ...
Uncompressing Linux........................................................................... ....................... done, booting the kernel. Linux version 2.6.28 (nastya@nastya-desktop) (gcc version 4.2.4) #26 Fri Feb 26 10:40:27 EET 2010 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: Atmel AT91SAM9261-EK Ignoring unrecognised tag 0x54410008 Memory policy: ECC disabled, Data cache writeback Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: console=ttyS0,115200 ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,chk_data_crc rw 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: 61748KB available (2804K code, 220K data, 92K init) Calibrating delay loop... 99.12 BogoMIPS (lpj=495616) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 288 bytes NET: Registered protocol family 16 AT91: Power Management AT91: Starting after power-restored wakeup 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) \0xc2\0xa9 2001-2006 Red Hat, Inc. msgmni has been set to 120 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) atmel_lcdfb atmel_lcdfb.0: 525KiB frame buffer at 23a00000 (mapped at ffc00000) Console: switching to colour frame buffer device 80x26 atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00600000 (mapped at c48ae000), irq 21 atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL dm9000 Ethernet Driver, V1.31 eth0: dm9000e at c48b2000,c48b6044 IRQ 107 MAC: 3a:1f:34:08:54:54 (chip) Driver 'sd' needs updating - please use bus_type methods NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit) AT91 NAND: 8-bit, Software ECC Scanning device for bad blocks Creating 2 MTD partitions on "atmel_nand": 0x00000000-0x00040000 : "Partition 1" 0x00040000-0x10000000 : "Partition 2" UBI: attaching mtd1 to ubi0 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 129024 bytes UBI: smallest flash I/O unit: 2048 UBI: sub-page size: 512 UBI: VID header offset: 512 (aligned 512) UBI: data offset: 2048 UBI error: vtbl_check: too large reserved_pebs 8127, good PEBs 2046 UBI error: vtbl_check: volume table check failed: record 0, error 9 UBI error: ubi_attach_mtd_dev: failed to attach by scanning, error -22 UBI error: ubi_init: cannot attach mtd1 UBI error: ubi_init: UBI error: cannot initialize UBI, error -22 atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12) mtd_dataflash spi0.0: AT45DB642x (8448 KBytes) pagesize 1056 bytes (OTP) 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. usbcore: registered new interface driver usbserial usbserial: USB Serial Driver core udc: at91_udc version 3 May 2006 mice: PS/2 mouse device common for all mice input: gpio-keys as /class/input/input0 ads7846 spi0.2: touchscreen, irq 29 input: ADS784x Touchscreen as /class/input/input1 usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver TCP cubic registered NET: Registered protocol family 17 UBIFS error (pid 1): ubifs_get_sb: cannot open "ubi0:rootfs", error -19 VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 261888 mtdblock1 (driver?) 1f02 8448 mtdblock2 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) Все-таки, видимо, Вы были правы, Dron Gus, насчет того, что ядру надо передавать root=/dev/mtdblock1. Но ошибка все равно никуда не девается... Скомпилировала также UBI-utils'ы под ARM (ubiattach, ubimkvol и т. д.), но их применение (в обычной своей ФС хотела подмонтировать UBI-образ) не увенчалось успехом(((
|
|
|
|
|
Feb 26 2010, 20:44
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(ZAA @ Feb 26 2010, 19:37)  Все-таки, видимо, Вы были правы, Dron Gus, насчет того, что ядру надо передавать root=/dev/mtdblock1. Но ошибка все равно никуда не девается... Скомпилировала также UBI-utils'ы под ARM (ubiattach, ubimkvol и т. д.), но их применение (в обычной своей ФС хотела подмонтировать UBI-образ) не увенчалось успехом((( Похоже,все же я не прав (root=ubi0:rootfs - правильно). Пока на практике нет возможности проверить. Но активно изучаю вопрос. Посмотрите здесь http://wiki.metrotek.spb.ru/wiki/Colibri_P...rchid_%2B_Linux может что полезное найдете.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Feb 27 2010, 04:12
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(Dron_Gus @ Feb 27 2010, 00:44)  Похоже,все же я не прав (root=ubi0:rootfs - правильно). Пока на практике нет возможности проверить. Но активно изучаю вопрос. Посмотрите здесь http://wiki.metrotek.spb.ru/wiki/Colibri_P...rchid_%2B_Linux может что полезное найдете. Эх, спасибо))) БУду смотреть) Мне не очень понятно следующее - можно ли как-то, загрузившись в нормальную рабочую файловую систему (jffs2), создать новый раздел - например /dev/mtdblock2, потом Код ubiformat /dev/mtd2 ubiattach /dev/ubi_ctrl -m 2 ubimkvol /dev/ubi0 -N rootfs -s 'свой размер флешки' mount -t ubifs ubi0:rootfs /mnt/ubifs Или каким образом это все надо делать?? Как можно создать раздел новый и вообще нужно ли это делать??
|
|
|
|
|
Feb 27 2010, 07:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Партишны для нанд-флеша задаются в специфичном для вашей платы файле. В виде такой вот структуры Код static struct mtd_partition __initdata ek_nand_partition[] = { { .name = "Linux Kernel", .offset = 0, .size = SZ_16M, }, { .name = "Root FS", .offset = MTDPART_OFS_NXTBLK, .size = 120 * SZ_1M, }, { .name = "FS", .offset = MTDPART_OFS_NXTBLK, .size = 120 * SZ_1M, } }; Это я привел код из презентации http://free-electrons.com/doc/flash-filesystems.odpЗагрузиться с другого носителя и создать файловую систему можно. Еще можно сделать минимальный образ рам-диска. Но проще загрузиться с усб-флешки (например) и сделать все операции оттуда. Потом просто поменять root= в строке ядра и все. Теоретиески с ubifs умеет работать u-boot.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Feb 27 2010, 19:29
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Спасибо всем большое за советы и ответы)) Похоже наметились позитивные сдвиги. ДЕлаю так: 1) Разрешаю в ядре опцию Command line partition table parcing, чтобы можно было делить nandflash на разделы с помощью параметров, передаваемых ядру. 2) Записываю в nandflash по адресу 0x400000 образ файловой системы jffs2. Загружаюсь, передав ядру следующие параметры: Код set bootargs 'console=ttyS0,115200 mtdparts=atmel_nand:4096k(MyRootfs),40960k(Ubifs) root=/dev/mtdblock1 rw rootfstype=jffs2' где MyRootfs - это раздел, куда записан мой образ файловой системы, Ubifs - раздел, который я отвожу под будущую систему ubifs. 3) Загружаюсь в свою файловую систему. Чтобы убедиться в правильности создания разделов: Код cat /proc/mtd dev: size erasesize name mtd0: 00400000 00020000 "MyRootfs" mtd1: 02800000 00020000 "Ubifs" mtd2: 00840000 00000420 "spi0.0-AT45DB642x" Таким образом, продолжать работать будем с /dev/mtd1. 4)Указываем путь до ubi-utils, скомпилированных под ARM и скопированных на флешку: Код export PATH=/media/sda1/home/root/ubi-utils 5)Далее следующая последовательность действий: Форматируем нужный раздел под ubifs Код ubiformat /dev/mtd1 ubiattach /dev/ubi_ctrl -m 1 Создаем том на отформатированном разделе Код ubimkvol /dev/ubi0 --name=rootfs -m Эти данные (ubi0 и rootfs мы потом будем использовать для указания ядру, откуда монтировать файловую систему) Монтируем наш раздел на /mnt/ubifs Код mount -t ubifs ubi0:rootfs /mnt/ubifs/ Заходим в папку /mnt/ubifs и распаковываем туда за'tar'енный архив файловой системы, предварительно созданный на ПК и скопированный на флешку Код cd /mnt/ubifs tar xvf /media/sda1/home/root/myfs.rootfs.tar 6) Перезагружаемся и передаем ядру новые параметры: Код set bootargs 'console=ttyS0,115200 mtdparts=atmel_nand:4096k(MyRootfs),40960k(Ubifs) ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs rw' Пока исследования остановились на этом...KErnel Panic уже нет, что очень радует))) В понедельник продолжу)
|
|
|
|
|
Mar 4 2010, 15:10
|

Помогу, чем смогу
     
Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25

|
ZAA, где продолжение? У Вас получилось классное развернутое описание шагов.
Dron_Gus, сам был бы раз запустить u-boot в озу, чтобы он оттуда смог загрузить ядро. Сейчас столкнулся с тем, что на плате флэш с доп.защитой, для которой нет описания, но известно, что линуксовая утилита flashcp умеет с такими работать. А начальный загрузчик не изменишь, так как неизвестны параметры флэш.
--------------------
|
|
|
|
|
Mar 19 2010, 11:34
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(one_man_show @ Mar 4 2010, 18:10)  ZAA, где продолжение? У Вас получилось классное развернутое описание шагов. Прошу прощения, сегодня вечером отпишусь обязательно. Возникли другие неотложные дела)))
|
|
|
|
|
Mar 19 2010, 18:56
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
1.Записываем в Dataflash файл образа первичного загрузчика Bootstrap, скомпилированного для загрузки из dataflash по адресу 0x00000000. 2.Записываем в Dataflash файл образа вторичного загрузчика U-Boot по адресу 0x00008400. 3.Записываем в Dataflash файл образа ядра linux по адресу 0x00042000. 4.Во вкладке sam-ba выбираем nandflash и выполняем скрипты Enable Nandflash->EraseAll. 5.На съемном носителе (flash-карта памяти) создаем файловую систему из собранного с помощью Openembedded образа: cd /media/disk tar -xvf Angstrom-x11-gpe-image-glibc-ipk-2009.X-stable-at91sam9263ek.rootfs.tar 6.Включаем питание платы. Устанавливаем значение переменной окружения U-Boot: set bootargs 'console=ttyS0,115200 root=/dev/sda1 rw rootdelay=10 mtdparts=atmel_nand:2048k(Unused), 2048k(Kernel),-(rootfs)' где root=/dev/sda1 — указание ядру, откуда монтировать файловую систему; mtdparts=atmel_nand:2048k(Unused),2048k(Kernel),-(rootfs) — это указание ядру создать на устройстве atmel_nand три раздела со следующими названиями — Unused (неиспользуемое пространство на nandflash от адреса 0х00000000 до адреса 0х00200000), Kernel (пространство на nandflash, отведенное для ядра, начинающееся с адреса 0x00200000, заканчивающееся адресом 0х00400000), rootfs (все оставшееся пространство, начинающееся адресом 0х00400000). 7.Загружаемся, передав U-Boot команду boot. 8.Зайдя в систему под логином root, начинаем создание файловой системы UBIFS. 9.Чтобы убедиться в правильности создания ядром разделов на nandflash, в консоли набираем cat /proc/mtd: dev: size erasesize name mtd0: 00200000 00020000 "Unused" mtd1: 00200000 00020000 "Kernel" mtd2: 0fc00000 00020000 "rootfs" mtd3: 00840000 00000420 "spi0.0-AT45DB642x" 10.В папку на флешке предварительно были скопированы инструменты для работы с UBIFS, скомпилированные под ARM-платформу. Указываем путь до них. export PATH=/home/root/ubi-utils/:$PATH 11.Форматируем раздел, отведенный для файловой системы (rootfs): ubiformat /dev/mtd2 12.Присоединяем: ubiattach /dev/ubi_ctrl -m 2 13.Создаем логический том: ubimkvol /dev/ubi0 --name=rootfs -m 14.Создаем папку для монтирования будущей UBIFS-файловой системы: mkdir /mnt/ubifs 15.Монтируем еще пока пустую файловую систему: mount -t ubifs ubi0:rootfs /mnt/ubifs/ 16.Переходим в папку /mnt/ubifs: cd /mnt/ubifs 17.Разархивируем в эту папку tar-архив файловой системы, предвартельно скопированный на флешку: tar xvf /home/root/x11.rootfs.tar 18.Отмонтируем файловую систему: umount /mnt/ubifs 19.Выключаем питание платы. 20.Включаем плату и через sam-ba записываем в Dataflash образ первичного загрузчика Bootstrap, скомпилированного для загрузки из nandflash, по адресу 0x00000000. 21.В nandflash записываем образ ядра по адресу 0х00200000.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|