Gast
#164631
Guten Abend,
Frage an die C Spezialisten:
Ich versuche mit der API von Wiznet einen W3100A Ethernet Chip zu
steuern. Hier ist meine Klippe an der ich
scheitere:
#define SEND_DATA_BUF[0] (*((volatile u_char xdata *)(0xC000))) //
Internal Tx buffer address of W3100A
#define RECV_DATA_BUF[0] (*((volatile u_char xdata *)(0xE000))) //
Internal Rx buffer address of W3100A
u_char *SBUFBASEADDRESS[4]; // Maximun Tx memory base address by each
channel
u_char *RBUFBASEADDRESS[4]; // Maximun Rx memory base address by each
channel
SBUFBASEADDRESS[0] = (u_char xdata *)0x0C000; // Set Base Address
of Tx memory for channel #0 von mir
RBUFBASEADDRESS[0] = (u_char xdata *)0x0E000; // Set Base Address
of Rx memory for channel #0 von mir
// SBUFBASEADDRESS[0] = SEND_DATA_BUF[0]; // Set Base Address of Tx
memory for channel #0
// RBUFBASEADDRESS[0] = RECV_DATA_BUF[0]; // Set Base Address of Rx
memory for channel #0
// Diese geben einen Fehler!!
printf("\nPointer:%x",SBUFBASEADDRESS[0]); //Druckt immer 0x4C4D
aus
Die Zeiger sind nicht wie erwartet. Ich muß mit SBUFBASEADDRESS[0] auf
0xC000 zeigen.
Die mit // weggenommenen Zeilen sind von der Original API und rufen
einen Fehler im C-Compiler hervor.
WARUM??
Wie sag ich es meinem Prozessor? Ich steh mit den Zeigern seit jeher
auf Kriegsfuß.
Danke,
Gruß
Thomas