📄 send.c
字号:
#include "utils.h"
#include "TSLinkDrv.h"
#include <stdio.h>
#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 = true;
LinkID = 3;
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");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -