Hallo zusammen,
ich habe folgendes problem!
ich will mit meinem virtex 5 board einen webserver zusammenstellen, hab
auf dem gebiet leider noch nicht sehr viel erfahrung sammeln können. ich
habe mir schon mehrere reference designs angesehn werde aus ihnen leider
auch nicht schlauer...
ich hab den mircoblaze mit der ethernetlite konfiguriert und würde gerne
etwas über die lan schnittstelle nach außen schicken, nun habe ich schon
folgenden code um dies zu bewerkstelligen:
1 | int main(void)
|
2 | {
|
3 |
|
4 | int Data=0b1011101010111010,ByteCount=4;
|
5 |
|
6 |
|
7 | XEmacLite MacLite;
|
8 | XEmacLite_Initialize(&MacLite, XPAR_XEMACLITE_NUM_INSTANCES);
|
9 | XEmacLite_CfgInitialize(&MacLite,XPAR_EMACLITE_0_BASEADDR,NULL);
|
10 | XEmacLite_SetMacAddress(&MacLite,&macaddress);
|
11 | XEmacLite_SetTxStatus(XPAR_EMACLITE_0_BASEADDR,1);
|
12 | while(1) XEmacLite_Send(&MacLite,Data,ByteCount);
|
13 | }
|
mein momentanes problem ist dass das programm beim debuggen in der zeile
1 | XEmacLite_SetMacAddress(&MacLite,&macaddress);
|
hängen bleibt, da es in einer headerdatei auf eine rüggabe wartet
(denke ich?):
xemaclite.h
1 | void XEmacLite_SetMacAddress(XEmacLite *InstancePtr, u8 *AddressPtr)
|
2 | {
|
3 | u32 BaseAddress;
|
4 |
|
5 | /*
|
6 | * Verify that each of the inputs are valid.
|
7 | */
|
8 | Xil_AssertVoid(InstancePtr != NULL);
|
9 |
|
10 | /*
|
11 | * Determine the expected TX buffer address.
|
12 | */
|
13 | BaseAddress = XEmacLite_NextTransmitAddr(InstancePtr);
|
14 |
|
15 | /*
|
16 | * Copy the MAC address to the Transmit buffer.
|
17 | */
|
18 | XEmacLite_AlignedWrite(AddressPtr,
|
19 | (u32 *) BaseAddress,
|
20 | XEL_MAC_ADDR_SIZE);
|
21 |
|
22 | /*
|
23 | * Set the length.
|
24 | */
|
25 | XEmacLite_WriteReg(BaseAddress,
|
26 | XEL_TPLR_OFFSET,
|
27 | XEL_MAC_ADDR_SIZE);
|
28 |
|
29 | /*
|
30 | * Update the MAC address in the EmacLite.
|
31 | */
|
32 | XEmacLite_SetTxStatus(BaseAddress, XEL_TSR_PROG_MAC_ADDR);
|
33 |
|
34 |
|
35 | /*
|
36 | * Wait for EmacLite to finish with the MAC address update.
|
37 | */
|
38 | while ((XEmacLite_GetTxStatus(BaseAddress) &
|
39 | XEL_TSR_PROG_MAC_ADDR) != 0);
|
40 |
|
41 | }
|
in der letzen while bleibt er hängen, meine frage ist warum? habe ich
etwas übersehen oder vergessen? wie bekommt der den tx status ?
danke im vorraus !
bussi chantal :-*