|
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 68 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
*/
vSemaphoreCreateBinary( xEMACSemaphore //prevzato kodu FreeRTOS
MAC_INTCLEAR 0x000006FF; //enable interupt
MAC_COMMAND MAC_COMMAND 0x00000003; //enable TX
.61
PINSEL2 configPINSEL2_VALUE; //nastaveni funkcnich pinu
PINSEL3 PINSEL3 0x00000005; //nastaveni pinu
MAC_MAC1 0x0000BF00; reset
MAC_COMMAND 0x00000034; reset
MAC_MAC1 0x00000002;
MAC_MAC2 0x00000021; //CRC zapnout full duplex -ano
MAC_IPGT 0x00000015; //hodnota dle doporuceni datasheetu
MAC_IPGR 0x00000012;
MAC_CLRT 0x00003708; //pocet retransmisi pripade kolize 8
MAC_MAXF PACKET_LENGTH; //maximalni delka paketu
MAC_SUPP 0x00000100; //podpora 100Mbps PHY -ano
MAC_COMMAND 0x00000640;
write_data(0x00,0x8000); //reset PHY
//zde cekat aspon us
delay 72*4;
while(delay--);
MAC_SA0 0000;
MAC_SA1 1234;
MAC_SA2 5678;
//namapovani pameti pro data
MAC_RXDESCRIPTOR 0x7FE00000;
// registr procesoru obsahujici pocatecni adresu deskriptoru pro RX
MAC_RXSTATUS 0x7FE00000 RX_BUF_SIZE*8;
// registr procesoru obsahujici pocatecni adresu status pameti
MAC_RXDESCRIPTORNUM RX_BUF_SIZE-1;
// registr procesoru obsahujici pocet deskriptoru,statusu, pametovzch mist
// pro pakety, pouziva logika zapisu -1
MAC_TXDESCRIPTOR 0x7FE00000 RX_BUF_SIZE*8 RX_BUF_SIZE*8;
MAC_TXSTATUS 0x7FE00000 RX_BUF_SIZE*8 RX_BUF_SIZE*8 TX_BUF_SIZE*8;
MAC_TXDESCRIPTORNUM TX_BUF_SIZE-1;
for RX_BUF_SIZE; i++)
{
(* (volatile unsigned long (0x7FE00000 (8*i)) 0x7FE00000 +
RX_BUF_SIZE*8 RX_BUF_SIZE*8 TX_BUF_SIZE*8 TX_BUF_SIZE*4 +
PACKET_LENGTH*i; //deskriptor pointer data rx
(* (volatile unsigned long (0x7FE00000 (8*i) PACKET_LENGTH |
0x80000000; //deskriptor velikost dat plus povoleni interuptu
(* (volatile unsigned long (0x7FE00000 (8*i) (8*RX_BUF_SIZE)) =
0x00000000; //vymazani statusu
(* (volatile unsigned long (0x7FE00000 (8*i) (8*RX_BUF_SIZE) =
0x00000000;//vymazani statusu
}
//namapovani pameti pro data
for TX_BUF_SIZE; i++)
{
(* (volatile unsigned long (0x7FE00000 (8*RX_BUF_SIZE) (8*RX_BUF_SIZE)
+ (8*i)) 0x7FE00000 RX_BUF_SIZE*8 RX_BUF_SIZE*8 TX_BUF_SIZE*8 +
TX_BUF_SIZE*4 PACKET_LENGTH*RX_BUF_SIZE i*PACKET_LENGTH;
(* (volatile unsigned long (0x7FE00000 (8*RX_BUF_SIZE) (8*RX_BUF_SIZE)
+ (8*i) 0x00000000;
(* (volatile unsigned long (0x7FE00000 (8*RX_BUF_SIZE) (8*RX_BUF_SIZE)
+ (8*TX_BUF_SIZE) (4*i)) 0x00000000; //vymazani statusu
}
MAC_RXCONSUMEINDEX //vychozi deskriptor RX
MAC_TXPRODUCEINDEX //vychozi deskriptor TX
MAC_RXFILTERCTRL 0x00000027;
//filtrovani paketu pousti broadcastz, unicast, multicast, musi sedet adresa
/* Create the semaphore used wake the uIP task