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