Seeduino-Arch-Pro Ethernet
In order to make the Seeduino-Arch-Pro successfully init the ethernet interface... you need to have a
extern "C" void mbed_mac_address(char *mac)
routine. So something like this to hard code a MAC address:
extern "C" void mbed_mac_address(char *mac){ mac[0] = 0x00; mac[1] = 0x02; mac[2] = 0xF7; mac[3] = 0xF1; mac[4] = 0x91; mac[5] = 0x9F; };
or something dynamic based on serial number of the NXP chip:
extern "C" void mbed_mac_address(char *mac) { static char buf[64] = {0}; IAP iap; int32_t *block = iap.read_serial(); uint32_t serial_number[5] = {0}; memset(buf, 0, sizeof(buf)); serial_number[0] = *(block); serial_number[1] = *(block+1); // we only want bottom 16 bits of word1 (MAC bits 32-47) // and bit 9 forced to 1, bit 8 forced to 0 // Locally administered MAC, reduced conflicts // http://en.wikipedia.org/wiki/MAC_address //serial_number[0] |= 0x00000200; //serial_number[0] &= 0x0000FEFF; memcpy(mac, (uint8_t*) &serial_number[0], 6); mac[0] |= 0x02; mac[0] &= 0xFE; mac[5] |= 0x02; mac[5] &= 0xFE; snprintf(buf, 16, "%4X%08X", serial_number[0], serial_number[1]); }
not sure that final snprintf command is necessary.
Please log in to post comments.