Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 1 month ago.
K64F MAC address configuration
All of my K64F boards get the same IP address from DHCP because they expose the same MAC address. Debugging into k64F_emac.c shows that the call to mbed_mac_address() returns a constant MAC address instead of determining the MAC (00 02 F7 F0 00 00) from the board.
Am I missing the right mbed_mac_address() implementation? Do I have to implement this function on my own? What else am I doing wrong?
Thanks Matthias
p.s. I am using the KEIL MDK p.p.s. I tried the WebSockets sample project and found the same issue (http://developer.mbed.org/users/wjenkins7/code/websocketexample/) p.p.p.s. The project on a single board works fine
1 Answer
10 years, 1 month ago.
Hello,
are you using the latest mbed lib, this is mbed address implementation:
// Provide ethernet devices with a semi-unique MAC address from the UUID void mbed_mac_address(char *mac) { // Fetch word 0 uint32_t word0 = *(uint32_t *)0x40048060; // Fetch word 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 uint32_t word1 = *(uint32_t *)0x4004805C; word1 |= 0x00000200; word1 &= 0x0000FEFF; mac[0] = (word1 & 0x000000ff); mac[1] = (word1 & 0x0000ff00) >> 8; mac[2] = (word0 & 0xff000000) >> 24; mac[3] = (word0 & 0x00ff0000) >> 16; mac[4] = (word0 & 0x0000ff00) >> 8; mac[5] = (word0 & 0x000000ff); }
It should be weak linked so to provide users an option to assign own mac address.
Regards,
0xc0170