Forum: FPGA, VHDL & Co. Microblaze Webserver


von Chantal (Gast)


Lesenswert?

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 :-*

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.