вычислить параметры ubinize и mkfs.ibifs
У меня есть плата stm32 с
MT29F2G08ABAGAWP
флеш память, у меня предыдущая плата с
MT29F2G08ABAEAWP
флеш-память, разница в OOB, в первом OOB - 64 байта, во втором OOB - 128 байт, я не могу найти формулу нигде, где вычисляется LEB, и не смог найти параметр PEB для второй flash, есть параметры из таблицы:
for MT29F2G08ABAEAWP first:
Page size x8: 2112 bytes (2048 + 64 bytes);
Block size: 64 pages (128K + 4K bytes);
Device size: 2Gb: 2048 blocks.
for MT29F2G08ABAGAWP second, for which I cannot calculate the values:
Page size x8: 2176 bytes (2048 + 128 bytes);
Block size: 64 pages (128K + 8K bytes);
Device size: 2Gb: 2048 blocks.
Если вы знаете, как рассчитать LEB, PEB, размер подстраницы, максимальное количество блоков логического стирания, минимальный размер блока ввода-вывода по этим параметрам, скажите, пожалуйста, Google не дал ответа.
1 ответ
решение:
diff -Naur uboot-2017.11_orig/drivers/mtd/nand/nand_base.c uboot-2017.11/drivers/mtd/nand/nand_base.c
--- uboot-2017.11_orig/drivers/mtd/nand/nand_base.c 2021-08-05 17:50:55.136923003 +0300
+++ uboot-2017.11/drivers/mtd/nand/nand_base.c 2021-08-06 14:10:22.395612680 +0300
@@ -3440,7 +3440,7 @@
mtd->oobsize = 448;
break;
case 3:
- mtd->oobsize = 64;
+ mtd->oobsize = 128;
break;
case 4:
mtd->oobsize = 32;
@@ -3467,8 +3467,7 @@
mtd->writesize = 1024 << (extid & 0x03);
extid >>= 2;
/* Calc oobsize */
- mtd->oobsize = (8 << (extid & 0x01)) *
- (mtd->writesize >> 9);
+ mtd->oobsize = 128;
extid >>= 2;
/* Calc blocksize. Blocksize is multiples of 64KiB */
mtd->erasesize = (64 * 1024) << (extid & 0x03);
@@ -3488,7 +3487,7 @@
nand_is_slc(chip) &&
(id_data[5] & 0x7) == 0x6 /* 24nm */ &&
!(id_data[4] & 0x80) /* !BENAND */) {
- mtd->oobsize = 32 * mtd->writesize >> 9;
+ mtd->oobsize = 128;
}
}