diff --git a/bch.c b/bch.c index 9aa4ea52e0912aa8f5fad71a7f6c15f6fade09e2..a5622b28075cfb3601ed3b9ed3017ef0fb28eb31 100644 --- a/bch.c +++ b/bch.c @@ -1285,7 +1285,10 @@ struct bch_control *init_bch(int m, int t, unsigned int prim_poly) /* select a primitive polynomial for generating GF(2^m) */ if (prim_poly == 0) - prim_poly = prim_poly_tab[m-min_m]; + prim_poly = prim_poly_tab[9]; + //prim_poly = prim_poly_tab[m-min_m]; + + printf("polynomail.%d\n", prim_poly_tab[8]); bch = malloc(sizeof(*bch)); if (bch == NULL) diff --git a/nand-image-builder.c b/nand-image-builder.c index c5d63ea384e6ef322f41436daa090f586e500fa8..e88665885652326a1297b181e0246e801bda6353 100644 --- a/nand-image-builder.c +++ b/nand-image-builder.c @@ -294,6 +294,7 @@ int main(int argc, char **argv) /* Initialize BCH lib data and parameters */ struct bch_control *bch = init_bch(field_order, ecc_level, 0); + if (!bch) goto exit; @@ -347,8 +348,9 @@ int main(int argc, char **argv) swap(&page_buffer[(i + 1) * sector_sz], &page_buffer[sector_sz * SECTORS_PER_PAGE + (i * oob_sz)], oob_sz); + memset(ecc, 0, OOB_ECC_LEN); - encode_bch(bch, &page_buffer[i * sector_sz] , sector_sz , ecc); + encode_bch(bch, &page_buffer[i * sector_sz] , sector_sz + oob_ecc_ofs, ecc);