www.pudn.com > LinkDrvDemo.rar > recv.c
#include "utils.h" #include "TSLinkDrv.h" #include#define BUFFER_LENGTH 32768 #define CLOCK_RATE 300 #define REPEAT_TIME 1000 int Buffer[BUFFER_LENGTH]; int FrameCount = 0; void MakeBuffer() { int i; for(i = 0; i < BUFFER_LENGTH; i++) Buffer[i] = 0x5a5a0000 + i; } bool CheckBuffer() { int i; for(i = 0; i < BUFFER_LENGTH; i++) { if(Buffer[i] != 0x5a5a0000 + i) return false; } return true; } void main() { bool IsSender; int LinkID; int LinkSpeed; unsigned int StartTime, EndTime, Duration; float Speed; int i, count; bool VerifyOK; __builtin_sysreg_write(__SYSCON, 0x1A79E7); __builtin_sysreg_write(__SDRCON, 0x5213); IsSender = false; LinkID = 1; LinkSpeed = 1; switch(LinkSpeed) { case 0: LinkInit(LinkID, LINK_SPEED_0); break; case 1: LinkInit(LinkID, LINK_SPEED_1); break; case 2: LinkInit(LinkID, LINK_SPEED_2); break; case 3: LinkInit(LinkID, LINK_SPEED_3); break; default: break; } if(IsSender) { //send VerifyOK = true; MakeBuffer(); init_timer(0, 0xffff, 0xffffffff); StartTime = start_timer(0); LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); EndTime = stop_timer(0); Duration = StartTime - EndTime; Speed = 4 * BUFFER_LENGTH * CLOCK_RATE / (float)Duration; //recv for(count = 0; count < REPEAT_TIME; count++) { LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); if(!CheckBuffer()) { VerifyOK = false; break; } LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); FrameCount++; } if(VerifyOK) printf("Verify OK. Speed = %f\n", Speed); else printf("Verify Error.\n"); } else { VerifyOK = true; //recv LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); if(!CheckBuffer()) VerifyOK = false; //send for(count = 0; count < REPEAT_TIME; count++) { LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); if(!CheckBuffer()) { VerifyOK = false; break; } FrameCount++; } if(VerifyOK) printf("Verify OK.\n"); else printf("Verify Error.\n"); } }