Commit 25cdc6b2 authored by hongming's avatar hongming

Add support for TCPIP stack.

parent 130b7ff8
...@@ -13,7 +13,7 @@ obj-$(CONFIG_EMBEDDED_NODE) += \ ...@@ -13,7 +13,7 @@ obj-$(CONFIG_EMBEDDED_NODE) += \
dev/devicelist.o \ dev/devicelist.o \
dev/rxts_calibrator.o \ dev/rxts_calibrator.o \
dev/flash.o\ dev/flash.o\
dev/ext_config.o dev/tcpip_config.o
obj-$(CONFIG_WR_NODE) += \ obj-$(CONFIG_WR_NODE) += \
dev/temperature.o \ dev/temperature.o \
......
...@@ -19,7 +19,7 @@ unsigned char *BASE_SYSCON; ...@@ -19,7 +19,7 @@ unsigned char *BASE_SYSCON;
unsigned char *BASE_UART; unsigned char *BASE_UART;
unsigned char *BASE_ONEWIRE; unsigned char *BASE_ONEWIRE;
unsigned char *BASE_ETHERBONE_CFG; unsigned char *BASE_ETHERBONE_CFG;
unsigned char *BASE_EXT_CFG; unsigned char *BASE_TCPIP_CFG;
/* The sdb filesystem itself */ /* The sdb filesystem itself */
static struct sdbfs wrc_fpga_sdb = { static struct sdbfs wrc_fpga_sdb = {
...@@ -72,7 +72,7 @@ struct wrc_device devs[] = { ...@@ -72,7 +72,7 @@ struct wrc_device devs[] = {
{&BASE_SYSCON, VID_CERN, 0xff07fc47}, {&BASE_SYSCON, VID_CERN, 0xff07fc47},
{&BASE_UART, VID_CERN, 0xe2d13d04}, {&BASE_UART, VID_CERN, 0xe2d13d04},
{&BASE_ONEWIRE, VID_CERN, 0x779c5443}, {&BASE_ONEWIRE, VID_CERN, 0x779c5443},
{&BASE_EXT_CFG, VID_THU, 0xc0413599}, {&BASE_TCPIP_CFG, VID_THU, 0xc0413599},
{&BASE_ETHERBONE_CFG, VID_GSI, 0x68202b22}, {&BASE_ETHERBONE_CFG, VID_GSI, 0x68202b22},
}; };
......
#include <string.h> #include <string.h>
#include "endpoint.h" #include "endpoint.h"
#include "hw/ext-config.h" #include "hw/tcpip-config.h"
#include "ext_config.h" #include "tcpip_config.h"
void ext_init(uint8_t mac_addr[]) void tcpip_init(uint8_t mac_addr[])
{ {
volatile unsigned int *ext_tmp; volatile unsigned int *tcpip_tmp;
uint32_t tmp=0; uint32_t tmp=0;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_MAC_HIGH16); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_MAC_HIGH16);
tmp = ((uint32_t) mac_addr[0] << 8) tmp = ((uint32_t) mac_addr[0] << 8)
| ((uint32_t) mac_addr[1]); | ((uint32_t) mac_addr[1]);
*ext_tmp = tmp; *tcpip_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_MAC_LOW32); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_MAC_LOW32);
tmp = ((uint32_t) mac_addr[2] << 24) tmp = ((uint32_t) mac_addr[2] << 24)
| ((uint32_t) mac_addr[3] << 16) | ((uint32_t) mac_addr[3] << 16)
| ((uint32_t) mac_addr[4] << 8) | ((uint32_t) mac_addr[4] << 8)
| ((uint32_t) mac_addr[5]); | ((uint32_t) mac_addr[5]);
*ext_tmp = tmp; *tcpip_tmp = tmp;
} }
void ext_config(unsigned char *IP) void tcpip_config(unsigned char *IP)
{ {
unsigned int *ext_tmp; unsigned int *tcpip_tmp;
uint32_t tmp; uint32_t tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_IP_ADDR); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_IP_ADDR);
tmp = (*IP << 24) | (*(IP+1) << 16) | (*(IP+2) << 8) | (*(IP+3)); tmp = (*IP << 24) | (*(IP+1) << 16) | (*(IP+2) << 8) | (*(IP+3));
*ext_tmp = tmp; *tcpip_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_GATEWAY); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_GATEWAY);
tmp = (tmp & 0xFFFFFF00) + 1; tmp = (tmp & 0xFFFFFF00) + 1;
*ext_tmp = tmp; *tcpip_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_SUBNET_MASK); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_SUBNET_MASK);
tmp = 0xFFFFFF00; tmp = 0xFFFFFF00;
*ext_tmp = tmp; *tcpip_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_TCP_LOCAL_PORT); tcpip_tmp = (unsigned int *)(BASE_TCPIP_CFG + TCPIP_TCP_LOCAL_PORT);
tmp = 8000; tmp = 8000;
*ext_tmp = tmp; *tcpip_tmp = tmp;
} }
#ifndef __EXT_CONFIG_H
#define __EXT_CONFIG_H
#include <stdint.h>
void ext_init(uint8_t mac_addr[]);
void ext_config(unsigned char *IP);
#endif
...@@ -16,7 +16,7 @@ extern unsigned char *BASE_SYSCON; ...@@ -16,7 +16,7 @@ extern unsigned char *BASE_SYSCON;
extern unsigned char *BASE_UART; extern unsigned char *BASE_UART;
extern unsigned char *BASE_ONEWIRE; extern unsigned char *BASE_ONEWIRE;
extern unsigned char *BASE_ETHERBONE_CFG; extern unsigned char *BASE_ETHERBONE_CFG;
extern unsigned char *BASE_EXT_CFG; extern unsigned char *BASE_TCPIP_CFG;
#define FMC_EEPROM_ADR 0x50 #define FMC_EEPROM_ADR 0x50
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
* *
* Released according to the GNU GPL, version 2 or any later version. * Released according to the GNU GPL, version 2 or any later version.
*/ */
#ifndef EXT_CONFIG #ifndef TCPIP_CONFIG
#define EXT_CONFIG #define TCPIP_CONFIG
#define ERROR_STATUS_HIGH 0 #define ERROR_STATUS_HIGH 0
#define ERROR_STATUS_LOW 4 #define ERROR_STATUS_LOW 4
...@@ -12,17 +12,17 @@ ...@@ -12,17 +12,17 @@
#define SDB_ADDRSES_LOW 12 #define SDB_ADDRSES_LOW 12
/* These are implementation specific */ /* These are implementation specific */
#define EXT_MAC_HIGH16 16 #define TCPIP_MAC_HIGH16 16
#define EXT_MAC_LOW32 20 #define TCPIP_MAC_LOW32 20
#define EXT_IP_ADDR 24 #define TCPIP_IP_ADDR 24
#define EXT_GATEWAY 28 #define TCPIP_GATEWAY 28
#define EXT_SUBNET_MASK 32 #define TCPIP_SUBNET_MASK 32
#define EXT_UDP_RX_PORT 36 #define TCPIP_UDP_RX_PORT 36
#define EXT_UDP_TX_SRC_PORT 40 #define TCPIP_UDP_TX_SRC_PORT 40
#define EXT_UDP_TX_DST_PORT 44 #define TCPIP_UDP_TX_DST_PORT 44
#define EXT_UDP_TX_DST_IP 48 #define TCPIP_UDP_TX_DST_IP 48
#define EXT_UDP_TX_DST_MAC_HIGH16 52 #define TCPIP_UDP_TX_DST_MAC_HIGH16 52
#define EXT_UDP_TX_DST_MAC_LOW32 56 #define TCPIP_UDP_TX_DST_MAC_LOW32 56
#define EXT_TCP_LOCAL_PORT 60 #define TCPIP_TCP_LOCAL_PORT 60
#endif #endif
#ifndef __TCPIP_CONFIG_H
#define __TCPIP_CONFIG_H
#include <stdint.h>
void tcpip_init(uint8_t mac_addr[]);
void tcpip_config(unsigned char *IP);
#endif
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include "pps_gen.h" #include "pps_gen.h"
#include "hw/memlayout.h" #include "hw/memlayout.h"
#include "hw/etherbone-config.h" #include "hw/etherbone-config.h"
#include "ext_config.h" #include "tcpip_config.h"
enum ip_status ip_status = IP_TRAINING; enum ip_status ip_status = IP_TRAINING;
static uint8_t myIP[4]; static uint8_t myIP[4];
...@@ -207,7 +207,7 @@ void setIP(unsigned char *IP) ...@@ -207,7 +207,7 @@ void setIP(unsigned char *IP)
// while (*eb_ip != ip) // while (*eb_ip != ip)
// *eb_ip = ip; // *eb_ip = ip;
// ext_config(IP); tcpip_config(IP);
bootp_retry = 0; bootp_retry = 0;
} }
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "lib/ipv4.h" #include "lib/ipv4.h"
#include "rxts_calibrator.h" #include "rxts_calibrator.h"
#include "flash.h" #include "flash.h"
#include "ext_config.h" #include "tcpip_config.h"
#include "wrc_ptp.h" #include "wrc_ptp.h"
#include "system_checks.h" #include "system_checks.h"
...@@ -91,7 +91,7 @@ static void wrc_initialize(void) ...@@ -91,7 +91,7 @@ static void wrc_initialize(void)
net_rst(); net_rst();
ep_init(mac_addr); ep_init(mac_addr);
ext_init(mac_addr); tcpip_init(mac_addr);
/* Sleep for 1s to make sure WRS v4.2 always realizes that /* Sleep for 1s to make sure WRS v4.2 always realizes that
* the link is down */ * the link is down */
timer_delay_ms(200); timer_delay_ms(200);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment