Подскажите пожалуйста, столкнулся со следующей проблемой. Есть проверенная файловая система для nand, есть мое ядро Linux 2.6.34.12. Ядро зависает при попытке подключить блок mtdblok4: Waiting for root device /dev/mtdblock4... Поддержка MTD, NAND и jffs2 есть (делал исходя из документов TI). Из U-boot ядру передается следующая комманда: mem=32M consoleblank=0 console=ttyS2,115200n8 rw rootwait earlyprintk root=/dev/mtdblock4 rw rootfstype=jffs2 ip=off
Подскажите что можно сделать?
P.S.
Файловая система проверялась на купленной отладке, с их ядром версии 3.2.1 которая на моей плате упорно зависает на стадии Starting kernell... ()
Я использую AM1705, такой же и на отладке, различия в частоте (у меня 25, на отладке 24) и в используемом UARTE (у меня 2 на отладке 1).
Сейчас мучаю ядро версии 3.4, так как оно ближе к версии в отладке, и есть поддержка PHY установленного на моей плате. Кстати, обнаружил, что в исходниках прилагаемых к отладке были были внесены изменения, а именно добавлена esclayout и структура описывающая этот layout. Возможно есть еще изменения, так как настройки ядра идентичны, однако 3.4 не грузится на отладке, останавливается на том же месте.
Не получилось у меня сделать вложение, поэтому извините, но привожу в посте
Лог
U-Boot 2009.11 (May 05 2012 - 00:34:00)
DRAM: 32 MB
NAND: 256 MiB
Bad block table not found for chip 0
Bad block table found at page 130944, version 0x01
nand_bbt: ECC error while reading bad block table
nand_read_bbt: Bad block at 0x0000049e0000
nand_read_bbt: Bad block at 0x000006b40000
nand_read_bbt: Bad block at 0x000007320000
nand_read_bbt: Bad block at 0x00000dd60000
nand_read_bbt: Bad block at 0x00000f5a0000
Bad block table written to 0x00000ffe0000, version 0x01
In: serial
Out: serial
Err: serial
ARM Clock : 300000000 Hz
Net: Ethernet PHY: GENERIC @ 0x07
Hit any key to stop autoboot: 0
Loading from NAND 256MiB 3,3V 8-bit, offset 0x80000
Image Name: Linux-3.4.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2575008 Bytes = 2.5 MB
Load Address: c0008000
Entry Point: c0008000
## Booting kernel from Legacy Image at c0700000 ...
Image Name: Linux-3.4.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2575008 Bytes = 2.5 MB
Load Address: c0008000
Entry Point: c0008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Интересный факт, нашел еще одно различие в исходниках, и теперь на отладке при загрузке вылезает много следующих сообщений
jffs2: mtd->read(0x170 bytes from 0x168690) returned ECC error
jffs2: mtd->read(0x6d4 bytes from 0x16712c) returned ECC error
jffs2: mtd->read(0x224 bytes from 0x166ddc) returned ECC error
jffs2: mtd->read(0x2a8 bytes from 0x166d58) returned ECC error
jffs2: mtd->read(0x408 bytes from 0x165bf8) returned ECC error
jffs2: mtd->read(0x48c bytes from 0x165b74) returned ECC error
jffs2: mtd->read(0x514 bytes from 0x165aec) returned ECC error
jffs2: mtd->read(0x598 bytes from 0x165a68) returned ECC error
jffs2: mtd->read(0x620 bytes from 0x1659e0) returned ECC error
jffs2: mtd->read(0x6a4 bytes from 0x16595c) returned ECC error
jffs2: mtd->read(0x568 bytes from 0x165298) returned ECC error
jffs2: mtd->read(0x5f0 bytes from 0x165210) returned ECC error
jffs2: mtd->read(0x678 bytes from 0x165188) returned ECC error
jffs2: mtd->read(0x700 bytes from 0x165100) returned ECC error
jffs2: mtd->read(0x6ac bytes from 0x164954) returned ECC error
jffs2: mtd->read(0x730 bytes from 0x1648d0) returned ECC error
jffs2: mtd->read(0x7b4 bytes from 0x16484c) returned ECC error
jffs2: mtd->read(0x30 bytes from 0x1647d0) returned ECC error
jffs2: mtd->read(0xb8 bytes from 0x164748) returned ECC error
jffs2: mtd->read(0x13c bytes from 0x1646c4) returned ECC error
На своей плате проверить смогу только завтра.
Продолжаю искать различия.
Судя по логу, у Вас ядро не знает о nand почему-то.
Покажите еще .config Ваш, или сами проверьте, что нужные модули в ядре включены для nand, например в моем случае:
conf_3.5.3 $ grep MTD .config|grep -v "^#"
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_OF_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_SWAP=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_DATAFLASH=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
CONFIG_MTD_NAND_BCH=y
CONFIG_MTD_NAND_ECC_BCH=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_ATMEL=y
CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
CONFIG_OF_MTD=y
+ CONFIG_BLOCK=y
вроде и еще может, что мог пропустить.
У меня например при загрузки видно, что нанд проинитился:
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit), page size: 2048, OOB size: 64
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: bad block at 0x000001060000
nand_read_bbt: bad block at 0x0000013c0000
nand_read_bbt: bad block at 0x000006140000
nand_read_bbt: bad block at 0x00000e680000
Creating 5 MTD partitions on "atmel_nand":
0x000000000000-0x000000100000 : "Bootstrap"
0x000000100000-0x000000200000 : "U-boot"
0x000000200000-0x000000300000 : "U-boot env"
0x000000300000-0x000000400000 : "U-boot env backup"
0x000000400000-0x000010000000 : "Don't touch!!!"
хм.. в вышеприведенном логе нет сообщений ядра, о детектирование чипа nand и т.б. упоминаний о разбиение..
как минимум, должна отработать правильно вот эта п/п:
впишите в ее начало отладочный pr_warning, чтобы понять - запускается она или нет..
Проблема более менее решилась, при загрузке выдает в некоторых местах ECC error, но по крайней мере монтирует все и sh запускает. Нужно было внести изменения связанный с ECC в файлы board-da830-evm.c, davinci-nand.c.