Ich habe das Problem, dass ich nicht weiss wie ich die Mac adresse des
Texas Instrument evalbots auslesen kann.
Es geht daraum, dasss ich zwischen mehreren evalbots im C-code
unterscheiden muss und ich das anhand der MAC-adressen machen möchte.
Texas instrument liefert dafür extra eine Methode
1 | //! Gets the MAC address of the Ethernet controller.
|
2 | //!
|
3 | //! \param ulBase is the base address of the controller.
|
4 | //! \param pucMACAddr is the pointer to the location in which to store the
|
5 | //! array of MAC-48 address octets.
|
6 | //!
|
7 | //! This function will read the currently programmed MAC address into the
|
8 | //! \e pucMACAddr buffer.
|
9 | //!
|
10 | //! \sa Refer to EthernetMACAddrSet() API description for more details about
|
11 | //! the MAC address format.
|
12 | //!
|
13 | //! \return None.
|
14 |
|
15 |
|
16 | void
|
17 | EthernetMACAddrGet(unsigned long ulBase, unsigned char *pucMACAddr)
|
18 | {
|
19 | unsigned long ulTemp;
|
20 | unsigned char *pucTemp = (unsigned char *)&ulTemp;
|
21 |
|
22 | //
|
23 | // Check the arguments.
|
24 | //
|
25 | ASSERT(ulBase == ETH_BASE);
|
26 | ASSERT(pucMACAddr != 0);
|
27 |
|
28 | //
|
29 | // Read the MAC address from the device. The first four bytes of the
|
30 | // MAC address are read from the IA0 register. The remaining two bytes
|
31 | // of the MAC addres
|
32 | //
|
33 | ulTemp = HWREG(ulBase + MAC_O_IA0);
|
34 | pucMACAddr[0] = pucTemp[0];
|
35 | pucMACAddr[1] = pucTemp[1];
|
36 | pucMACAddr[2] = pucTemp[2];
|
37 | pucMACAddr[3] = pucTemp[3];
|
38 | ulTemp = HWREG(ulBase + MAC_O_IA1);
|
39 | pucMACAddr[4] = pucTemp[0];
|
40 | pucMACAddr[5] = pucTemp[1];
|
41 | })
|
ich weiss leider nicht ob ich die erklärung verstanden habe aber ich
glaube nicht, da ich nur blödsinn über uart ausgegeben bekomme.
Meine idee sieht so aus:
1 | unsigned char MacAdrBuffer[60]; // zum speichern der MACadresse
|
2 |
|
3 | ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
|
4 | ROM_EthernetMACAddrGet(ETH_BASE, &MacAdrBuffer[0]);
|
5 | UARTprintf("Wert\n");
|
6 | UARTprintf("%s\n",*MacAdrBuffer);
|
7 | UARTprintf("ende\n");
|
er gibt mir immer nur ein zeichen aus. mir ist aufgefallen, dass das
ausgegebene zeichen abhängig von der länge meines buffers ist