This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28386S: ReadFile is slow

Part Number: TMS320F28386S
Other Parts Discussed in Thread: C2000WARE

I know this is not a Visual C++ forum but since TI provides the serial flash programmer I thought maybe someone could help. Here is the function

loadProgram from the file

C:\ti\c2000\C2000Ware_4_01_00_00\utilities\flash_programmers\serial_flash_programmer\serial_flash_programmer\source\f021_DownloadKernel.cpp

void loadProgram(FILE *fh)
{
	unsigned char sendData[8];
	unsigned int fileStatus;
	unsigned int rcvData = 0;
	DWORD dwRead;
	DWORD dwWritten;


	getc(fh);
	getc(fh);
	getc(fh);

	fileStatus = fscanf_s(fh, "%x", &sendData[0]);

	float bitRate = 0;
	DWORD millis = GetTickCount();
	while (fileStatus == 1)
	{
		QUIETPRINT(_T("\n%lx"), sendData[0]);
		//Send next char
		WriteFile(file, &sendData[0], 1, &dwWritten, NULL);

		bitRate++;
		dwRead = 0;
		//T1
		while (dwRead == 0)
		{           
            ReadFile(file, &rcvData, 1, &dwRead, NULL);
        }
        //T2
		QUIETPRINT(_T("==%lx"), rcvData);
		//Ensure data matches
		if (sendData[0] != rcvData){
			VERBOSEPRINT(_T("\nData does not match... Please press Ctrl-C to abort."));
			while (1){}
		}

		//Read next char
		fileStatus = fscanf_s(fh, "%x", &sendData[0]);
	}
	millis = GetTickCount() - millis;
	bitRate = bitRate / millis * 1000 * 8;
	QUIETPRINT(_T("\nBit rate /s of transfer was: %f"), bitRate);
	rcvData = 0;
}

The baud rate is 115200 and characters are echoed back correctly. In free run the time between the markers is 15 ms which is way too long. However, if I pause the program at T1 and then let it read, the read takes 7 ms. The F28386S is echoing the character right away so it seems the delay is ReadFile().

Any ideas?

Thanks,

John