Сборка нового ядра (3.7.1) и загрузка с NAND на SK-MAT91SAM9G45
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Отдельный вопрос есть по bootstrap, но его я уже задал тут:
http://starterkit.ru/html/index.php?name=forum&op=view&id=15303#18804
Пока решил попробовать rootfs обновить на NAND (гружусь с SD), и, что-то, не выходит. структуру ek_nand_partition в board-sam9m10g45ek.c поправил в соответствии с данными в старом ядре. nand, вроде бы, видно:
Код atmel_nand: Use On Flash BBT
atmel_nand atmel_nand: Using dma0chan0 for DMA transfers.
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit), page size: 2048, OOB size: 64
atmel_nand atmel_nand: Fall back to CPU I/O
Bad block table found at page 131008, version 0x01
atmel_nand atmel_nand: Fall back to CPU I/O
atmel_nand atmel_nand: Fall back to CPU I/O
Bad block table found at page 130944, version 0x01
nand_read_bbt: bad block at 0x000006280000
nand_read_bbt: bad block at 0x00000aac0000
nand_read_bbt: bad block at 0x00000dba0000
nand_read_bbt: bad block at 0x00000e280000
Creating 2 MTD partitions on "atmel_nand":
0x000000000000-0x000001000000 : "Boot partition"
0x000001000000-0x000010000000 : "FS partition"
Но вот том (или как правильно ) не активируется
Код # ubiattach /dev/ubi_ctrl -m 1
UBI: attaching mtd1 to ubi0
UBI: scanning is finished
UBI error: ubi_read_volume_table: the layout volume was not found
UBI error: ubi_attach_mtd_dev: failed to attach mtd1, error -22
ubiattach: error!: cannot attach mtd1
error 22 (Invalid argument)
Это я с границами разделов промахнулся всё же (хотя как ? цифры те же), или дело в чём-то ещё ?
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
А, похоже, это я rootfs убил как-то на NAND: оно вообще с NAND не грузится теперь, и со старым ядром... Только понятнее не стало пока.
Вроде всё отформатировалось, правда ругалось "atmel_nand atmel_nand: Fall back to CPU I/O":
Код
# ubiattach /dev/ubi_ctrl -m 1
UBI: attaching mtd1 to ubi0
UBI: scanning is finished
atmel_nand atmel_nand: Fall back to CPU I/O
...
UBI: attached mtd1 (name "FS partition", size 240 MiB) to ubi0
UBI: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes
UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512
UBI: VID header offset: 512 (aligned 512), data offset: 2048
UBI: good PEBs: 1912, bad PEBs: 8, corrupted PEBs: 0
UBI: user volume: 0, internal volumes: 1, max. volumes count: 128
UBI: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 28227920
UBI: available PEBs: 1876, total reserved PEBs: 36, PEBs reserved for bad PEB handling: 32
UBI: background thread "ubi_bgt0d" started, PID 438
UBI device number 0, total 1912 LEBs (246693888 bytes, 235.3 MiB), available 1876 LEBs (242049024 bytes, 230.8 MiB), LEB size 129024 bytes (126)
Далее
Код
# ubimkvol /dev/ubi0 -N nandfs -s 200MiB
atmel_nand atmel_nand: Fall back to CPU I/O
...
Volume ID 0, size 1626 LEBs (209793024 bytes, 200.1 MiB), LEB size 129024 bytes (126.0 KiB), dynamic, name "nandfs", alignment 1
# cd /tmp
# mkdir 1
# mount -t ubifs ubi0:nandfs 1
mount: mounting ubi0:nandfs on 1 failed: No such device
Непонятно. Тем более
Код
# ubinfo /dev/ubi0 -a
<skip>
Volume ID: 0 (on ubi0)
Type: dynamic
Alignment: 1
Size: 1626 LEBs (209793024 bytes, 200.1 MiB)
State: OK
Name: nandfs
Character device major/minor: 251:1
Вроде как, ubi-устройство есть... На всякий случай:
Код
# zcat /proc/config.gz |grep -i nand|grep -v CONFIG_CMDLINE
CONFIG_MTD_NAND_ECC=y
# CONFIG_MTD_NAND_ECC_SMC is not set
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_BCH=y
CONFIG_MTD_NAND_ECC_BCH=y
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_GPIO is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_DOCG4 is not set
CONFIG_MTD_NAND_ATMEL=y
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ONENAND is not set
Jury093
Пункты: 54259
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
полагаю, что у вас ошибка в имени раздела и возможно не хватает
ubiformat ..
у меня все работает после вот таких действий (цифры и имена по вкусу):
Код ubiformat /dev/mtd1 -y
ubiattach /dev/ubi_ctrl -m 1
ubimkvol /dev/ubi0 -m -N rootfs
mount -t ubifs ubi:rootfs /mnt
в логе загрузки
Код atmel_nand atmel_nand: No DMA support for NAND access.
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit), page size: 2048, OOB size: 64
Scanning device for bad blocks
Bad eraseblock 288 at 0x000002400000
Bad eraseblock 331 at 0x000002960000
Bad eraseblock 651 at 0x000005160000
Bad eraseblock 870 at 0x000006cc0000
Bad eraseblock 1175 at 0x0000092e0000
Bad eraseblock 1179 at 0x000009360000
Bad eraseblock 1458 at 0x00000b640000
Bad eraseblock 1490 at 0x00000ba40000
Bad eraseblock 1513 at 0x00000bd20000
Bad eraseblock 1648 at 0x00000ce00000
Bad eraseblock 1728 at 0x00000d800000
Bad eraseblock 1875 at 0x00000ea60000
Bad eraseblock 1924 at 0x00000f080000
Creating 2 MTD partitions on "atmel_nand":
0x000000000000-0x000001000000 : "kernel"
0x000001000000-0x000010000000 : "rootfs"
Код UBI: attaching mtd1 to ubi0
UBI DBG (pid 12098): ubi_attach_mtd_dev: sizeof(struct ubi_ainf_peb) 48
UBI DBG (pid 12098): ubi_attach_mtd_dev: sizeof(struct ubi_wl_entry) 20
UBI DBG (pid 12098): io_init: min_io_size 2048
UBI DBG (pid 12098): io_init: max_write_size 2048
UBI DBG (pid 12098): io_init: hdrs_min_io_size 512
UBI DBG (pid 12098): io_init: ec_hdr_alsize 512
UBI DBG (pid 12098): io_init: vid_hdr_alsize 512
UBI DBG (pid 12098): io_init: vid_hdr_offset 512
UBI DBG (pid 12098): io_init: vid_hdr_aloffset 512
UBI DBG (pid 12098): io_init: vid_hdr_shift 0
UBI DBG (pid 12098): io_init: leb_start 2048
UBI DBG (pid 12098): io_init: max_erroneous 192
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 12098): scan_all: scanning is finished
UBI: max. sequence number: 1410
UBI: attached mtd1 to ubi0
UBI: MTD device name: "rootfs"
UBI: MTD device size: 240 MiB
UBI: number of good PEBs: 1907
UBI: number of bad PEBs: 13
UBI: number of corrupted PEBs: 0
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 1907
UBI: number of PEBs reserved for bad PEB handling: 19
UBI: max/mean erase counter: 64/8
UBI: image sequence number: 0
UBI: background thread "ubi_bgt0d" started, PID 12100
UBIFS DBG (pid 12104): ubifs_bg_thread: background thread "ubifs_bgt0_0" started, PID 12104
UBIFS: recovery needed
UBIFS DBG (pid 12103): set_bud_lprops: LEB 1151 lp: 129024 free 7328 dirty replay: 0 free 1440 dirty
UBIFS DBG (pid 12103): set_bud_lprops: LEB 1152 lp: 129024 free 5296 dirty replay: 0 free 760 dirty
UBIFS DBG (pid 12103): set_bud_lprops: LEB 677 lp: 129024 free 3760 dirty replay: 40960 free 10536 dirty
UBIFS: recovery completed
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
UBIFS: file system size: 241661952 bytes (235998 KiB, 230 MiB, 1873 LEBs)
UBIFS: journal size: 12128256 bytes (11844 KiB, 11 MiB, 94 LEBs)
UBIFS: media format: w4/r0 (latest is w4/r0)
UBIFS: default compressor: lzo
UBIFS: reserved for root: 4952683 bytes (4836 KiB)
UBIFS DBG (pid 12103): mount_ubifs: compiled on: Nov 26 2012 at 22:37:24
UBIFS DBG (pid 12103): mount_ubifs: min. I/O unit size: 2048 bytes
UBIFS DBG (pid 12103): mount_ubifs: max. write size: 2048 bytes
UBIFS DBG (pid 12103): mount_ubifs: LEB size: 129024 bytes (126 KiB)
UBIFS DBG (pid 12103): mount_ubifs: data journal heads: 1
UBIFS DBG (pid 12103): mount_ubifs: UUID: 43527BF5-2F4E-4C1D-B8C0-C44680DDE7A0
UBIFS DBG (pid 12103): mount_ubifs: big_lpt 0
UBIFS DBG (pid 12103): mount_ubifs: log LEBs: 5 (3 - 7)
UBIFS DBG (pid 12103): mount_ubifs: LPT area LEBs: 2 (8 - 9)
UBIFS DBG (pid 12103): mount_ubifs: orphan area LEBs: 1 (10 - 10)
UBIFS DBG (pid 12103): mount_ubifs: main area LEBs: 1873 (11 - 1883)
UBIFS DBG (pid 12103): mount_ubifs: index LEBs: 23
UBIFS DBG (pid 12103): mount_ubifs: total index bytes: 1906456 (1861 KiB, 1 MiB)
UBIFS DBG (pid 12103): mount_ubifs: key hash type: 0
UBIFS DBG (pid 12103): mount_ubifs: tree fanout: 8
UBIFS DBG (pid 12103): mount_ubifs: reserved GC LEB: 300
UBIFS DBG (pid 12103): mount_ubifs: first main LEB: 11
UBIFS DBG (pid 12103): mount_ubifs: max. znode size 240
UBIFS DBG (pid 12103): mount_ubifs: max. index node size 192
UBIFS DBG (pid 12103): mount_ubifs: node sizes: data 48, inode 160, dentry 56
UBIFS DBG (pid 12103): mount_ubifs: node sizes: trun 56, sb 4096, master 512
UBIFS DBG (pid 12103): mount_ubifs: node sizes: ref 64, cmt. start 32, orph 32
UBIFS DBG (pid 12103): mount_ubifs: max. node sizes: data 4144, inode 4256 dentry 312, idx 188
UBIFS DBG (pid 12103): mount_ubifs: dead watermark: 2048
UBIFS DBG (pid 12103): mount_ubifs: dark watermark: 6144
UBIFS DBG (pid 12103): mount_ubifs: LEB overhead: 560
UBIFS DBG (pid 12103): mount_ubifs: max. dark space: 11507712 (11238 KiB, 10 MiB)
UBIFS DBG (pid 12103): mount_ubifs: maximum bud bytes: 11483136 (11214 KiB, 10 MiB)
UBIFS DBG (pid 12103): mount_ubifs: BG commit bud bytes: 9330048 (9111 KiB, 8 MiB)
UBIFS DBG (pid 12103): mount_ubifs: current bud bytes 55296 (54 KiB, 0 MiB)
UBIFS DBG (pid 12103): mount_ubifs: max. seq. number: 143307
UBIFS DBG (pid 12103): mount_ubifs: commit number: 51
root@arm9260:~# uname -a
Linux arm9260 3.6.0 #33 PREEMPT Mon Nov 26 22:38:09 MSK 2012 armv5tejl GNU/Linux
root@arm9260:~#
Код root@arm9260:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 30M 0 30M 0% /lib/init/rw
udev 10M 12K 10M 1% /dev
tmpfs 30M 0 30M 0% /dev/shm
rootfs 856M 743M 70M 92% /
/dev/mmcblk0p1 17M 6.0M 11M 36% /boot
ubi:rootfs 217M 105M 108M 50% /mnt
На любой вопрос есть любой ответ.
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата полагаю, что у вас ошибка в имени раздела и возможно не хватает ubiformat ..
у меня все работает после вот таких действий (цифры и имена по вкусу):
Это из серии "слона-то я и не приметил". Кучу всего про NAND и UBI включил, а саму UBIFS - нет... Только вот интересно, а совместимость у UBIFS разных ядер есть, или нет ? Старое ядро (2.6.36-rc6) так и не грузится, теперь уже с ввновь созданным (с 3.7.1) разделом:
Код
Creating 2 MTD partitions on "atmel_nand":
0x000000000000-0x000001000000 : "Boot partition"
0x000001000000-0x000010000000 : "FS partition"
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: process_eb: bad image sequence number 92425759 in PEB 1916, expected 28227920
UBI error: ubi_init: cannot attach mtd1
Хотя вопрос, скорее, академический - всё равно ядро обновлять. Но вот если и с новым не заработает...
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
С новым ядром загрузилось. Теперь надо вопрос со сборкой bootstrap с watchdog решить: какой и как собирать...
Кстати, а вопрос с "atmel_nand atmel_nand: Fall back to CPU I/O" решился для 3.6 ?
sasamy
Пункты: 79222
Регистрация: 14.08.2009
Цитата
Кстати, а вопрос с "atmel_nand atmel_nand: Fall back to CPU I/O" решился для 3.6 ?
чтобы это решить надо большие изменения вносить в коде ФС для поддержки DMA, как я понял никто этим заниматься не хочет, ну а в этих сообщениях ничего страшного по сути нет - дайвер просто сообщает что не использует DMA там где буферы физически фрагментированы - закоментить чтобы глаза не мозолили и забить :)
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата закоментить чтобы глаза не мозолили и забить :)
Понятно. Тоже вариант. :)