From 88c826587bec2892be424ad62e77d28fc2a5f412 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=AD=99=E6=98=A5=E9=98=B3?= Date: Tue, 16 Dec 2025 16:03:35 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E7=83=A7=E5=BD=95=E5=90=8E?= =?utf8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1mount=E6=85=A2=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../platform_tool/mkyaffs2image/mkyaffs2image | Bin 37504 -> 37696 bytes .../mkyaffs2image/mkyaffs2image.c | 106 +++++++++++++++++- 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image b/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image index 086d8c50f11b33bd1ab95e1ece13af5a7e9f58b9..aa49b9ec4118a8f8dd7c7719fb069f5d50ce4dbf 100644 GIT binary patch delta 10664 zcmbVSe_T{m+CO)gD+2;EAUKS_7!(n-U{J{@Cm9627!|0PKLb)M4H1Xr#oZ%L0;q_-n7x<@U8dPb(vJc_VES?C}B43UF3{?iNm@?wF%&_3uQG+WQXcD8UA_4KO{25P!)ls(zcMX!p< z!t+|0*I506OVhTCX1XXc(VU8I&{NA3h0p2M$SwUAR@KxjU)YginI_PsQMb^iq6*6@ zKw$&q9ke8hkO;Db%k>T>n}`=OdyLVt=pqSZ>zRFgdCR|-@dI4j9;Q89rn3WK_$JOj8HR78LVvqs5!d#GX_wL*XjgEptx30Sv}6^n zg0_KcU18ewbStziTw5BZy+%9x+oKe&t)re8JH6W9=6ISTZDIVKG&RN^wUcYx=}z!x z$JiXNa^z$fe=lu{u{-v0ZC{wSlkSD~JlEPb{JdZ9(bLeL;96Ih_G20!YZtztnX%c9 zL)_bqVVwDNMXbH}EVr;DOnZcvY7fJ2j9nOhj-HCOJKp1^y2G?9s1Ro_zQF4u%|GwU zabC(6hF{}+XBd8kR>j#(C(7uWxEF=%G}SuU;m|E=?>?U{u%&1uU1zmBGD5V@7F`gL zjG}w2_Sno2?NNFP$jS9O#MUbl{oHD&F}9f4?hw>WV{LXi5olis8cE$YyTb@Q%?57^ zvlK;_q0F-=V+%q1)8~L52kHz#W9k0@y$;kBf?DZMKyQhUiOml|4QL<)9YOab*d1xQi?#R35N&$L>4e^xZO-AAZ4VG~F*uTTjCKw(B|V%9 z>cyT@KLvwrm#o9CLG#>#j>m@g3geMoHjfZ%N+BU!RUIZT2$Rd{?6i`hjoAAn`Fr&w zjCz{?6=B_cHwFs1e%6*e+L<=gwFgV2QkeGeNYY1$o8+UG)&^iD$}(Hdl@j^9di`I) z;QmH|kk){;We<%TInlN$9=_o5H?(_2r=@QEUvM`id zgY{!!F7Wj$8A#cA8bsSR3d+;9=je4wg$XsmB|)a9EPG@Vlv(=ve06) zwdJB&vrT<-b(1cbbi!ma!e$0Lax z`vTtTBk=S=IE%b{8C>-`njpzy5v!c}F9~x;Qtq)yO1b4-M#~9E{@nH0iPRjFloW9q zZAy2W-f5tL^s&B84RCZz+GP;cXMYR^F&-uU*V4L~ya}@8kIfiO$bRM{N&Z5TOVVt> z9Ked@fFhQlJOknQ*sB0h*BF)ng5zSZU}b2&8p*^Ah~Gh!tWyu|*TxK>&js`=hC;X< z`O`d~kNg)b-&L3

Bjr$zhu!e)6c!WsNwZaqC )JMzA75^?&T^}n!B6jQK{5? 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 delta 9433 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 GmHEFWu45Ab diff --git a/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image.c b/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image.c index 66e2a0f60..77d10d502 100644 --- a/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image.c +++ b/code/sdk/tools/bin/platform_tool/mkyaffs2image/mkyaffs2image.c @@ -62,6 +62,24 @@ unsigned int chunkSize, spareSize, pagesPerBlock; #define NANDIP_V100 0x100 +#define CHUNKS_PER_SUMMARY 63 +#define YAFFS_OBJECTID_SUMMARY 0x10 +#define YAFFS_SUMMARY_VERSION 1 + +/* Summary tags don't need the sequence number because that is redundant. */ +struct yaffs_summary_tags { + unsigned obj_id; + unsigned chunk_id; + unsigned n_bytes; +}; + +/* Summary header */ +struct yaffs_summary_header { + unsigned version; /* Must match current version */ + unsigned block; /* Must be this block */ + unsigned seq; /* Must be this sequence number */ + unsigned sum; /* Just add up all the bytes in the tags */ +}; /* this follow must be consistent with fastboot !!! */ enum ecc_type @@ -311,6 +329,9 @@ static objItem obj_list[MAX_OBJECTS]; static int obj_id = YAFFS_NOBJECT_BUCKETS + 1; static int n_obj, nDirectories, nPages; +static int summary_index; +static int current_chunk; +static struct yaffs_summary_tags *sum_tags; static int outFile; @@ -444,6 +465,65 @@ static void shuffle_oob(char *spareData, struct yaffs_packed_tags2 *pt) memcpy(spareData, pt, sizeof(*pt)); } +static unsigned yaffs_summary_sum(void) +{ + unsigned sum = 0; + u8 *sum_tags_tmp = (u8 *)sum_tags; + int length = CHUNKS_PER_SUMMARY * sizeof(struct yaffs_summary_tags); + + while (length > 0) { + sum += *sum_tags_tmp; + sum_tags_tmp++; + length--; + } + + return sum; +} + +static int yaffs_do_summary(void) +{ + struct nand_oob_free *oobfree = sel_oob_info->freeoob; + + struct yaffs_summary_header hdr; + hdr.version = YAFFS_SUMMARY_VERSION; + hdr.block = 0; + hdr.seq = YAFFS_LOWEST_SEQUENCE_NUMBER; + hdr.sum = yaffs_summary_sum(); + + char data[chunkSize]; + memset(data, 0xff, chunkSize); + memcpy(data, &hdr, sizeof(hdr)); + memcpy(data + sizeof(hdr), sum_tags, CHUNKS_PER_SUMMARY * sizeof(struct yaffs_summary_tags)); + + if (write(outFile, data, chunkSize) != chunkSize) + fatal("write"); + + struct yaffs_ext_tags t; + memset(&t, 0, sizeof(struct yaffs_ext_tags)); + t.chunk_id = 1; + t.serial_number = 1; + t.n_bytes = CHUNKS_PER_SUMMARY * sizeof(struct yaffs_summary_tags) + sizeof(hdr); + t.obj_id = YAFFS_OBJECTID_SUMMARY; + t.seq_number = YAFFS_LOWEST_SEQUENCE_NUMBER; + t.chunk_used = 1; + nPages++; + + struct yaffs_packed_tags2 pt; + memset(&pt, 0, sizeof(struct yaffs_packed_tags2)); + yaffs_pack_tags2(&dummy_dev, &pt, &t, 1); + + char spareData[spareSize]; + memset(spareData, 0xff, spareSize); + spareData[oobfree->length] = 0; + spareData[oobfree->length + 1] = 0; + + shuffle_oob(&spareData[2], &pt); // use 2bit to mark bad block + + if (write(outFile, spareData, spareSize) != spareSize) + fatal("write"); + return 0; +} + static int write_chunk(u8 *data, u32 id, u32 chunk_id, u32 n_bytes) { struct yaffs_ext_tags t; @@ -451,6 +531,23 @@ static int write_chunk(u8 *data, u32 id, u32 chunk_id, u32 n_bytes) char spareData[spareSize]; struct nand_oob_free *oobfree = sel_oob_info->freeoob; + current_chunk++; + if ((current_chunk % (CHUNKS_PER_SUMMARY + 1)) == 0) { + error = yaffs_do_summary(); + if (error < 0) { + printf("Yaffs2 write summary info failure.\n"); + return error; + } + memset(sum_tags, 0x0, CHUNKS_PER_SUMMARY * sizeof(struct yaffs_summary_tags)); + current_chunk = 1; + summary_index = 0; + } + + sum_tags[summary_index].chunk_id = chunk_id; + sum_tags[summary_index].n_bytes = n_bytes; + sum_tags[summary_index].obj_id = id; + summary_index++; + if (write(outFile,data,chunkSize) != chunkSize) fatal("write"); @@ -942,7 +1039,14 @@ int main(int argc, char *argv[]) chunkSize = get_pagesize(g_pagetype); spareSize = sel_oob_info->oobsize; - printf("chunkSize %d spareSize %d\n",chunkSize,spareSize); + printf("fix mount slow after burn, chunkSize %d spareSize %d\n",chunkSize,spareSize); + int sum_tags_bytes = CHUNKS_PER_SUMMARY * sizeof(struct yaffs_summary_tags); + sum_tags = (struct yaffs_summary_tags *)malloc(sum_tags_bytes); + if (sum_tags == NULL) { + printf("Alloc sum_tags failure.\n"); + exit(1); + } + memset(sum_tags, 0x0, sum_tags_bytes); printf("Processing directory %s into image file %s\n",argv[1],argv[2]); -- 2.17.1