|
Kategorie: Diplomové, bakalářské práce |
Tento dokument chci!
Předmětem této práce je studium stávajícího vývojového řetězce pro mikroprocesor LPC23xx v předmětu MPOA. Hlavním cílem je zkoumání možností realizace nového vývojového řetězce, postaveného na GCC. Výstupy této práce jsou ukázkové aplikace s mikroprocesorem LPC2378 a GCC. Součástí vysledků jsou i návody pro studenty, jak tyto ukázkové aplikace implementovat. Ukázky zahrnují základní aplikace, RTOS aEthernet.
Strana 69 z 93
«
Vámi hledaný text obsahuje tato stránku dokumentu který není autorem určen k veřejnému šíření.
»
Jak získat tento dokument?
Poznámky redaktora
62
MAC_MAC1 0x00000003; //enable RX
}
void send_data_emac(void *header, void *data, unsigned long length)
{
unsigned char index,i;
unsigned char *ptr,*d,*h;
short x;
h header; //ulozi pointr hlavicku paketu
d data; //ulozi pointe data paketu
i length; //ulozi delku paketu
index MAC_TXPRODUCEINDEX; //nacte index volneho deskriptoru
ptr unsigned char *)(* (volatile unsigned long (0x7FE00000 +
8*RX_BUF_SIZE 8*RX_BUF_SIZE index*8));
//nacte adresu zacatku oblasti RAM kam ukayuje prazdnz descriptor
i uipTOTAL_FRAME_HEADER_SIZE;
while(i--)
{
*ptr++ *h++;
}
x length uipTOTAL_FRAME_HEADER_SIZE;
if(x 0)
{
while(x--)
{
*ptr++ *d++;
}
}
(* (volatile unsigned long (0x7FE00000 (RX_BUF_SIZE*8) (RX_BUF_SIZE*8) +
4 (index*8)) length 0x40000000;
//delka paketu plus nastaveni tento paket posledni kterz software poslal
index++; //posun indexu dalsi deskriptor
if(index==TX_BUF_SIZE)
{
index //orezani indexu maximalni hodnotu udanou TX_BUF_SIZE
}
MAC_TXPRODUCEINDEX index;
//zmena indexu DMA timto dojde odeslani novy index ukazuje dalsi volnz
//descriptor
}
unsigned long get_data_emac(char *data)
{
unsigned char index;
unsigned char *ptr;
unsigned short length,i;
if( MAC_RXPRODUCEINDEX MAC_RXCONSUMEINDEX )
//podminka skutecne novz paket
{
index MAC_RXCONSUMEINDEX;
ptr unsigned char *)(* (volatile unsigned long (0x7FE00000 +
index*8));
//nacte adresu kde lezi prijatz eth paket
length (0x07FF (volatile unsigned long (0x7FE00000 +
(8*RX_BUF_SIZE)+ (index*8)) 1;
i length;
while(i--)
{
*data++=*ptr++;
}
index++;
if(index==RX_BUF_SIZE)
{
index=0;