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.
11 years, 2 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
11 years, 2 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