Commit eaaa9943 authored by hongming's avatar hongming

Add ip config for ext module.

    Add some functions to configure the ip address, mac address and recv
    & send port of the ext module.
parent f2805683
......@@ -4,23 +4,41 @@
#include "hw/ext-config.h"
#include "ext_config.h"
void ext_config(unsigned char *IP,unsigned char *MAC)
void ext_init(uint8_t mac_addr[])
{
unsigned int *ext_tmp;
unsigned int tmp;
volatile unsigned int *ext_tmp;
uint32_t tmp=0;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_MAC_HIGH16);
tmp = (*MAC << 8) | (*(MAC+1));
tmp = ((uint32_t) mac_addr[0] << 8)
| ((uint32_t) mac_addr[1]);
*ext_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_MAC_LOW32);
tmp = (*(MAC+2) << 24) | (*(MAC+3) << 16) | (*(MAC+4) << 8) | (*(MAC+5));
tmp = ((uint32_t) mac_addr[2] << 24)
| ((uint32_t) mac_addr[3] << 16)
| ((uint32_t) mac_addr[4] << 8)
| ((uint32_t) mac_addr[5]);
*ext_tmp = tmp;
}
void ext_config(unsigned char *IP)
{
unsigned int *ext_tmp;
uint32_t tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_IP_ADDR);
tmp = (*IP << 24) | (*(IP+1) << 16) | (*(IP+2) << 8) | (*(IP+3));
*ext_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_GATEWAY);
tmp = (tmp & 0xFFFFFF00) + 1;
*ext_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_SUBNET_MASK);
tmp = 0xFFFFFF00;
*ext_tmp = tmp;
ext_tmp = (unsigned int *)(BASE_EXT_CFG + EXT_UDP_RX_PORT);
tmp = 60000;
*ext_tmp = tmp;
......
......@@ -3,6 +3,7 @@
#include <stdint.h>
void ext_config(unsigned char *IP,unsigned char *MAC);
void ext_init(uint8_t mac_addr[]);
void ext_config(unsigned char *IP);
#endif
......@@ -15,12 +15,14 @@
#define EXT_MAC_HIGH16 16
#define EXT_MAC_LOW32 20
#define EXT_IP_ADDR 24
#define EXT_UDP_RX_PORT 28
#define EXT_UDP_TX_SRC_PORT 32
#define EXT_UDP_TX_DST_PORT 36
#define EXT_UDP_TX_DST_IP 40
#define EXT_UDP_TX_DST_MAC_HIGH16 44
#define EXT_UDP_TX_DST_MAC_LOW32 48
#define EXT_TCP_LOCAL_PORT 52
#define EXT_GATEWAY 28
#define EXT_SUBNET_MASK 32
#define EXT_UDP_RX_PORT 36
#define EXT_UDP_TX_SRC_PORT 40
#define EXT_UDP_TX_DST_PORT 44
#define EXT_UDP_TX_DST_IP 48
#define EXT_UDP_TX_DST_MAC_HIGH16 52
#define EXT_UDP_TX_DST_MAC_LOW32 56
#define EXT_TCP_LOCAL_PORT 60
#endif
......@@ -90,6 +90,14 @@ void getIP(unsigned char *IP)
void setIP(unsigned char *IP)
{
memcpy(myIP, IP, 4);
volatile unsigned int *eb_ip=(unsigned int *)(BASE_ETHERBONE_CFG+EB_IPV4);
unsigned int ip;
memcpy(myIP, IP, 4);
ip = (myIP[0] << 24) | (myIP[1] << 16) | (myIP[2] << 8) | (myIP[3]);
*eb_ip = ip;
ext_config(IP);
needIP = 0;
}
......@@ -344,10 +344,10 @@ void pfilter_init(int mode, char *fname)
pfilter_logic3(FRAME_FOR_CPU, FRAME_IP_UNI, AND, FRAME_ICMP, OR, R_TMP);
/* Ethernet = 14 bytes, IPv4 = 20 bytes, offset to dport: 2 = 36/2 = 18 */
pfilter_cmp(18, 0x0044, 0xffff, MOV, R_TMP); /* R_TMP now means dport = BOOTPC */
//pfilter_cmp(18, 0x0044, 0xffff, MOV, R_TMP); /* R_TMP now means dport = BOOTPC */
pfilter_logic3(R_TMP, R_TMP, AND, FRAME_UDP, AND, FRAME_IP_OK); /* BOOTPC and UDP and IP(unicast|broadcast) */
pfilter_logic2(FRAME_FOR_CPU, R_TMP, OR, FRAME_FOR_CPU);
//pfilter_logic3(R_TMP, R_TMP, AND, FRAME_UDP, AND, FRAME_IP_OK); /* BOOTPC and UDP and IP(unicast|broadcast) */
//pfilter_logic2(FRAME_FOR_CPU, R_TMP, OR, FRAME_FOR_CPU);
if (mode & MODE_NIC_PFILTER) {
......
......@@ -29,6 +29,7 @@
#include "lib/ipv4.h"
#include "rxts_calibrator.h"
#include "flash.h"
#include "ext_config.h"
#include "wrc_ptp.h"
#include "system_checks.h"
......@@ -81,6 +82,8 @@ static void wrc_initialize(void)
mac_addr[4], mac_addr[5]);
ep_init(mac_addr);
ext_init(mac_addr);
ep_enable(1, 1);
minic_init();
......
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