?? scc.c
字號:
#include "net.h"
#include "scc.h"
void MemSet(void *dest, char c, int len){
char *s=dest;
char *limit = (char *)dest+len;
while (s < limit) *s++ = c;
} // MemSet.
static void WriteToPPR(short addr, short value){
IO_PPPTR = addr;
IO_PPDATA = value;
return;
}
static short ReadFromPPR(short addr){
unsigned short temp;
IO_PPPTR = addr;
return IO_PPDATA;
}
int EthTx(char *txPktBuf, int len){
short *endPtr, *s;
if (!(ReadFromPPR(PP_LineST) & LINK_OK)){
return 0;
}
IO_TXCMD = TX_AFTER_ALL|0x9;
IO_TXLEN = len;
while ((ReadFromPPR(PP_BusST) & READY_FOR_TX_NOW)==0);
for (s=(short *)txPktBuf, endPtr=(short *)(txPktBuf+len); s<endPtr; s++){
IO_RTX_DATA = *s;
}
return 1;
}
void EthRx(void){
uchar* rxPktBuf=PktBuf;
int i;
char *s;
short isq, status, len, cnt;
while ((isq=IO_ISQ)){
if (isq & ISQ_RECEIVER_EVENT){
status = IO_RTX_DATA;
if ((status & RX_OK) && RX_IA_ACCEPT){
len = IO_RTX_DATA;
cnt = len/2 + len%2;
for (i=0, s=(char *)rxPktBuf; i<cnt;i++){
*((ushort *)s)++ = IO_RTX_DATA;
}
RxPacketHandle((char *)rxPktBuf, len);
}
else {
}
}
}
}
int EthInit(){
int i;
// MemSet((char *)IO_BASE, 0x0, 2);
if ((IO_PPPTR&0x7000) != 0x3000){
// return 0;
}
if (ReadFromPPR(PP_ChipID)!=0x630E){
return 0;
}
WriteToPPR(PP_LineCTL, 0x0000);
WriteToPPR(PP_CS8900_ISAINT, INTRQ0);
WriteToPPR(PP_CS8900_ISADMA, DMRQ_HIGH_IMPEDENCE);
WriteToPPR(PP_RxCFG, RX_OK_ENBL | RX_CRC_ERROR_ENBL);
WriteToPPR(PP_RxCTL, RX_OK_ACCEPT | RX_BROADCAST_ACCEPT|RX_IA_ACCEPT);
WriteToPPR(PP_TxCFG, TX_LOST_CRS_ENBL | TX_SQE_ERROR_ENBL | TX_OK_ENBL |
TX_LATE_COL_ENBL | TX_JBR_ENBL | TX_ANY_COL_ENBL);
WriteToPPR(PP_TxCMD, TX_START_ALL_BYTES);
WriteToPPR(PP_BufCFG, 0x0000);
//WriteToPPR(PP_BusCTL, ENABLE_IRQ | IO_CHANNEL_READY_ON);
WriteToPPR(PP_BusCTL, ENABLE_IRQ);//sugar laserman modified.
WriteToPPR(PP_TestCTL, 0x0000);
WriteToPPR(PP_TxCommand,0x00c0);
for (i=0; i<4; i++){
WriteToPPR(PP_LAF+i*2, 0xffff);
}
for (i=0; i<3; i++){
WriteToPPR(PP_IA+i*2, *((ushort *)&(clientEther[i*2])));
}
WriteToPPR(PP_LineCTL, SERIAL_RX_ON | SERIAL_TX_ON);
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -