URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc
- from Rev 404 to Rev 405
- ↔ Reverse comparison
Rev 404 → Rev 405
/trunk/bootloaders/orpmon/include/build.h
1,?rev1len? → ?rev2line?,?rev2len?
#define BUILD_VERSION "Fri Oct 15 13:03:37 CEST 2010" |
#define BUILD_VERSION "Tue Nov 2 15:05:20 CET 2010" |
/trunk/bootloaders/orpmon/include/eth.h
3,10 → 3,8
#define ETH_TOTAL_BD 32 |
#define ETH_MAXBUF_LEN 0x600 |
|
#define ETH_TXBD_NUM 16 |
#define ETH_TXBD_NUM_MASK (ETH_TXBD_NUM - 1) |
#define ETH_RXBD_NUM 16 |
#define ETH_RXBD_NUM_MASK (ETH_RXBD_NUM - 1) |
#define ETH_TXBD_NUM 8 |
#define ETH_RXBD_NUM 24 |
|
typedef unsigned int uint; |
|
/trunk/bootloaders/orpmon/include/board.h
25,8 → 25,6
*/ |
#define IPCONFIG 3 |
|
#define SDC_CONTROLLER_BASE 0x9e000000 |
|
#if BOARD==0 |
// Nibbler on bender1 |
|
54,8 → 52,7
# define BOARD_DEF_NAME "marvin" |
|
#elif BOARD==2 |
//ORSoC usbethdev board |
|
//ORSoC ordb1a3pe1500 |
# define FLASH_BASE_ADDR 0xf0000000 |
# define FLASH_SIZE 0x04000000 |
# define FLASH_BLOCK_SIZE 0x00040000 |
121,8 → 118,8
#define BOARD_DEF_IMAGE_NAME "boot.img" |
#define BOARD_DEF_LOAD_SPACE 0xa00000 |
#define ETH_MDIOPHYADDR 0x00 |
#define ETH_MACADDR0 0xad |
#define ETH_MACADDR1 0xda |
#define ETH_MACADDR0 0x00 |
#define ETH_MACADDR1 0x12 |
#define ETH_MACADDR2 0x34 |
#define ETH_MACADDR3 0x56 |
#define ETH_MACADDR4 0x78 |
144,17 → 141,17
#define ETH_MACADDR4 0x78 |
#define ETH_MACADDR5 0x9c |
|
#elif IPCONFIG==3 // ORSoC LAN |
#elif IPCONFIG==3 // JB ORSoC board 2 |
|
#define BOARD_DEF_IP 0xc0a80103 // 192.168.1.3 |
#define BOARD_DEF_IP 0xc0a8015a // 192.168.1.90 |
#define BOARD_DEF_MASK 0xffffff00 // 255.255.255.0 |
#define BOARD_DEF_GW 0xc0a80101 // 192.168.1.1 |
#define BOARD_DEF_TBOOT_SRVR 0xc0a80101 // 192.168.1.1 |
#define BOARD_DEF_TBOOT_SRVR 0xc0a80108 // 192.168.1.8 |
#define BOARD_DEF_IMAGE_NAME "boot.img" |
#define BOARD_DEF_LOAD_SPACE 0xa00000 |
#define ETH_MDIOPHYADDR 0x00 |
#define ETH_MACADDR0 0xad |
#define ETH_MACADDR1 0xaa |
#define ETH_MACADDR0 0x00 |
#define ETH_MACADDR1 0x12 |
#define ETH_MACADDR2 0x34 |
#define ETH_MACADDR3 0x56 |
#define ETH_MACADDR4 0x78 |
169,17 → 166,15
#define BOARD_DEF_IMAGE_NAME "boot.img" |
#define BOARD_DEF_LOAD_SPACE 0xa00000 |
#define ETH_MDIOPHYADDR 0x00 |
#define ETH_MACADDR0 0xad |
#define ETH_MACADDR1 0xaa |
#define ETH_MACADDR0 0x00 |
#define ETH_MACADDR1 0x01 |
#define ETH_MACADDR2 0x34 |
#define ETH_MACADDR3 0x56 |
#define ETH_MACADDR4 0x78 |
#define ETH_MACADDR5 0x9d |
#define ETH_MACADDR5 0x9e |
|
#endif |
|
|
|
#define UART_BAUD_RATE 115200 |
|
#define TICKS_PER_SEC 100 |
213,6 → 208,8
#define KBD_BASE_ADD 0x94000000 |
#define KBD_IRQ 5 |
|
#define SDC_CONTROLLER_BASE 0x9e000000 |
|
#define SANCHO_BASE_ADD 0x98000000 |
/* Address for ETH_DATA */ |
#define ETH_DATA_BASE (SDRAM_SIZE - (0x600 * 128)) |
/trunk/bootloaders/orpmon/services/net.c
122,7 → 122,7
int |
NetLoop(proto_t protocol) |
{ |
#if 1 |
|
if (!NetTxPacket) { |
int i; |
printf("NetTxPacket begin setup\n"); |
264,7 → 264,7
return 0; |
} |
} |
#endif |
|
} |
|
/**********************************************************************/ |
460,11 → 460,11
printf("Got IP\n"); |
#endif |
if (len < IP_HDR_SIZE) { |
debug ("len bad %d < %d\n", len, IP_HDR_SIZE); |
debug ("ip header len bad %d < %d\n", len, IP_HDR_SIZE); |
return; |
} |
if (len < SWAP16(ip->ip_len)) { |
printf("len bad %d < %d\n", len, SWAP16(ip->ip_len)); |
printf("ip header (swap) len bad %d < %d\n", len, SWAP16(ip->ip_len)); |
return; |
} |
len = SWAP16(ip->ip_len); |
/trunk/bootloaders/orpmon/services/tftp.c
268,6 → 268,7
TftpServerPort = src; |
TftpLastBlock = 0; |
|
|
if (TftpBlock != 1) { /* Assertion */ |
printf ("\nTFTP error: " |
"First block is not block 1 (%d)\n" |
277,8 → 278,11
break; |
} |
} |
|
|
if (TftpBlock == TftpLastBlock) { |
#ifdef ET_DEBUG |
printf("block %d - repeated\n",TftpLastBlock); |
#endif |
/* |
* Same block again; resend ack (maybe got lost last time) |
*/ |
287,6 → 291,9
} |
else |
{ |
#ifdef ET_DEBUG |
printf("block %d - OK\n",TftpLastBlock); |
#endif |
TftpLastBlock = TftpBlock; |
NetSetTimeout (TIMEOUT * TICKS_PER_SEC, TftpTimeout); |
|
/trunk/bootloaders/orpmon/drivers/eth.c
10,6 → 10,7
|
//#define PRINT_PACKETS |
//#define ETHPHY_10MBPS |
//#define ETHPHY_RESET_ON_INIT |
|
extern int printf (const char *fmt, ...); |
extern void lolev_ie(void); |
31,8 → 32,25
static void |
print_packet(unsigned long add, int len) |
{ |
int truncate = (len > 256); |
int length_to_print = truncate ? 256 : len; |
|
int i; |
|
printf("\nipacket: add = %lx len = %d\n", add, len); |
for(i = 0; i < length_to_print; i++) { |
if(!(i % 8)) |
printf(" "); |
if(!(i % 16)) |
printf("\n"); |
printf(" %.2x", *(((unsigned char *)add) + i)); |
|
} |
printf("\n"); |
|
if (truncate) |
printf("\ttruncated....\n"); |
/* |
int i; |
printf("ipacket: add = %lx len = %d\n", add, len); |
for(i = 0; i < len; i++) { |
if(!(i % 16)) printf("\n"); |
40,6 → 58,7
printf(" %.2x", *(((unsigned char *)add) + i)); |
} |
printf("\n"); |
*/ |
} |
|
void init_tx_bd_pool(void) |
213,8 → 232,20
REG32(ETH_REG_BASE + ETH_MODER) = ETH_MODER_RST; /* Reset ON */ |
REG32(ETH_REG_BASE + ETH_MODER) &= ~ETH_MODER_RST; /* Reset OFF */ |
|
/* Setting TX BD number */ |
REG32(ETH_REG_BASE + ETH_TX_BD_NUM) = ETH_TXBD_NUM; |
#ifdef ETHPHY_RESET_ON_INIT |
REG32(ETH_REG_BASE + ETH_MIIADDRESS) = 0<<8; // BMCR reg |
REG32(ETH_REG_BASE + ETH_MIITX_DATA) = 0x8000; // RESET bit |
REG32(ETH_REG_BASE + ETH_MIICOMMAND) = ETH_MIICOMMAND_WCTRLDATA; |
while(REG32(ETH_REG_BASE + ETH_MIISTATUS) & ETH_MIISTATUS_BUSY); |
|
while(1){ |
REG32(ETH_REG_BASE + ETH_MIIADDRESS) = 1<<8; |
REG32(ETH_REG_BASE + ETH_MIICOMMAND) = ETH_MIICOMMAND_RSTAT; |
while(REG32(ETH_REG_BASE + ETH_MIISTATUS) & ETH_MIISTATUS_BUSY); |
if(REG32(ETH_REG_BASE + ETH_MIIRX_DATA) & 0x04) |
break; |
} |
#endif |
|
#ifdef ETHPHY_10MBPS |
// Set PHY to 10 Mbps full duplex |
233,6 → 264,10
|
#endif |
|
|
/* Setting TX BD number */ |
REG32(ETH_REG_BASE + ETH_TX_BD_NUM) = ETH_TXBD_NUM; |
|
/* Set min/max packet length */ |
REG32(ETH_REG_BASE + ETH_PACKETLEN) = 0x00400600; |
|
265,6 → 300,8
|
/* Initialize rx pointers */ |
rx_next = 0; |
|
/* Assign receive function pointer to what we were passed */ |
receive = rec; |
|
/* Set local MAC address */ |
278,6 → 315,9
/* Clear all pending interrupts */ |
REG32(ETH_REG_BASE + ETH_INT) = 0xffffffff; |
|
/* Register interrupt handler */ |
int_add (ETH_IRQ, eth_int); |
|
/* Promisc, IFG, CRCEn */ |
REG32(ETH_REG_BASE + ETH_MODER) |= ETH_MODER_PAD | ETH_MODER_IFG | ETH_MODER_CRCEN; |
|
300,8 → 340,6
/* Enable receiver and transmiter */ |
REG32(ETH_REG_BASE + ETH_MODER) |= ETH_MODER_RXEN | ETH_MODER_TXEN; |
|
/* Register interrupt handler */ |
int_add (ETH_IRQ, eth_int); |
} |
|
/* Returns pointer to next free buffer; NULL if none available */ |
320,11 → 358,15
|
add = bd[tx_next].addr; |
|
tx_next = (tx_next + 1) & ETH_TXBD_NUM_MASK; |
tx_next++; |
|
if(tx_next == tx_last) |
tx_full = 1; |
if (tx_next == ETH_TXBD_NUM) |
tx_next = 0; |
|
// Disabled for now - highly unlikely we'll ever run out of TX buffer spots |
//if(tx_next == tx_last) |
//tx_full = 1; |
|
return (void *)add; |
} |
|
335,7 → 377,7
int i; |
|
#ifdef PRINT_PACKETS |
printf("transmitted packet:\t"); |
printf("transmitted packet txbd %d:\t", tx_last); |
print_packet(buf, len); |
#endif |
|
361,13 → 403,18
goto retry_eth_send; |
} |
*/ |
tx_last = (tx_last + 1) & ETH_TXBD_NUM_MASK; |
tx_last++; |
|
if (tx_last == ETH_TXBD_NUM) |
tx_last = 0; |
|
tx_full = 0; |
|
} |
|
/* Waits for packet and pass it to the upper layers */ |
unsigned long eth_rx (void) |
unsigned long |
eth_rx (void) |
{ |
eth_bd *bd; |
unsigned long len = 0; |
413,7 → 460,7
|
if(!bad) { |
#ifdef PRINT_PACKETS |
printf("received packet:\t"); |
printf("received packet: rxbd %d\t",rx_next); |
print_packet(bd[rx_next].addr, bd[rx_next].len_status >> 16); |
#endif |
|
424,7 → 471,10
bd[rx_next].len_status &= ~ETH_RX_BD_STATS; |
bd[rx_next].len_status |= ETH_RX_BD_EMPTY; |
|
rx_next = (rx_next + 1) & ETH_RXBD_NUM_MASK; |
rx_next++; |
|
if (rx_next == ETH_RXBD_NUM) |
rx_next = 0; |
} |
} |
|