Využítí ARM GCC vývojového retezce

| 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.

Vydal: FEKT VUT Brno Autor: Jan Ledvina

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