Skip to content

Commit

Permalink
dpcmd.c
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed Jan 8, 2021
1 parent 477aa9f commit b99e9db
Show file tree
Hide file tree
Showing 25 changed files with 794 additions and 244 deletions.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified 60-dediprog.rules
100644 → 100755
Empty file.
Empty file modified ChipInfoDb.dedicfg
100644 → 100755
Empty file.
6 changes: 6 additions & 0 deletions ChipInfoDb.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,13 @@ bool Dedi_List_AllChip(void);
int ChipInfoDbFindItem(CHIP_INFO ChipInfoDb[], int NumberOfItems, long JedecDeviceIDToFind);
void ChipInfoDump(long JedecDeviceIDToFind);
long ChipInfoDumpChipSizeInKByte(long Jedec);
#if 0
int Dedi_Search_Chip_Db(long RDIDCommand, long UniqueID, CHIP_INFO* Chip_Info, int search_all);

#else

int Dedi_Search_Chip_Db(char* TypeName, long RDIDCommand, long UniqueID, CHIP_INFO* Chip_Info, int search_all);
#endif
int Dedi_Search_Chip_Db_ByTypeName(char* TypeName, CHIP_INFO* Chip_Info);
FILE* openChipInfoDb(void);

Expand Down
Empty file modified FlashCommand.c
100644 → 100755
Empty file.
Empty file modified FlashCommand.h
100644 → 100755
Empty file.
Empty file modified IntelHexFile.c
100644 → 100755
Empty file.
Empty file modified IntelHexFile.h
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion Macro.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ typedef struct ChipInfo {
#define BLINK BIT10
#define DEVICE_ID BIT11
#define LIST_TYPE BIT12
#define LOADFILE BIT13
#define LOADFILEWITHVERIFY BIT13

struct CAddressRange {
size_t start;
Expand Down
Empty file modified Makefile
100644 → 100755
Empty file.
Empty file modified MotorolaFile.c
100644 → 100755
Empty file.
Empty file modified MotorolaFile.h
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
53 changes: 28 additions & 25 deletions SerialFlash.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ extern int m_boEnReadQuadIO;
extern int m_boEnWriteQuadIO;
extern CHIP_INFO Chip_Info;
extern volatile bool g_bIsSF600[16];
extern volatile bool g_bIsSF700[16];
extern bool Is_NewUSBCommand(int Index);

unsigned char mcode_WRSR = 0x01;
Expand Down Expand Up @@ -1762,12 +1763,12 @@ int SerialFlash_rangeProgram(struct CAddressRange* AddrRange, unsigned char* vDa
if (strstr(Chip_Info.Class, SUPPORT_ATMEL_45DBxxxB) != NULL || strstr(Chip_Info.Class, SUPPORT_ATMEL_45DBxxxD) != NULL)
return AT45rangeProgram(AddrRange, vData, mcode_Program, mcode_ProgramCode_4Adr, Index);
else if (strstr(Chip_Info.Class, SUPPORT_SPANSION_S25FLxx_Large) != NULL) {
if (g_bIsSF600[Index] == true)
if ((g_bIsSF600[Index] == true)||(g_bIsSF700[Index] == true))
return SerialFlash_bulkPipeProgram(AddrRange, vData, PP_4ADR_256BYTE, mcode_ProgramCode_4Adr, Index);
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[Index] == true) {
if ((g_bIsSF600[Index] == true)||(g_bIsSF700[Index] == true)) {
return SerialFlash_bulkPipeProgram(AddrRange, vData, PP_4ADDR_256BYTE_S70FS01GS, mcode_ProgramCode_4Adr_S70FSxxx, Index);
} else
return false;
Expand All @@ -1777,20 +1778,21 @@ int SerialFlash_rangeProgram(struct CAddressRange* AddrRange, unsigned char* vDa

int SerialFlash_rangeRead(struct CAddressRange* AddrRange, unsigned char* vData, int Index)
{
//printf("SerialFlash_rangeRead");
if (strstr(Chip_Info.Class, SUPPORT_SPANSION_S25FLxx_Large) != NULL) {
if (g_bIsSF600[Index] == true)
if ((g_bIsSF600[Index] == true)||(g_bIsSF700[Index] == true))
return SerialFlash_bulkPipeRead(AddrRange, vData, BULK_4BYTE_FAST_READ, mcode_ReadCode, Index);
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[Index] == true)
if ((g_bIsSF600[Index] == true)||(g_bIsSF700[Index] == true))
return SerialFlash_bulkPipeRead(AddrRange, vData, BULK_4BYTE_FAST_READ, mcode_ReadCode_S70FSxxx, Index);
else
return false;
} else {
} else
return SerialFlash_bulkPipeRead(AddrRange, vData, (unsigned char)mcode_Read, (unsigned char)mcode_ReadCode, Index);
}
};

/**
Expand Down Expand Up @@ -2164,22 +2166,21 @@ int SerialFlash_bulkPipeProgram(struct CAddressRange* AddrRange, unsigned char*
}

int SerialFlash_bulkPipeRead(struct CAddressRange* AddrRange, unsigned char* vData, unsigned char modeRead, unsigned char ReadCom, int Index)
{
{
size_t i, j, loop, pageNum, BufferLocation = 0;
int ret = 0;
if (!SerialFlash_StartofOperation(Index))
return false;
if (!(strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL && strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL && g_bIsSF600[Index] == true))
int ret = 0;
if (!SerialFlash_StartofOperation(Index))
return false;
if (!(strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL && strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL && ((g_bIsSF600[Index] == true)||(g_bIsSF700[Index] == true))))
SerialFlash_Enable4ByteAddrMode(true, Index);

if (SerialFlash_EnableQuadIO(true, m_boEnReadQuadIO, Index) == SerialFlash_FALSE)
return false;

// unsigned char v[512];

AddrRange->length = AddrRange->end - AddrRange->start;
if (AddrRange->length <= 0) {
if (AddrRange->length <= 0)
return false;
}
// printf("AddrRange->end=%x, AddrRange->start=%x\n",AddrRange->end,AddrRange->start);
if ((AddrRange->end / 0x1000000) > (AddrRange->start / 0x1000000)) //(AddrRange.end>0x1000000 && AddrRange.start<0x1000000)
{
Expand All @@ -2193,7 +2194,7 @@ int SerialFlash_bulkPipeRead(struct CAddressRange* AddrRange, unsigned char* vDa
loop = (range_temp.end - range_temp.start) / 0x1000000;

for (j = 0; j < loop; j++) {
if (g_bIsSF600[Index] == false && (strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL || strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL)) // for sf100
if (((g_bIsSF600[Index] == false)&&(g_bIsSF700[Index] == false)) && (strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL || strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL)) // for sf100
{
unsigned char re = 0;
int numOfRetry = 5;
Expand All @@ -2207,8 +2208,8 @@ int SerialFlash_bulkPipeRead(struct CAddressRange* AddrRange, unsigned char* vDa
Sleep(100);
CN25Qxxx_MutipleDIe_LargeRDEAR(&re, Index);
} while (((re & j) != j) && numOfRetry-- > 0);
if (numOfRetry == 0)
return false;
if (numOfRetry == 0)
return false;
}

if (j == (loop - 1))
Expand All @@ -2227,15 +2228,15 @@ int SerialFlash_bulkPipeRead(struct CAddressRange* AddrRange, unsigned char* vDa
FlashCommand_SendCommand_SetupPacketForBulkRead(&read_range, modeRead, ReadCom, Index);
for (i = 0; i < pageNum; ++i) {
ret = BulkPipeRead(vData + (BufferLocation + i) * 512, USB_TIMEOUT, Index);
if ((ret != 512) || m_isCanceled)
return 0;
if ((ret != 512) || m_isCanceled)
return 0;
//memcpy(vData + (BufferLocation+i)*512, v, 512);
}
BufferLocation += pageNum;
}
} else {
unsigned char EAR = (AddrRange->start * 0x1000000) >> 24;
if (g_bIsSF600[Index] == false && (strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL || strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL)) {
if (((g_bIsSF600[Index] == false)&&(g_bIsSF700[Index] == false)) && (strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_2Die) != NULL || strstr(Chip_Info.Class, SUPPORT_NUMONYX_N25Qxxx_Large_4Die) != NULL)) {
unsigned char re = 0;
int numOfRetry = 5;
do {
Expand All @@ -2248,21 +2249,23 @@ int SerialFlash_bulkPipeRead(struct CAddressRange* AddrRange, unsigned char* vDa
Sleep(100);
CN25Qxxx_MutipleDIe_LargeRDEAR(&re, Index);
} while (((re & EAR) != EAR) && numOfRetry-- > 0);
if (numOfRetry == 0)
if (numOfRetry == 0){
return false;
}
}
pageNum = AddrRange->length >> 9;
FlashCommand_SendCommand_SetupPacketForBulkRead(AddrRange, modeRead, ReadCom, Index);
for (i = 0; i < pageNum; ++i) {
ret = BulkPipeRead(vData + i * ret, USB_TIMEOUT, Index);
if ((ret != 512) || m_isCanceled) {
//printf("SerialFlash_bulkPipeRead5,ret=%d, m_isCanceled=%s\n",ret,m_isCanceled?"true":"false");
return false;
}
//memcpy(vData + i*ret, v, ret);
}
}
}
if (SerialFlash_EnableQuadIO(false, m_boEnReadQuadIO, Index) == SerialFlash_FALSE)
return false;
return false;
SerialFlash_Enable4ByteAddrMode(false, Index);

if (!SerialFlash_EndofOperation(Index))
Expand Down
Empty file modified SerialFlash.h
100644 → 100755
Empty file.
32 changes: 19 additions & 13 deletions board.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#define min(a, b) (a > b ? b : a)

volatile bool g_bIsSF600 = false;
volatile bool g_bIsSF700 = false;
extern char g_board_type[8];
extern int g_firmversion;
extern unsigned int g_IO1Select;
Expand Down Expand Up @@ -102,9 +103,8 @@ void QueryBoard(int Index)

unsigned char GetFPGAVersion(int Index)
{
if (strstr(g_board_type, "SF600") == NULL)
return -1;

if ((strstr(g_board_type, "SF600") == NULL) && (strstr(g_board_type, "SF700") == NULL))
return -1;
CNTRPIPE_RQ rq;
unsigned char vDataPack;

Expand Down Expand Up @@ -168,6 +168,7 @@ bool SetTargetFlash(unsigned char StartupMode, int Index)

bool SetLEDProgBoard(size_t Color, int Index)
{
//printf("\n===>board.c ---- SetLEDProgBoard(Color=%ld,SetLEDProgBoard=%d)\n",Color,Index);
if (!Is_usbworking(Index)) {
return false;
}
Expand All @@ -178,10 +179,12 @@ bool SetLEDProgBoard(size_t Color, int Index)
rq.Function = URB_FUNCTION_VENDOR_ENDPOINT;
rq.Direction = VENDOR_DIRECTION_OUT;
rq.Request = SET_IO;
if (Is_NewUSBCommand(Index)) {
rq.Value = (Color & 0xFFF7) | (g_IO1Select << 1) | (g_IO4Select << 3);
if (Is_NewUSBCommand(Index)) {
rq.Value = Color | (g_IO1Select << 1);
rq.Value = (rq.Value& 0xFFF7) | (g_IO4Select << 3);
//rq.Value = (Color & 0xFFF7) | (g_IO1Select << 1) | (g_IO4Select << 3);
rq.Index = 0;
} else {
} else {
rq.Value = 0x09;
rq.Index = Color >> 8; // LED 0:ON 1:OFF Bit0:Green Bit1:Orange Bit2:Red
}
Expand Down Expand Up @@ -336,12 +339,15 @@ unsigned int ReadUID(int Index)
return false;
}
unsigned int dwUID = 0;
unsigned char vUID[16];

if (g_bIsSF600 == true) {
unsigned char vUID[16];
if ((g_bIsSF600 == true)||(g_bIsSF700 == true)) {
if (ReadOnBoardFlash(vUID, false, Index) == false)
return false;
dwUID = (unsigned int)vUID[0] << 16 | (unsigned int)vUID[1] << 8 | vUID[2];
if(g_bIsSF600 == true)
dwUID = (unsigned int)vUID[0] << 16 | (unsigned int)vUID[1] << 8 | vUID[2];
else
dwUID = (unsigned int)vUID[2] << 16 | (unsigned int)vUID[1] << 8 | vUID[0];
return dwUID;
}

Expand Down Expand Up @@ -436,7 +442,7 @@ unsigned char ReadManufacturerID(int Index)
if (!Is_usbworking(Index))
return false;

if (g_bIsSF600 == true) {
if ((g_bIsSF600 == true)||(g_bIsSF700 == true)) {
unsigned char vUID[16];
if (ReadOnBoardFlash(vUID, false, Index) == false)
return false;
Expand Down Expand Up @@ -596,7 +602,7 @@ bool WriteUID(unsigned int dwUID, int Index)
if (!Is_usbworking(Index))
return false;

if (g_bIsSF600)
if ((g_bIsSF600 == true)||(g_bIsSF700 == true))
return true;

CNTRPIPE_RQ rq;
Expand Down Expand Up @@ -636,7 +642,7 @@ bool WriteManufacturerID(unsigned char ManuID, int Index)
if (!Is_usbworking(Index))
return false;

if (g_bIsSF600)
if ((g_bIsSF600 == true)||(g_bIsSF700 == true))
return true;

CNTRPIPE_RQ rq;
Expand Down Expand Up @@ -898,7 +904,7 @@ bool UpdateFirmware(const char* sFolder, int Index)
unsigned int UID = 0;
unsigned char ManID = 0;
// read status
if (g_bIsSF600 == true)
if ((g_bIsSF600 == true)||(g_bIsSF700 == true))
return UpdateSF600Firmware(sFolder, Index);

dediprog_set_spi_voltage(g_Vcc, Index);
Expand Down
Empty file modified board.h
100644 → 100755
Empty file.
Loading

0 comments on commit b99e9db

Please sign in to comment.