2016-11-03 4 views
0

J'ai une carte Intel Galileo Gen 2 et je teste du code avec l'IDE Arduino. J'ai des problèmes lors de la configuration du réseau Ethernet. Je le code suivant, essentiellement évolué à partir des exemples:Arduino + Intel Galileo Gen 2 Ethernet IP non défini

#include <SPI.h> 
#include <Ethernet.h> 

byte mac[] = { 0x98, 0x4F, 0xEE, 0x05, 0x65, 0x02 }; 
IPAddress server(192, 168, 15, 64); 
IPAddress ip(192, 168, 15, 177); 
IPAddress dnServer(8, 8, 8, 8); 
IPAddress gateway(192, 168, 15, 1); 
IPAddress subnet(255, 255, 255, 0); 

EthernetClient client; 

void setup() { 

Serial.begin(9600); 
Serial.print("ip - "); 
Serial.println(ip); 
Ethernet.begin(mac, ip, dnServer, gateway, subnet); 
delay(1000); 
system("ifup eth0"); 
delay(1000); 
Serial.println(Ethernet.localIP()); 


    Serial.println("connecting..."); 

    if (client.connect("www.google.com", 80)) { 
     Serial.println("connected"); 
    client.println("GET /search?q=arduino HTTP/1.1"); 
    client.println("Host: www.google.com"); 
    client.println("Connection: close"); 
    client.println(); 
    } 
    else { 
    // if you didn't get a connection to the server: 
    Serial.println("connection failed"); 
    } 

} 

// the loop function runs over and over again forever 
void loop() { 

    if (client.available()) { 
    char c = client.read(); 
    Serial.print(c); 
    } 

    if (!client.connected()) { 
    Serial.println(); 
    Serial.println("disconnecting."); 
    client.stop(); 

    for(;;) 
     ; 
    } 

} 

C'est ce que je vois en conséquence:

ip - 192.168. 15.177 
255.255.255.255 
connecting... 
connection failed 

disconnecting. 

Ce que je vois est que pas d'adresse IP est aparently assignée comme localIP indique 255.255.255.255.

J'ai essayé quelques solutions trouvées dans les forums (interface vers le haut, désactiver de la carte SD) mais rien n'a fonctionné.

Qu'est-ce que je fais mal?

Merci


MISE À JOUR

J'ai corrigé la mauvaise adresse MAC. Ajout de la commande ifup. Aucun changement.

Après avoir ajouté la commande system("ifconfig -a > /dev/ttyGS0"); je reçois ceci:

enp0s20f6 Link encap:Ethernet HWaddr 98:4F:EE:05:65:02 
      UP BROADCAST MULTICAST MTU:1500 Metric:1 
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B) TX bytes:980 (980.0 B) 
      Interrupt:50 Base address:0x4000 

enp0s20f6:avahi Link encap:Ethernet HWaddr 98:4F:EE:05:65:02 
      inet addr:169.254.4.217 Bcast:169.254.255.255 Mask:255.255.0.0 
      UP BROADCAST MULTICAST MTU:1500 Metric:1 
      Interrupt:50 Base address:0x4000 

lo  Link encap:Local Loopback 
      inet addr:127.0.0.1 Mask:255.0.0.0 
      inet6 addr: ::1/128 Scope:Host 
      UP LOOPBACK RUNNING MTU:65536 Metric:1 
      RX packets:584 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:584 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:0 
      RX bytes:45040 (43.9 KiB) TX bytes:45040 (43.9 KiB) 

Si je comprends bien ne cherche pas à définir l'IP, mais toujours à la recherche de DHCP.

Répondre

0

La solution était de changer le nom d'interface. Les commandes à exécuter sont les suivantes:

system("ifconfig enp0s20f6 down "); 
system("ip link set enp0s20f6 name eth0"); 
system("ifconfig eth0 up"); 
0

Vous pouvez ajouter la ligne system("ifup eth0"); dans la fonction de configuration pour vous assurer que l'interface réseau est active.

Vérifiez votre adresse IP directement à partir du « côté Linux » de la carte avec la ligne system("ifconfig -a > /dev/ttyGS0");

+0

Mise à jour de la description avec le résultat – jordi