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