Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » FAQ
Bad block
sasamy
Добавлено 20.04.2010 17:47 Сообщение: 11
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Павел - ты с какой версией u-boot воюешь ? Надо навтывкать там отладочных printf побольше. Я смотрю на новую текущую версию u-boot-2010.03 - вообще не понимаю как он выводит ERROR без репортов о пропущеном бэде или ошибке чтения - одно из двух должно все равно быть :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.04.2010 17:55 Сообщение: 12
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Он не может пытаться читать плохой блок в принципе если при записи видел что блок плохой и пропустил его при этом сообщив в консоли - перед чтением и записью блок проверяется одной и той же ф-ей nand_block_isbad
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 20.04.2010 18:01 Редактировалось 20.04.2010 18:02 Сообщение: 13
Pavel Ivanchenko
Admin
4.45

Пункты: 85386
Регистрация: 24.03.2009
Пол: Мужчина
Крайний лог я привел от версии 1.1.5 (та что на дисках идет), но с версией 1.3.4 такая же картина.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 20.04.2010 18:17 Редактировалось 20.04.2010 18:26 Сообщение: 14
Pavel Ivanchenko
Admin
4.45

Пункты: 85386
Регистрация: 24.03.2009
Пол: Мужчина
Занятно (упражняюсь на 1.1.5), добавил CONFIG_MTD_DEBUG (уровен 0) получаю:
Код
NAND write: device 0 offset 393216, size 7995392 ... 7995392 bytes written: OK
U-Boot> nand read 60000 7a0000

NAND read: device 0 offset 7995392, size 260440064 ... nand_read_ecc: Failed ECC
read, page 0x00000f80
nand_read_ecc: Failed ECC read, page 0x00000f80
nand_read_ecc: Failed ECC read, page 0x00000f81
nand_read_ecc: Failed ECC read, page 0x00000f81
nand_read_ecc: Failed ECC read, page 0x00000f81
nand_read_ecc: Failed ECC read, page 0x00001080
...
И так перебирает тучу страниц, потом виснет, сейчас попробую уровень дебага повыше сделать

При уровне дебага 3, получаю:
Код
NAND erase: device 0 offset 0x60000, size 0x7a0000
nand_isbad_bbt(): bbt info for offs 0x00060000: (block 3) 0x00
nand_erase: start = 0x00060000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00060000: (block 3) 0x00
nand_write_oob: to = 0x00060002, len = 8
Erasing at 0x60000 -- 0% complete. Cleanmarker written at 0x60000.nand_isbad_bbt(): bbt info for offs 0x00080000: (block 4) 0x00
nand_erase: start = 0x00080000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00080000: (block 4) 0x00
nand_write_oob: to = 0x00080002, len = 8
nand_isbad_bbt(): bbt info for offs 0x000a0000: (block 5) 0x00
nand_erase: start = 0x000a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x000a0000: (block 5) 0x00
nand_write_oob: to = 0x000a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x000c0000: (block 6) 0x00
nand_erase: start = 0x000c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x000c0000: (block 6) 0x00
nand_write_oob: to = 0x000c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x000e0000: (block 7) 0x00
nand_erase: start = 0x000e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x000e0000: (block 7) 0x00
nand_write_oob: to = 0x000e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00100000: (block 8) 0x00
nand_erase: start = 0x00100000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00100000: (block 8) 0x00
nand_write_oob: to = 0x00100002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00120000: (block 9) 0x00
nand_erase: start = 0x00120000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00120000: (block 9) 0x00
nand_write_oob: to = 0x00120002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00140000: (block 10) 0x00
nand_erase: start = 0x00140000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00140000: (block 10) 0x00
nand_write_oob: to = 0x00140002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00160000: (block 11) 0x00
nand_erase: start = 0x00160000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00160000: (block 11) 0x00
nand_write_oob: to = 0x00160002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00180000: (block 12) 0x00
nand_erase: start = 0x00180000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00180000: (block 12) 0x00
nand_write_oob: to = 0x00180002, len = 8
nand_isbad_bbt(): bbt info for offs 0x001a0000: (block 13) 0x00
nand_erase: start = 0x001a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x001a0000: (block 13) 0x00
nand_write_oob: to = 0x001a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x001c0000: (block 14) 0x00
nand_erase: start = 0x001c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x001c0000: (block 14) 0x00
nand_write_oob: to = 0x001c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x001e0000: (block 15) 0x00
nand_erase: start = 0x001e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x001e0000: (block 15) 0x00
nand_write_oob: to = 0x001e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00200000: (block 16) 0x03
Skipping bad block at 0x00200000
nand_isbad_bbt(): bbt info for offs 0x00220000: (block 17) 0x00
nand_erase: start = 0x00220000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00220000: (block 17) 0x00
nand_write_oob: to = 0x00220002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00240000: (block 18) 0x00
nand_erase: start = 0x00240000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00240000: (block 18) 0x00
nand_write_oob: to = 0x00240002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00260000: (block 19) 0x00
nand_erase: start = 0x00260000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00260000: (block 19) 0x00
nand_write_oob: to = 0x00260002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00280000: (block 20) 0x00
nand_erase: start = 0x00280000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00280000: (block 20) 0x00
nand_write_oob: to = 0x00280002, len = 8
nand_isbad_bbt(): bbt info for offs 0x002a0000: (block 21) 0x00
nand_erase: start = 0x002a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x002a0000: (block 21) 0x00
nand_write_oob: to = 0x002a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x002c0000: (block 22) 0x00
nand_erase: start = 0x002c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x002c0000: (block 22) 0x00
nand_write_oob: to = 0x002c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x002e0000: (block 23) 0x00
nand_erase: start = 0x002e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x002e0000: (block 23) 0x00
nand_write_oob: to = 0x002e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00300000: (block 24) 0x00
nand_erase: start = 0x00300000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00300000: (block 24) 0x00
nand_write_oob: to = 0x00300002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00320000: (block 25) 0x00
nand_erase: start = 0x00320000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00320000: (block 25) 0x00
nand_write_oob: to = 0x00320002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00340000: (block 26) 0x00
nand_erase: start = 0x00340000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00340000: (block 26) 0x00
nand_write_oob: to = 0x00340002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00360000: (block 27) 0x00
nand_erase: start = 0x00360000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00360000: (block 27) 0x00
nand_write_oob: to = 0x00360002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00380000: (block 28) 0x00
nand_erase: start = 0x00380000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00380000: (block 28) 0x00
nand_write_oob: to = 0x00380002, len = 8
nand_isbad_bbt(): bbt info for offs 0x003a0000: (block 29) 0x00
nand_erase: start = 0x003a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x003a0000: (block 29) 0x00
nand_write_oob: to = 0x003a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x003c0000: (block 30) 0x00
nand_erase: start = 0x003c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x003c0000: (block 30) 0x00
nand_write_oob: to = 0x003c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x003e0000: (block 31) 0x00
nand_erase: start = 0x003e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x003e0000: (block 31) 0x00
nand_write_oob: to = 0x003e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00400000: (block 32) 0x00
nand_erase: start = 0x00400000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00400000: (block 32) 0x00
nand_write_oob: to = 0x00400002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00420000: (block 33) 0x00
nand_erase: start = 0x00420000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00420000: (block 33) 0x00
nand_write_oob: to = 0x00420002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00440000: (block 34) 0x00
nand_erase: start = 0x00440000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00440000: (block 34) 0x00
nand_write_oob: to = 0x00440002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00460000: (block 35) 0x00
nand_erase: start = 0x00460000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00460000: (block 35) 0x00
nand_write_oob: to = 0x00460002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00480000: (block 36) 0x00
nand_erase: start = 0x00480000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00480000: (block 36) 0x00
nand_write_oob: to = 0x00480002, len = 8
nand_isbad_bbt(): bbt info for offs 0x004a0000: (block 37) 0x00
nand_erase: start = 0x004a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x004a0000: (block 37) 0x00
nand_write_oob: to = 0x004a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x004c0000: (block 38) 0x00
nand_erase: start = 0x004c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x004c0000: (block 38) 0x00
nand_write_oob: to = 0x004c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x004e0000: (block 39) 0x00
nand_erase: start = 0x004e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x004e0000: (block 39) 0x00
nand_write_oob: to = 0x004e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00500000: (block 40) 0x00
nand_erase: start = 0x00500000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00500000: (block 40) 0x00
nand_write_oob: to = 0x00500002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00520000: (block 41) 0x00
nand_erase: start = 0x00520000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00520000: (block 41) 0x00
nand_write_oob: to = 0x00520002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00540000: (block 42) 0x00
nand_erase: start = 0x00540000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00540000: (block 42) 0x00
nand_write_oob: to = 0x00540002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00560000: (block 43) 0x00
nand_erase: start = 0x00560000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00560000: (block 43) 0x00
nand_write_oob: to = 0x00560002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00580000: (block 44) 0x00
nand_erase: start = 0x00580000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00580000: (block 44) 0x00
nand_write_oob: to = 0x00580002, len = 8
nand_isbad_bbt(): bbt info for offs 0x005a0000: (block 45) 0x00
nand_erase: start = 0x005a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x005a0000: (block 45) 0x00
nand_write_oob: to = 0x005a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x005c0000: (block 46) 0x00
nand_erase: start = 0x005c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x005c0000: (block 46) 0x00
nand_write_oob: to = 0x005c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x005e0000: (block 47) 0x00
nand_erase: start = 0x005e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x005e0000: (block 47) 0x00
nand_write_oob: to = 0x005e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00600000: (block 48) 0x00
nand_erase: start = 0x00600000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00600000: (block 48) 0x00
nand_write_oob: to = 0x00600002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00620000: (block 49) 0x00
nand_erase: start = 0x00620000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00620000: (block 49) 0x00
nand_write_oob: to = 0x00620002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00640000: (block 50) 0x00
nand_erase: start = 0x00640000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00640000: (block 50) 0x00
nand_write_oob: to = 0x00640002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00660000: (block 51) 0x00
nand_erase: start = 0x00660000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00660000: (block 51) 0x00
nand_write_oob: to = 0x00660002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00680000: (block 52) 0x00
nand_erase: start = 0x00680000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00680000: (block 52) 0x00
nand_write_oob: to = 0x00680002, len = 8
nand_isbad_bbt(): bbt info for offs 0x006a0000: (block 53) 0x00
nand_erase: start = 0x006a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x006a0000: (block 53) 0x00
nand_write_oob: to = 0x006a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x006c0000: (block 54) 0x00
nand_erase: start = 0x006c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x006c0000: (block 54) 0x00
nand_write_oob: to = 0x006c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x006e0000: (block 55) 0x00
nand_erase: start = 0x006e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x006e0000: (block 55) 0x00
nand_write_oob: to = 0x006e0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00700000: (block 56) 0x00
nand_erase: start = 0x00700000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00700000: (block 56) 0x00
nand_write_oob: to = 0x00700002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00720000: (block 57) 0x00
nand_erase: start = 0x00720000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00720000: (block 57) 0x00
nand_write_oob: to = 0x00720002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00740000: (block 58) 0x00
nand_erase: start = 0x00740000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00740000: (block 58) 0x00
nand_write_oob: to = 0x00740002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00760000: (block 59) 0x00
nand_erase: start = 0x00760000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00760000: (block 59) 0x00
nand_write_oob: to = 0x00760002, len = 8
nand_isbad_bbt(): bbt info for offs 0x00780000: (block 60) 0x00
nand_erase: start = 0x00780000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x00780000: (block 60) 0x00
nand_write_oob: to = 0x00780002, len = 8
nand_isbad_bbt(): bbt info for offs 0x007a0000: (block 61) 0x00
nand_erase: start = 0x007a0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x007a0000: (block 61) 0x00
nand_write_oob: to = 0x007a0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x007c0000: (block 62) 0x00
nand_erase: start = 0x007c0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x007c0000: (block 62) 0x00
nand_write_oob: to = 0x007c0002, len = 8
nand_isbad_bbt(): bbt info for offs 0x007e0000: (block 63) 0x00
nand_erase: start = 0x007e0000, len = 131072
nand_isbad_bbt(): bbt info for offs 0x007e0000: (block 63) 0x00
nand_write_oob: to = 0x007e0002, len = 8
Erasing at 0x7e0000 -- 100% complete. Cleanmarker written at 0x7e0000.
OK
U-Boot> nand write 20400000 60000 7a0000

NAND write: device 0 offset 393216, size 7995392 ... nand_write_ecc: to = 0x00060000, len = 7995392
7995392 bytes written: OK
U-Boot> nand read 20400000 60000

NAND read: device 0 offset 393216, size 268042240 ... nand_read_ecc: from = 0x00060000, len = 268042240
nand_read_ecc: Failed ECC read, page 0x00000400
nand_read_ecc: Failed ECC read, page 0x00000400
nand_read_ecc: Failed ECC read, page 0x00000400
nand_read_ecc: Failed ECC read, page 0x00000400
...
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 20.04.2010 19:04 Сообщение: 15
Pavel Ivanchenko
Admin
4.45

Пункты: 85386
Регистрация: 24.03.2009
Пол: Мужчина
Складывается впечатление, что при чтении он не проверяет битость блока ну и соответственно находит тучу ошибок ECC в пустом-битом блоке ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.04.2010 20:07 Редактировалось 20.04.2010 20:16 Сообщение: 16
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Код
nand_read_ecc: Failed ECC read, page 0x00000400


Первую страницу он прочитал - это подтверждается и тем что свой заголовок u-boot видит... только непонятно - он похоже считает что размер страницы 0x400 = 1024 а я так понял у тебя судя по размеру блока nand
128 кбайт = 2048 х 64 страница должна же быть 2048 ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.04.2010 21:53 Сообщение: 17
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Я ерунду написал - там page 0x00000400 это не абсолютный адрес а номер страницы и он как раз указывает на начало сбойного блока:

1024 х 2048 = 2097152 = (128 х 1024) х 16

16 блок - это и есть сбойный блок
Цитата
nand_isbad_bbt(): bbt info for offs 0x00200000: (block 16) 0x03
Skipping bad block at 0x00200000
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.04.2010 22:45 Сообщение: 18
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Посмотрел код 1.1.5 - я там в упор не вижу проверку на то что блок плохой при чтении и записи - только при очистке, так что непонятно про что там написано в доке... в последней версии есть явная проверка, так что думаю есть смысл ей заниматься а не старьем.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 21.04.2010 09:30 Сообщение: 19
Pavel Ivanchenko
Admin
4.45

Пункты: 85386
Регистрация: 24.03.2009
Пол: Мужчина
Скачал u-boot-2010.03, буксую - битрейт UDBG получается почему то отличный от 115200 ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.04.2010 11:14 Редактировалось 21.04.2010 11:19 Сообщение: 20
sasamy
4.77

Пункты: 60126
Регистрация: 14.08.2009
Надо частоту подправить в конфиге - ты уже все забыл :)
include/configs/at91sam9260ek.h

/* ARM asynchronous clock */
#define CONFIG_SYS_AT91_MAIN_CLOCK >>12000000<< /* 18.432 MHz crystal */

Я сейчас попробовал - все работает, единственное - у меня плата без nand так что работу с ней не смогу проверить.

PS посмотрел 1.3.4 - там аналогично 1.1.5 при чтении/записи ничего не проверяется.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » FAQ