?? main.c.bak
字號(hào):
#include "initial.h"
//---------Raw Data Buffers----------
//
// This program uses internal memory, so buffer size is
// just 1518 In order to make sure buffers are cache
// aligned, if each were in cacheable external memory
// the size should be at least 1536 so as to fill enitre
// cache line.
#define PKT_MAX 32
#pragma DATA_SECTION(packet_header, ".ExtDat1");
EMAC_Pkt packet_header[PKT_MAX];
#pragma DATA_SECTION(packet_buffer, ".ExtDat1");
Uint8 packet_buffer[PKT_MAX][1536];
#pragma DATA_SECTION(packet_sourcedata, ".ExtDat1");
Uint8 packet_sourcedata[1536];
extern EMAC_Config g_emacConfig;
// Declare packet queues
PKTQ FreeQueue; // Free packets for RX or TX
PKTQ RxQueue; // Received packets
// Declare some local status variables
Handle hEMAC = 0; // Handle to our EMAC instance
volatile uint LinkStatus = 0; // Current link status
volatile uint LocalTicks = 0; // Current time in 100ms ticks
void main()
{
Uint32 i,j,size;
Uint32 TxCount=0, RxCount=0;
Uint32 aliveValue = 0;
Uint32 linkValue = 0;
Uint16 *pData = (void *)0;
EMAC_Pkt *pPkt;
// Basic Test Initialization
CSL_init();
puts("EMAC Test\n");
Initial();
// Init packet data array
for( i=0; i<100; i++ )
{
packet_sourcedata[i] = i;
}
// Initialize our buffer pool
memset( &FreeQueue, 0, sizeof(PKTQ) );
memset( &RxQueue, 0, sizeof(PKTQ) );
for( i=0; i<PKT_MAX; i++ )
{
// Init the buffer headers. Note that the
// buffer pointer and buffer length are fixed
memset( &packet_header[i], 0, sizeof(EMAC_Pkt) );
packet_header[i].pDataBuffer = packet_buffer[i];
packet_header[i].BufferLen = 1518;
pqPush( &FreeQueue, &packet_header[i] );
}
// Open EMAC instance
i = EMAC_open( 1, (Handle)0x12345678, &g_emacConfig, &hEMAC );
if(i)
{
puts("Returned error %08x\n",i);
return;
}
// Send a packet
// First get a packet buffer from our private queue
for( j=0; j<PKT_MAX; j++ )
{
pPkt = pqPop( &FreeQueue );
if( pPkt )
{
// Fill buffer with a pattern
size = 100;
memcpy( pPkt->pDataBuffer, packet_sourcedata, size);
// Send the packet
pPkt->Flags = EMAC_PKT_FLAGS_SOP | EMAC_PKT_FLAGS_EOP ;
pPkt->ValidLen = size;
pPkt->DataOffset = 0;
pPkt->PktChannel = 0;
pPkt->PktLength = size;
pPkt->PktFrags = 1;
// Must mask DSP mapped EMAC ISR when calling EMAC functions
IRQ_disable( IRQ_EVT_MACINT );
i = EMAC_sendPacket( hEMAC, pPkt );
IRQ_enable( IRQ_EVT_MACINT );
if(i)
{
puts("EMAC_sendPacket() returned error %08x\n",i);
return;
}
}
}
//puts("Calling EMAC_close()\n");
i = EMAC_close( hEMAC );
hEMAC = 0;
if(i)
{
puts("Returned error %08x\n",i);
return;
}
return;
}
/*
*----------TimerTick-----------
*
* Timer tick service routine - called from 100mS PRD
*/
void TimerTick(void)
{
Uint32 intmask;
/* Keep track of time for local timeout loops */
LocalTicks++;
/* Poll the EMAC */
if( hEMAC )
{
//OUREMAC_enter();
EMAC_timerTick( hEMAC );
//OUREMAC_exit();
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -