diff --git a/ChipInfoDb.dedicfg b/ChipInfoDb.dedicfg index bba96f2..0a83dee 100755 --- a/ChipInfoDb.dedicfg +++ b/ChipInfoDb.dedicfg @@ -2,7 +2,7 @@ @@ -2684,7 +2684,7 @@ JedecDeviceID="0x012018" ChipSizeInKByte="16384" SectorSizeInByte="262144" - PageSizeInByte="512" + PageSizeInByte="256" VppSupport="0" ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" @@ -2722,7 +2722,7 @@ JedecDeviceID="0x012018" ChipSizeInKByte="16384" SectorSizeInByte="262144" - PageSizeInByte="512" + PageSizeInByte="256" VppSupport="0" ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" @@ -2813,6 +2813,26 @@ Voltage="3.3V" Clock="104MHz" Timeout="480" + ManufactureID="0x01" + JedecDeviceID="0x010220" + ChipSizeInKByte="65536" + SectorSizeInByte="262144" + PageSizeInByte="512" + VppSupport="0" + ProgramIOMethod="SPQD_RQWSW" + AddrWidth="4" + IDNumber="3" + RDIDCommand="0x9F"/> + + RDIDCommand="0x9F"/> + @@ -4288,7 +4309,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4306,7 +4327,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4324,7 +4345,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4475,7 +4496,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4494,7 +4515,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4513,7 +4534,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4532,7 +4553,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4551,7 +4572,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4570,7 +4591,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4589,7 +4610,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4608,7 +4629,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4627,7 +4648,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -4646,7 +4667,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4683,7 +4704,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQ" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4737,7 +4758,7 @@ ChipSizeInKByte="512" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4755,7 +4776,7 @@ ChipSizeInKByte="512" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4773,7 +4794,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4791,7 +4812,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4809,11 +4830,11 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> - + @@ -4846,7 +4867,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4864,7 +4885,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4882,7 +4903,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4901,7 +4922,7 @@ ChipSizeInKByte="2048" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4919,7 +4940,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4937,7 +4958,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -4955,7 +4976,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -6594,7 +6615,6 @@ PageSizeInByte="256" AddrWidth="4" IDNumber="3" - ProgramIOMethod="QPQD_RSW" RDIDCommand="0x9F" /> @@ -10973,7 +10993,7 @@ ChipSizeInKByte="512" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -10991,7 +11011,7 @@ ChipSizeInKByte="256" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11009,7 +11029,7 @@ ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11028,7 +11048,7 @@ SectorSizeInByte="65536" PageSizeInByte="256" AddrWidth="4" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWDWSW" IDNumber="3" RDIDCommand="0x9F"/> - + + + + + + + + @@ -11586,7 +11613,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11605,7 +11632,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11624,7 +11651,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPDD_RDWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11643,7 +11670,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11662,7 +11689,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11681,7 +11708,7 @@ ChipSizeInKByte="16384" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11700,7 +11727,7 @@ ChipSizeInKByte="32768" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11719,7 +11746,7 @@ ChipSizeInKByte="4096" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="QPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11738,7 +11765,7 @@ ChipSizeInKByte="8192" SectorSizeInByte="4096" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="QPQD_RQWSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -11904,7 +11931,7 @@ PageSizeInByte="256" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F" -ProgramIOMethod="SPQD_RQWSW"/> +ProgramIOMethod="QPQD_RQWSW"/> +ProgramIOMethod="SPQD_RQWSW"/> @@ -13010,7 +13037,7 @@ ManufactureUrl="www.MXIC.com" Voltage="3.3V" Clock="86MHz" Timeout="10" -ProgramIOMethod="QPQD_RSWQW" +ProgramIOMethod="SPDD_RSW" ManufactureID="0xC2" JedecDeviceID="0xC22013" UniqueID="0xC22013" @@ -13053,7 +13080,7 @@ ManufactureUrl="www.Macronix.com" Voltage="1.8V" Clock="104MHz" Timeout="250" -ProgramIOMethod="QPQD_RSWQW" +ProgramIOMethod="QPQD_R" ManufactureID="0xC2" JedecDeviceID="0xC22538" UniqueID="0xC22538" @@ -13479,41 +13506,21 @@ SectorSizeInByte="4096" BlockSizeInByte="65536" AddrWidth="3" RDIDCommand="0x9F"/> - ChipSizeInKByte="2048" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWDWQW" + ProgramIOMethod="SPQD_RSWDWQW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -14789,7 +14796,7 @@ RDIDCommand="0x9F"/> RDIDCommand="0x9F" /> Clock="33/66MHz" Timeout="20" ManufactureID="0x1F" - JedecDeviceID="0x1F2500" + JedecDeviceID="0x1F25" ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" AddrWidth="3" - IDNumber="3" + IDNumber="2" RDIDCommand="0x90" /> RDIDCommand="0x90" /> Clock="33/66MHz" Timeout="80" ManufactureID="0x1F" - JedecDeviceID="0x1F2700" + JedecDeviceID="0x1F27" ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" AddrWidth="3" - IDNumber="3" + IDNumber="2" RDIDCommand="0x90" /> Clock="33/66MHz" Timeout="160" ManufactureID="0x1F" - JedecDeviceID="0x1F2800" + JedecDeviceID="0x1F28" ChipSizeInKByte="8192" SectorSizeInByte="65536" PageSizeInByte="256" AddrWidth="3" - IDNumber="3" + IDNumber="2" RDIDCommand="0x90" /> Clock="33/66MHz" Timeout="160" ManufactureID="0x1F" - JedecDeviceID="0x1F2800" + JedecDeviceID="0x1F28" ChipSizeInKByte="8192" SectorSizeInByte="65536" PageSizeInByte="256" AddrWidth="3" - IDNumber="3" + IDNumber="2" RDIDCommand="0x9F" /> Clock="33/66MHz" Timeout="160" ManufactureID="0x1F" - JedecDeviceID="0x1F2700" + JedecDeviceID="0x1F27" ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="512" AddrWidth="3" - IDNumber="3" + IDNumber="2" RDIDCommand="0x9F" /> @@ -15223,7 +15230,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15242,7 +15249,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="1024" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15352,7 +15359,7 @@ RDIDCommand="0x9F"/> PageSizeInByte="256" AddrWidth="4" VppSupport="9" - ProgramIOMethod="QPQD_RQWDWSW" + ProgramIOMethod="SPQD_RQWDWSW" IDNumber="3" RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15468,7 +15475,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15487,7 +15494,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="8192" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F" /> @@ -15507,7 +15514,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15569,7 +15576,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15589,7 +15596,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -15607,7 +15614,6 @@ RDIDCommand="0x9F"/> Clock="108MHz" ManufactureID="0x20" JedecDeviceID="0x20BA21" - DeviceID="0x20BA21" ChipSizeInKByte="131072" SectorSizeInByte="67108864" PageSizeInByte="256" @@ -15632,10 +15638,10 @@ RDIDCommand="0x9F"/> SectorSizeInByte="4096" PageSizeInByte="256" AddrWidth="4" - ProgramIOMethod="SPQD_RSWDWQW" + ProgramIOMethod="SPSD_RSW" IDNumber="3" RDIDCommand="0x9F"/> - + PageSizeInByte="256" AddrWidth="4" VppSupport="9" - ProgramIOMethod="QPQD_RQWDWSW" + ProgramIOMethod="SPQD_RQWDWSW" IDNumber="3" RDIDCommand="0x9F"/> @@ -16052,7 +16058,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RQWSW" + ProgramIOMethod="SPQD_RQWSW" AddrWidth="4" IDNumber="3" RDIDCommand="0x9F"/> @@ -16378,7 +16384,7 @@ RDIDCommand="0x9F"/> Voltage="3.3V" Clock="133MHz" Timeout="480" - ProgramIOMethod="QPQD_RQWDWSW" + ProgramIOMethod="SPQD_RQWDWSW" ManufactureID="0x20" JedecDeviceID="0x20BA19" UniqueID="0x20BA19" @@ -16471,7 +16477,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPDD_RSWQW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -17116,7 +17122,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSWQW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -17747,8 +17753,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0xE04013" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="133MHz" Timeout="20" @@ -17766,8 +17772,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0xE04014" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="133MHz" Timeout="20" @@ -17785,8 +17791,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0xE04015" Description="16M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="http://www.genitop.com/" Voltage="3.3V" Clock="133MHz" Timeout="40" @@ -17804,8 +17810,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0xE04016" Description="32M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="http://www.genitop.com/" Voltage="3.3V" Clock="133MHz" Timeout="80" @@ -18196,7 +18202,7 @@ ManufactureUrl="www.Macronix.com" Voltage="1.8V" Clock="166MHz" Timeout="480" - ProgramIOMethod="QPQD_RSWQW" +ProgramIOMethod="SPSD_RSW" ManufactureID="0xC2" JedecDeviceID="0xC2253A" UniqueID="0xC2253A" @@ -18230,7 +18236,7 @@ RDIDCommand="0x9F"/> IDNumber="3" RDIDCommand="0x9F"/> - - + @@ -18445,7 +18452,7 @@ RDIDCommand="0x9F" SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -18457,7 +18464,7 @@ ManufactureUrl="www.Macronix.com" Voltage="1.8V" Clock="104MHz" Timeout="250" - ProgramIOMethod="QPQD_RSWQW" +ProgramIOMethod="SPSD_RSW" ManufactureID="0xC2" JedecDeviceID="0xC22538" UniqueID="0xC22538" @@ -18643,7 +18650,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -18663,7 +18670,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -18681,7 +18688,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="512" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="SPSD_RSW" + ProgramIOMethod="SPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -18718,7 +18725,6 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="64" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F" /> @@ -18756,7 +18762,7 @@ RDIDCommand="0x9F"/> SectorSizeInByte="65536" PageSizeInByte="256" MXIC_WPmode="true" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="SPSD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -19150,25 +19156,6 @@ RDIDCommand="0x9F"/> ProgramIOMethod="SPQD_RQWDWSW" IDNumber="3" RDIDCommand="0x9F"/> - ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -19323,7 +19310,7 @@ RDIDCommand="0x9F"/> ChipSizeInKByte="4096" SectorSizeInByte="65536" PageSizeInByte="256" - ProgramIOMethod="QPQD_RSWQW" + ProgramIOMethod="DPDD_RSW" AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> @@ -19877,8 +19864,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0x1C3113" Description="4M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="100MHz" Timeout="20" @@ -19896,8 +19883,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0x5E4014" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="100MHz" Timeout="20" @@ -19915,8 +19902,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0x5E4015" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="100MHz" Timeout="40" @@ -19934,8 +19921,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0x1C7017" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="100MHz" Timeout="160" @@ -19953,8 +19940,8 @@ RDIDCommand="0x9F"/> Class="GT25Qxxx" UniqueID="0x1C7018" Description="8M BIT SPI NOR FLASH" - Manufacturer="XTX" - ManufactureUrl="www.xtxceth.cn" + Manufacturer="PARAGON" + ManufactureUrl="www.paragontech.cn" Voltage="3.3V" Clock="100MHz" Timeout="250" @@ -20037,7 +20024,7 @@ RDIDCommand="0x9F"/> PageSizeInByte="256" AddrWidth="3" IDNumber="3" - RDIDCommand="0x9F" /> + RDIDCommand="0x9F" /> AddrWidth="3" IDNumber="3" RDIDCommand="0x9F"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FlashCommand.c b/FlashCommand.c index f81c201..b883e5b 100755 --- a/FlashCommand.c +++ b/FlashCommand.c @@ -213,7 +213,7 @@ int FlashCommand_SendCommand_SetupPacketForBulkRead(struct CAddressRange *AddrRa vInstruction[0] = (unsigned char)(pageNum & 0xff) ; // lowest byte of length : page number vInstruction[1] = (unsigned char)( (pageNum >> 8) & 0xff) ; // highest byte of length: page number - vInstruction[2] = (unsigned char)( (pageNum >> 16) & 0xff) ; // reserved + vInstruction[2] = (unsigned char)( (pageNum >> 16) & 0xff) ; // reserved vInstruction[3] = modeRead; // BULK_NORM_READ, BULK_FAST_READ vInstruction[4] = ReadCom; @@ -223,7 +223,7 @@ int FlashCommand_SendCommand_SetupPacketForBulkRead(struct CAddressRange *AddrRa vInstruction[6] = (AddrRange->start & 0xff); vInstruction[7] = ((AddrRange->start >> 8) & 0xff); vInstruction[8] = ((AddrRange->start >> 16) & 0xff); - vInstruction[9] = ((AddrRange->start >> 24) & 0xff); + vInstruction[9] = ((AddrRange->start >> 24) & 0xff); rq.Value = 0; rq.Index = 0; rq.Length = (unsigned long)(10) ; diff --git a/Macro.h b/Macro.h index d40276f..d5624e9 100755 --- a/Macro.h +++ b/Macro.h @@ -110,13 +110,14 @@ typedef struct ChipInfo { #define PP_32BYTE 0x0A #define PP_4ADDR_256BYTE_12 0x0B #define PP_4ADDR_256BYTE_MICROM 0x0C +#define PP_4ADDR_256BYTE_S70FS01GS 0x0D // bulk read mode #define BULK_NORM_READ 0x01 ///< read via bulk pipes #define BULK_FAST_READ 0x02 ///< fast read via bulk pipes #define BULK_AT45xx_READ 0x03 ///< fast read via bulk pipes #define BULK_4BYTE_FAST_READ 0x04 ///< For size is bigger than 128Mb -#define BULK_4BYTE_FAST_READ_MICRON 0x05 +#define BULK_4BYTE_FAST_READ_MICRON 0x05 //for flash card #define POLLING 0x02 ///< polling @@ -204,6 +205,7 @@ typedef struct ChipInfo { #ifdef SUPPORT_SPANSION #define SUPPORT_SPANSION_S25FLxx "S25FLxxx" #define SUPPORT_SPANSION_S25FLxx_Large "S25FLxxx_Large" + #define SUPPORT_SPANSION_S70FSxx_Large "S70FSxxx_Large" #endif #ifdef SUPPORT_MACRONIX diff --git a/SerialFlash.c b/SerialFlash.c index fd743d7..0494f91 100755 --- a/SerialFlash.c +++ b/SerialFlash.c @@ -23,8 +23,10 @@ unsigned char mcode_SegmentErase=SE; unsigned char mcode_ChipErase=CHIP_ERASE; unsigned char mcode_Program=PAGE_PROGRAM; unsigned char mcode_ProgramCode_4Adr=0x02; +unsigned char mcode_ProgramCode_4Adr_S70FSxxx=0x12; unsigned char mcode_Read=BULK_FAST_READ; unsigned char mcode_ReadCode=0x0B; +unsigned char mcode_ReadCode_S70FSxxx=0x0C; unsigned int g_AT45_PageSize=0; unsigned int g_AT45_PageSizeMask=0; size_t AT45ChipSize=0; @@ -662,6 +664,123 @@ int SerialFlash_doRDSR(unsigned char *cSR,int Index) return SerialFlash_TRUE; } +int S70FSxxx_Large_doRDSR1V(bool die1, unsigned char *cSR,int Index) +{ + CNTRPIPE_RQ rq ; + unsigned char vInstruction[7]={0}; //size 1 + + // first control packet + vInstruction[0] = 0x65; + vInstruction[1] = ((0x800000>>24)|(die1?0:(0x4000000>>24))); + vInstruction[2] = 0x800000>>16; + vInstruction[3] = 0x800000>>8; + vInstruction[4] = 0x800000; + vInstruction[5] = 0; + vInstruction[6] = 0; + + rq.Function = URB_FUNCTION_VENDOR_ENDPOINT ; + rq.Direction = VENDOR_DIRECTION_OUT ; + rq.Request = TRANSCEIVE ; + if(Is_NewUSBCommand(Index)) + { + rq.Value = RESULT_IN ; + rq.Index = RFU ; + } + else + { + rq.Value = RFU ; + rq.Index = RESULT_IN ; + } + rq.Length = 7;//(unsigned long) 1 ; + + if(OutCtrlRequest(&rq, &vInstruction, 7, Index) == SerialFlash_FALSE) + return SerialFlash_FALSE ; + + + // second control packet : fetch data + unsigned char vBuffer ; //just read one bytes , in fact more bytes are also available + rq.Function = URB_FUNCTION_VENDOR_ENDPOINT ; + rq.Direction = VENDOR_DIRECTION_IN ; + rq.Request = TRANSCEIVE ; + if(Is_NewUSBCommand(Index)) + { + rq.Value = 1; + rq.Index = 0; + } + else + { + rq.Value = CTRL_TIMEOUT ; + rq.Index = NO_REGISTER ; + } + rq.Length = 1;//(unsigned long) 1; + + if(InCtrlRequest(&rq, &vBuffer, 1, Index) == SerialFlash_FALSE) + return SerialFlash_FALSE ; + + *cSR = vBuffer; + + return SerialFlash_TRUE; +} + +int S70FSxxx_Large_doRDCR2V(bool die1, unsigned char *cSR,int Index) +{ + CNTRPIPE_RQ rq ; + unsigned char vInstruction[7]={0}; //size 1 + + // first control packet + vInstruction[0] = 0x65; + vInstruction[1] = ((0x800003>>24)|(die1?0:(0x4000000>>24))); + vInstruction[2] = 0x800003>>16; + vInstruction[3] = 0x800003>>8; + vInstruction[4] = 0x800003; + vInstruction[5] = 0; + vInstruction[6] = 0; + + rq.Function = URB_FUNCTION_VENDOR_ENDPOINT ; + rq.Direction = VENDOR_DIRECTION_OUT ; + rq.Request = TRANSCEIVE ; + if(Is_NewUSBCommand(Index)) + { + rq.Value = RESULT_IN ; + rq.Index = RFU ; + } + else + { + rq.Value = RFU ; + rq.Index = RESULT_IN ; + } + rq.Length = 7;//(unsigned long) 1 ; + + if(OutCtrlRequest(&rq, &vInstruction, 7, Index) == SerialFlash_FALSE) + return SerialFlash_FALSE ; + + + // second control packet : fetch data + unsigned char vBuffer ; //just read one bytes , in fact more bytes are also available + rq.Function = URB_FUNCTION_VENDOR_ENDPOINT ; + rq.Direction = VENDOR_DIRECTION_IN ; + rq.Request = TRANSCEIVE ; + if(Is_NewUSBCommand(Index)) + { + rq.Value = 1; + rq.Index = 0; + } + else + { + rq.Value = CTRL_TIMEOUT ; + rq.Index = NO_REGISTER ; + } + rq.Length = 1;//(unsigned long) 1; + + if(InCtrlRequest(&rq, &vBuffer, 1, Index) == SerialFlash_FALSE) + return SerialFlash_FALSE ; + + *cSR = vBuffer; + + return SerialFlash_TRUE; +} + + // /** @@ -690,6 +809,19 @@ void SerialFlash_waitForWEL(int Index) }while(((cSR & 0x02) == 0) && (i-- > 0)) ; } +void S70FSxxx_Large_waitForWEL(bool die1,int Index) +{ + unsigned char cSR=0; + size_t i = 10; + + do{// wait until WIP = 0 and WEL = 1 + SerialFlash_doWREN(Index) ; + + // read SR to check WEL until WEL = 1 + S70FSxxx_Large_doRDSR1V(die1,&cSR,Index) ; + }while(((cSR & 0x02) == 0) && (i-- > 0)) ; +} + /** * \brief @@ -704,6 +836,22 @@ void SerialFlash_waitForWEL(int Index) * SRWD 0 0 BP2 BP1 BP0 WEL WIP * */ +bool S70FSxxx_Large_waitForWIP(bool die1,int Index) +{ + unsigned char cSR ; + size_t i = Chip_Info.Timeout*100; + if(i==0) + i=MAX_TRIALS; + // wait until WIP = 0 + do{ + S70FSxxx_Large_doRDSR1V(die1,&cSR,Index) ; + Sleep(5); + }while((cSR & 0x01) && (i-- > 0)) ; + if(i<=0) + return false; + return true; +} + bool SerialFlash_waitForWIP(int Index) { unsigned char cSR ; @@ -720,9 +868,8 @@ bool SerialFlash_waitForWIP(int Index) return true; } - int SerialFlash_doWREN(int Index) -{ +{ unsigned char v=mcode_WREN;; return FlashCommand_SendCommand_OutOnlyInstruction(&v, 1,Index); @@ -1231,13 +1378,58 @@ bool CN25Qxxx_LargeEnable4ByteAddrMode(bool Enable4Byte,int Index) #endif } +int S70FSxxx_Large_Enable4ByteAddrMode(int Enable4Byte,int Index) +{ + if(Enable4Byte) + { + unsigned char v= EN4B; + int numOfRetry = 5 ; + unsigned char re; + do{ + // SerialFlash_waitForWEL(Index); + FlashCommand_TransceiveOut(&v,1,false,Index); + Sleep(100); + S70FSxxx_Large_doRDCR2V(false, &re,Index); + }while((re & 0x80)==0 && numOfRetry-- > 0); + do{ + // SerialFlash_waitForWEL(Index); + FlashCommand_TransceiveOut(&v,1,false,Index); + Sleep(100); + S70FSxxx_Large_doRDCR2V(true, &re,Index); + + }while((re & 0x80)==0 && numOfRetry-- > 0); + return true; + } + else + { + unsigned char re; + unsigned char v= EXIT4B; + int numOfRetry = 5 ; + + do{ + // SerialFlash_waitForWEL(Index); + FlashCommand_TransceiveOut(&v,1,false,Index); + Sleep(100); + S70FSxxx_Large_doRDCR2V(false, &re,Index); + }while((re & 0x80)==0 && numOfRetry-- > 0); + do{ + // SerialFlash_waitForWEL(Index); + FlashCommand_TransceiveOut(&v,1,false,Index); + Sleep(100); + S70FSxxx_Large_doRDCR2V(true, &re,Index); + }while((re & 0x80)==0 && numOfRetry-- > 0); + return true; + } +} //Simon: unused ??? int SerialFlash_Enable4ByteAddrMode(int bEnable,int Index) -{ +{ if(strstr(Chip_Info.Class,SUPPORT_EON_EN25QHxx_Large) != NULL || strstr(Chip_Info.Class,SUPPORT_MACRONIX_MX25Lxxx_Large) != NULL || strstr(Chip_Info.Class,SUPPORT_WINBOND_W25Pxx_Large) != NULL) return CEN25QHxx_LargeEnable4ByteAddrMode(bEnable,Index); + if(strstr(Chip_Info.Class,SUPPORT_SPANSION_S70FSxx_Large)!= NULL) + return S70FSxxx_Large_Enable4ByteAddrMode(bEnable,Index); if(strstr(Chip_Info.Class,SUPPORT_NUMONYX_N25Qxxx_Large) != NULL)// || // strstr(Chip_Info.Class,SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL || @@ -1318,6 +1510,16 @@ int SerialFlash_rangeProgram(struct CAddressRange *AddrRange, unsigned char *vDa else return SerialFlash_bulkPipeProgram(AddrRange, vData, PP_4ADDR_256BYTE_12,mcode_ProgramCode_4Adr,Index); } + else if(strstr(Chip_Info.Class,SUPPORT_SPANSION_S70FSxx_Large)!=NULL) + { + + if(g_bIsSF600==true) + { + return SerialFlash_bulkPipeProgram(AddrRange, vData, PP_4ADDR_256BYTE_S70FS01GS,mcode_ProgramCode_4Adr_S70FSxxx,Index); + } + else + return false; + } else return SerialFlash_bulkPipeProgram(AddrRange, vData, mcode_Program, mcode_ProgramCode_4Adr,Index); } @@ -1331,6 +1533,13 @@ int SerialFlash_rangeRead(struct CAddressRange *AddrRange, unsigned char *vData, else return SerialFlash_bulkPipeRead(AddrRange, vData, BULK_4BYTE_FAST_READ_MICRON,mcode_ReadCode,Index); } + if(strstr(Chip_Info.Class,SUPPORT_SPANSION_S70FSxx_Large)!=NULL) + { + if(g_bIsSF600==true) + return SerialFlash_bulkPipeRead(AddrRange, vData, BULK_4BYTE_FAST_READ,mcode_ReadCode_S70FSxxx,Index); + else + return false; + } else return SerialFlash_bulkPipeRead(AddrRange, vData, (unsigned char) mcode_Read, (unsigned char) mcode_ReadCode, Index); }; @@ -1517,11 +1726,48 @@ int SerialFlash_rangeErase(unsigned char cmd, size_t sectionSize, struct CAddres return true ; } +bool S70FSxxx_Large_chipErase(unsigned int Addr,unsigned int Length,int USBIndex) +{ + S70FSxxx_Large_Enable4ByteAddrMode(true, USBIndex); + + + // wait until WIP = 0 + S70FSxxx_Large_waitForWIP(true,USBIndex) ; + // wait until WEL = 1 + S70FSxxx_Large_waitForWEL(true,USBIndex) ; + unsigned char vInstruction[5]={0}; + vInstruction[0]=0xFE; + vInstruction[1]=0x00; + vInstruction[2]=0x00; + vInstruction[3]=0x00; + vInstruction[4]=0x00; + FlashCommand_SendCommand_OutOnlyInstruction(&vInstruction,5,USBIndex); + + S70FSxxx_Large_waitForWIP(true,USBIndex) ; //check die 1 + + + S70FSxxx_Large_Enable4ByteAddrMode(false, USBIndex); + S70FSxxx_Large_waitForWIP(false,USBIndex) ; + + // wait until WEL = 1 + S70FSxxx_Large_waitForWEL(false,USBIndex) ; + vInstruction[0]=0xFE; + vInstruction[1]=0x04; + vInstruction[2]=0x00; + vInstruction[3]=0x00; + vInstruction[4]=0x00; + FlashCommand_SendCommand_OutOnlyInstruction(&vInstruction,5,USBIndex); + + S70FSxxx_Large_waitForWIP(false,USBIndex) ; //check die 2 +} + /// chip erase int SerialFlash_chipErase(int Index) { if(strstr(Chip_Info.Class,SUPPORT_ATMEL_45DBxxxB) != NULL || strstr(Chip_Info.Class,SUPPORT_ATMEL_45DBxxxD) != NULL) return AT45chipErase(0, Chip_Info.ChipSizeInByte, Index); + if(strstr(Chip_Info.Class,SUPPORT_SPANSION_S70FSxx_Large) != NULL) + return S70FSxxx_Large_chipErase(0, Chip_Info.ChipSizeInByte, Index); if( SerialFlash_protectBlock(false,Index) == SerialFlash_FALSE) return false ; @@ -1607,9 +1853,10 @@ int SerialFlash_bulkPipeProgram(struct CAddressRange *AddrRange, unsigned char * divider=8; break; } - + if((AddrRange->end/0x1000000)>(AddrRange->start/0x1000000))//(AddrRange.end>0x1000000 && AddrRange.start<0x1000000) ||(AddrRange.end>0x2000000 && AddrRange.start<0x2000000) || { + struct CAddressRange down_range; struct CAddressRange range_temp; range_temp.start= AddrRange->start&0xFF000000; @@ -1648,7 +1895,7 @@ int SerialFlash_bulkPipeProgram(struct CAddressRange *AddrRange, unsigned char * } } else - { + { size_t packageNum = (AddrRange->end - AddrRange->start) >> divider ; FlashCommand_SendCommand_SetupPacketForBulkWrite(AddrRange, modeWrite,WriteCom,Index); for(i = 0; i < packageNum; ++ i) diff --git a/SerialFlash.h b/SerialFlash.h index 4c3fa2c..5214683 100755 --- a/SerialFlash.h +++ b/SerialFlash.h @@ -38,8 +38,11 @@ int SerialFlash_doWRSR(unsigned char cSR,int Index); int SerialFlash_doRDSR(unsigned char *cSR,int Index); +void S70FSxxx_Large_waitForWEL(bool die1,int Index); +int S70FSxxx_Large_doRDSR1V(bool die1, unsigned char *cSR,int Index); +int S70FSxxx_Large_doRDCR2V(bool die1, unsigned char *cSR,int Index); void SerialFlash_waitForWEL(int Index); - +bool S70FSxxx_Large_waitForWIP(bool die1,int Index); bool SerialFlash_waitForWIP(int Index); int SerialFlash_doWREN(int Index); diff --git a/parse.c b/parse.c index 4c82734..bdaa6c7 100755 --- a/parse.c +++ b/parse.c @@ -20,8 +20,8 @@ void getExecPath(char* Path) dirname (Path); // printf("%s\r\n",Path); strcat(Path,"/ChipInfoDb.dedicfg"); -// printf("%s\r\n",Path); - + // printf("%s\r\n",Path); +//// } } diff --git a/project.c b/project.c index 537a86c..ece7fa2 100755 --- a/project.c +++ b/project.c @@ -114,7 +114,7 @@ int ReadBINFile(const char *filename,unsigned char *buf, unsigned long* size) long lSize; size_t result; - pFile = fopen( filename , "rb" ); + pFile = fopen( filename , "rb" ); if (pFile==NULL) { printf("Open %s failed\n",filename); @@ -125,6 +125,9 @@ int ReadBINFile(const char *filename,unsigned char *buf, unsigned long* size) // obtain file size: fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); + + + rewind (pFile); // allocate memory to contain the whole file: if(pBufferforLoadedFile!=NULL) @@ -151,6 +154,7 @@ int ReadBINFile(const char *filename,unsigned char *buf, unsigned long* size) // terminate g_ulFileSize=lSize; + fclose (pFile); return 1; } @@ -274,7 +278,8 @@ void PrepareProgramParameters(int Index) size_t addrLeng = (0 == len) ? g_ulFileSize: len; DownloadAddrRange.start=addrStart; DownloadAddrRange.end=addrStart + addrLeng; - DownloadAddrRange.length=addrLeng; + DownloadAddrRange.length=addrLeng; + } bool ValidateProgramParameters(int Index) @@ -294,14 +299,13 @@ bool ValidateProgramParameters(int Index) /// if user-specified length exceeds, just ignore if(DownloadAddrRange.start > Chip_Info.ChipSizeInByte - 1) return false; - + size_t size = DownloadAddrRange.length; if(size > g_ulFileSize && g_ucFill==0xFF) return false; - + if(DownloadAddrRange.end > Chip_Info.ChipSizeInByte) - return false; - + return false; return true; } @@ -309,7 +313,7 @@ bool ProgramChip(int Index) { bool need_padding = (g_ucFill != 0xFF); unsigned char* vc; - struct CAddressRange real_addr[16]; + struct CAddressRange real_addr[16]; real_addr[Index].start=(DownloadAddrRange.start &(~(0x200 - 1))); real_addr[Index].end=((DownloadAddrRange.end + (0x200 - 1)) & (~(0x200 - 1))); real_addr[Index].length=real_addr[Index].end-real_addr[Index].start; @@ -325,7 +329,7 @@ bool ProgramChip(int Index) { memcpy(vc+(DownloadAddrRange.start & 0x1FF),pBufferforLoadedFile,DownloadAddrRange.length); } - + bool result= SerialFlash_rangeProgram(&real_addr[Index], vc,Index); return result; @@ -770,7 +774,7 @@ bool BlazeUpdate(int Index) addr_range.start=addrs[i]; addr_range.end=addrs[i]+Chip_Info.MaxErasableSegmentInByte; addr_range.length=addr_range.end-addr_range.start; - + if(SerialFlash_rangeProgram(&addr_range,vc+idx_in_vc,Index)==0) { free(vc); @@ -835,8 +839,7 @@ bool RangeUpdateThruChipErase(int Index) SetIOMode(true, Index); addr.start=0; addr.end=Chip_Info.ChipSizeInByte; - addr.length=Chip_Info.ChipSizeInByte; - + addr.length=Chip_Info.ChipSizeInByte; return SerialFlash_rangeProgram(&addr, vc,Index); } @@ -1195,6 +1198,7 @@ CHIP_INFO GetFirstDetectionMatch(int Index) for(i=0; i