www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OpenTCP MCF5235EVB


Autor: Morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe ein Problem mit der Übertragung meiner Daten zum Host PC,
habe ein MCF5235EVB von Freescale und habe mir den OpenTCP - Stack von 
der Seite geladen um mir Daten von Berechnungen über UDP an meinen 
HostPC zu senden. Hab am HostPC ne kleine Serveranwendung geschrieben 
mit winsockets die UDP Verbindungen entgegenimmt und verarbeitet. Hab 
den Stack soweit angepasst das ich einen UDP Socket erstelle und dann 
über Send erstmal eine kleine Nachricht übermittle, aber es kommt 
einfach nichts an.
Kann mir jmd sagen was daran falsch ist?
Hier ist die Main die aufm Board läuft:
#define UDP_PORT           1234
#define UDP_RMTHOST_IP     0xC0A8010B    
#define UDP_RMTHOST_PRT    1234  

int main (void)
{
  
  int16 len;
  int16 reset_timer;
  int16 packet_status;
  int8 retVal = 0;
  uint8 i = 0;
  uint8 net_buf[12];
  uint32 udp_host_ip = ((UINT32)IPS1)<<24 | ((UINT32)IPS2)<<16 | ((UINT32)IPS3)<<8 | IPS4;
  uint16 udp_host_port = 1234;
  /* Enable interrupts */
  mcf5xxx_wr_sr(0x2000);

  printf("\nMCF523x Initialization Complete!\n");

  /* Init Opentcp UDP Connection*/

  eth_stub_init();
  init_timerpool();
  fec_init(&fec_nif);
  arpinit();
  udp_init();

  /* Set 10 ms timer for OpenTCP timers  */

  MCF_PIT_PCSR0  = MCF_PIT_PCSR_PRE(0x09);  /* Divide fsys/2 by 512 --> 16.8 us/tic  */
  MCF_PIT_PCSR0 |= MCF_PIT_PCSR_OVW | MCF_PIT_PCSR_PIE |
                       MCF_PIT_PCSR_PIF | MCF_PIT_PCSR_RLD |
                       MCF_PIT_PCSR_EN;

  MCF_PIT_PMR0 = 1465;  /* Interrupt every 10 ms  */

  MCF_INTC0_ICR36 = MCF_INTC0_ICRn_IL(TIMER_NETWORK_LEVEL);
  MCF_INTC0_IMRH &= ~MCF_INTC0_IMRH_INT_MASK36;

  /* Enable FEC Rx Frame interrupts to ColdFire core */
  MCF_INTC0_ICR27 = MCF_INTC0_ICRn_IL(FEC_LEVEL);
  MCF_INTC0_IMRL &=   ~(MCF_INTC0_IMRL_INT_MASK27 | MCF_INTC0_IMRL_MASKALL);


  /* Initialize network device */
  //fec_init(&fec_nif);


  /* Write ethernet address in the NIF structure */
  fec_nif.hwa[0] = mac[0];
  fec_nif.hwa[1] = mac[1];
  fec_nif.hwa[2] = mac[2];
  fec_nif.hwa[3] = mac[3];
  fec_nif.hwa[4] = mac[4];
  fec_nif.hwa[5] = mac[5];

  /* Initialize Network Buffers */
  //nbuf_init();

  /* Register protocol handlers  */

  nif_bind_protocol(&fec_nif, FRAME_IP, opentcp_fechandler, "IP PROTOCOL");
  nif_bind_protocol(&fec_nif, FRAME_ARP, opentcp_fechandler, "ARP PROTOCOL");

  /* Start ethernet  */

  fec_nif.reset(&fec_nif);
  fec_nif.start(&fec_nif);

  /* Set OpenTCP localmachine  */

  localmachine.localip = ((UINT32)IP1)<<24 | ((UINT32)IP2)<<16 | ((UINT32)IP3)<<8 | IP4;
  //localmachine.localip = 0xC0A80101;
  localmachine.localHW[0] = mac[0];
  localmachine.localHW[1] = mac[1];
  localmachine.localHW[2] = mac[2];
  localmachine.localHW[3] = mac[3];
  localmachine.localHW[4] = mac[4];
  localmachine.localHW[5] = mac[5];
  localmachine.defgw   = ((UINT32)GW1)<<24 | ((UINT32)GW2)<<16 | ((UINT32)GW3)<<8 | GW4;
  localmachine.netmask = ((UINT32)SM1)<<24 | ((UINT32)SM2)<<16 | ((UINT32)SM3)<<8 | SM4;
  localmachine.tos = 0;

  printf("IP Address:   %d.%d.%d.%d\n", IP1, IP2, IP3, IP4);
  printf("Subnet Mask: %d.%d.%d.%d\n", SM1, SM2, SM3, SM4);
  printf("Gateway:      %d.%d.%d.%d\n", GW1, GW2, GW3, GW4);


  
 /* Start UDP Connection */
 socket = udp_getsocket(0 , udp_eventlistener , UDP_OPT_SEND_CS | UDP_OPT_CHECK_CS);
 if(socket == -1 )
 {
    DEBUGOUT("No free UDP sockets!! \r\n");
    RESET_SYSTEM();
 }
udp_open(socket,UDP_PORT);
 
 /* Creating message */
 for(i=0;i<12;i++)
  net_buf[UDP_APP_OFFSET+i]='a';
  
  
 /* Start sending message */
  while(1)
  {
    udp_send(socket,UDP_RMTHOST_IP,UDP_RMTHOST_PRT,net_buf,NETWORK_TX_BUFFER_SIZE,12);
  }
  

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.