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, 11 months 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, 11 months 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