Группа: Участник
Сообщений: 10
Регистрация: 6-11-08
Из: Нижний Новгород
Пользователь №: 41 420

|
Какие сделал правки u-boot под мою K9GAG08 (OOB=128, PAGE=4096, BLOCK=128PAGE): 1. nand_cp.c //page_size = 2048; page_size = 4096; //page_shift = 11; page_shift = 12; тогда убут будет верно стартовать с нанд независимо или в режиме IROM или выполнения с нанд.
Но для того чтоб его можно было в нанд прописать нужно подправить функции nand write/read 2.nand.c static struct nand_ecclayout s3c_nand_oob_mlc_128 = { .useecc = MTD_NANDECC_AUTOPLACE, /* Only for U-Boot *///the batoff .eccbytes = 64, .eccpos = { 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}, .oobfree = { {.offset = 2, .length = 28+32}} };
//nand->ecc.layout = &s3c_nand_oob_mlc_64; nand->ecc.layout = &s3c_nand_oob_mlc_128;
3.nand_util.c //#define MAX_PAGE_SIZE 2048 //#define MAX_OOB_SIZE 64 #define MAX_PAGE_SIZE 4096 #define MAX_OOB_SIZE 128
if (!(meminfo->oobsize == 16 && meminfo->writesize == 512) && !(meminfo->oobsize == 8 && meminfo->writesize == 256) && !(meminfo->oobsize == 64 && meminfo->writesize == 2048) && !(meminfo->oobsize == 128 && meminfo->writesize == 4096)) { printf("Unknown flash (not normal NAND)\n"); return -1; } 4.nand_base.c static struct nand_ecclayout nand_oob_128 = { .eccbytes = 48, .eccpos = { 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}, .oobfree = { {.offset = 2, .length = 78}} }; case 128: chip->ecc.layout = &nand_oob_128; break;
case 16: 5.nand.h //#define NAND_MAX_OOBSIZE 64 //#define NAND_MAX_PAGESIZE 2048 #define NAND_MAX_OOBSIZE 128 #define NAND_MAX_PAGESIZE 4096
после этих правок успешно стал шиться в нанд убут, кернел. Непонятки творятся с rootfs. ОБраз взял от kit2416 формат yaffs. В нанд заливается, но при старте ядро паникует, говорит что все блоки бэд. ядру передаю setenv bootargs noinitrd root=/dev/mtdblock2 console=ttySAC0,115200
Вывел в консоли nand dump первой странички фс, в начале блока OOB два байта нулевые и секция ECC тоже странная.
Кто нибудь сделайте nand dump первых 2 страниц фс ваших плат. И еще б глянуть начало бинарника rootfs.
Заранее благодарю.
|