freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于armcortexm3的雙以太網(wǎng)口通信的實(shí)現(xiàn)畢業(yè)論文-預(yù)覽頁(yè)

 

【正文】 安裝RealView MDK(正式版或評(píng)估版) +,它不僅是軟件仿真工具,也是編譯器鏈接器。3. 開(kāi)發(fā)板MB9F618簡(jiǎn)介 開(kāi)發(fā)板外觀(guān)圖23 MB9F618外觀(guān) 配置說(shuō)明處理器Fujitsu MB9BF618S(ARM CortexM3 核心)主頻可達(dá)144M。八通道DMA,兩種看門(mén)狗定時(shí)器,12位A/D轉(zhuǎn)換器等。11第三章 軟件的設(shè)計(jì)第三章 軟件的設(shè)計(jì)1. 嵌入式操作系統(tǒng)的選擇 RTThread操作系統(tǒng)的簡(jiǎn)介RTThread是一個(gè)開(kāi)放源代碼的實(shí)時(shí)操作系統(tǒng),并且商業(yè)許可證非常寬松的實(shí)時(shí)操作系統(tǒng)。當(dāng)RTThread + CortexM3 + Keil MDK碰撞在一起的時(shí)候,火花因它而生,越來(lái)越多人使用RTThread了,當(dāng)然這和RTThread厚積薄發(fā)是離不開(kāi)的,因?yàn)檫@個(gè)時(shí)候,RTThread已經(jīng)有一個(gè)穩(wěn)定的內(nèi)核,shell方式的調(diào)試?yán)?nsh,DFS虛擬設(shè)備文件系統(tǒng),LwIP協(xié)議棧以及自己從頭開(kāi)發(fā)的圖形用戶(hù)界面GUI。圖31 RTThread及外圍組件的基本框架圖RTThread Kernel內(nèi)核部分包括了RTThread的核心代碼,包括對(duì)象管理器,線(xiàn)程管理及調(diào)度,線(xiàn)程間通信等的微小內(nèi)核實(shí)現(xiàn)(最小能夠到達(dá)4k ROM,1k RAM體積占用)。虛擬文件系統(tǒng)的好處就是,不管下層采用了什么文件系統(tǒng),例如內(nèi)存虛擬文件系統(tǒng),F(xiàn)AT32文件系統(tǒng)還是YAFFS2閃存文件系統(tǒng),對(duì)上層應(yīng)用程序提供的接口都是統(tǒng)一的。它同樣也包括了基本控件的支持、中文顯示的支持、多線(xiàn)程的支持;針對(duì)嵌入式系統(tǒng)計(jì)算能力不足的特點(diǎn),它會(huì)自動(dòng)對(duì)界面區(qū)域進(jìn)行可視區(qū)域的剪切,該重繪顯示的地方進(jìn)行重繪,被覆蓋的地方則不進(jìn)行重復(fù)繪圖。 面向?qū)ο笤从谌祟?lèi)對(duì)世界的認(rèn)知多偏向于類(lèi)別模式,根據(jù)世界中不同物品的特性分門(mén)別類(lèi)的組織在一起抽象并歸納,形成各個(gè)類(lèi)別的自有屬性。RTThread實(shí)時(shí)操作系統(tǒng)中包含一個(gè)小型的,非常緊湊的對(duì)象系統(tǒng),這個(gè)對(duì)象系統(tǒng)完全采用C語(yǔ)言實(shí)現(xiàn)。通過(guò)內(nèi)核對(duì)象系統(tǒng),RTThread做到了不依賴(lài)于具體的內(nèi)存分配方式,系統(tǒng)的靈活性得到極大的提高。下圖顯示了RTThread中各類(lèi)內(nèi)核對(duì)象的派生和繼承關(guān)系。圖34 RTThread中各類(lèi)內(nèi)核對(duì)象的派生和繼承關(guān)系在對(duì)象管理模塊中,定義了通用的數(shù)據(jù)結(jié)構(gòu),用來(lái)保存各種對(duì)象的共同屬性,各種具體對(duì)象只需要在此基礎(chǔ)上加上自己的某些特別的屬性,就可以清楚的表示自己的特征。在RTThread實(shí)時(shí)操作系統(tǒng)中,線(xiàn)程包含四種狀態(tài),操作系統(tǒng)會(huì)自動(dòng)根據(jù)它運(yùn)行的情況而動(dòng)態(tài)調(diào)整它的狀態(tài)。(2)RT THREAD SUSPEND掛起態(tài)。線(xiàn)程正在運(yùn)行;或當(dāng)前線(xiàn)程運(yùn)行完讓出處理機(jī)后,操作系統(tǒng)尋找最高優(yōu)先級(jí)的就緒態(tài)線(xiàn)程運(yùn)行。例如一個(gè)就緒態(tài)的線(xiàn)程由于申請(qǐng)一個(gè)資源(例如使用rt sem take),而有可能進(jìn)入阻塞態(tài)。在掛起狀態(tài)的線(xiàn)程,如果它等待超時(shí)依然未獲得資源或由于其他線(xiàn)程釋放了資源,它將返回到就緒狀態(tài)。為了簡(jiǎn)化處理過(guò)程和內(nèi)存要求,lwIP對(duì)API進(jìn)行了裁減,可以不需要復(fù)制一些數(shù)據(jù)。該回調(diào)函數(shù)與特定的連接相關(guān)聯(lián),當(dāng)該關(guān)聯(lián)的連接到達(dá)一個(gè)信息包,該回調(diào)函數(shù)就會(huì)被協(xié)議棧調(diào)用。這個(gè)缺點(diǎn)可以通過(guò)把應(yīng)用程序分為兩部分來(lái)克 服,一部分處理通訊,一部分處理運(yùn)算。LwIP顯然已經(jīng)考慮到了這一點(diǎn),他為我們提供了tcpip_input()函數(shù)來(lái)處理這個(gè)問(wèn)題,雖然他并沒(méi)有在rawapi一文中說(shuō)明。投遞結(jié)束,接收任務(wù)繼續(xù)下一個(gè)數(shù)據(jù)包的接收,而被投遞得IP包將由TCPIP線(xiàn)程繼續(xù)處理。這對(duì)于我們的嵌入式應(yīng)用有時(shí)是不能容忍的。 //源 MAC 地址 PACK_STRUCT_FIELD(u16_t type)。 struct netif *netif = (struct netif *)arg。 //取得數(shù)據(jù)包內(nèi)數(shù)據(jù) switch (htons(ethhdrtype)) //判斷數(shù)據(jù)包類(lèi)型 { //只對(duì)IP數(shù)據(jù)包和ARP數(shù)據(jù)包進(jìn)行處理 case ETHTYPE_IP: //IP數(shù)據(jù)包 case ETHTYPE_ARP: //ARP數(shù)據(jù)包 if (netifinput(p, netif)!=ERR_OK) //將數(shù)據(jù)包發(fā)送到上層應(yīng)用函數(shù) { pbuf_free(p)。 p = NULL。使用查詢(xún)方式實(shí)現(xiàn)的數(shù)據(jù)包接收進(jìn)程其優(yōu)先級(jí)必須低于系統(tǒng)中其他進(jìn)程的優(yōu)先級(jí),否則它會(huì)阻塞比它優(yōu)先級(jí)低的進(jìn)程的運(yùn)行??刂破鞔藭r(shí)啟動(dòng)一個(gè)讀取數(shù)據(jù)包時(shí)序,就能有效的讀取到非空數(shù)據(jù)包。解釋一下,在計(jì)算機(jī)體系結(jié)構(gòu)和計(jì)算機(jī)通信領(lǐng)域中,對(duì)于半字、字等的存儲(chǔ)機(jī)制有可能不同。由于我們使用的ARM處理器使用的是小端模式,而接收到的網(wǎng)絡(luò)字節(jié)數(shù)據(jù)用的是大端模式,所以這里調(diào)用函數(shù)htons實(shí)現(xiàn)大端與小端的轉(zhuǎn)換,實(shí)際就是將兩個(gè)字節(jié)交換順序即可。像前面所講的那樣,LWIP協(xié)議棧進(jìn)程完成初始化相關(guān)工作后,會(huì)阻塞在一個(gè)郵箱上等待數(shù)據(jù)包的輸入,這就對(duì)了,tcpip_input 函數(shù)就是向這個(gè)郵箱發(fā)送一條消息,且該消息中包函了收到的數(shù)據(jù)包存儲(chǔ)的地址。協(xié)議棧本身會(huì)啟動(dòng)一個(gè)TCP的線(xiàn)程,和協(xié)議相關(guān)的處理都會(huì)放在這個(gè)線(xiàn)程中完成。 /*初始化注冊(cè)的設(shè)備驅(qū)動(dòng)*/ rt device init all()。 init thread = rt thread create(init, rt init thread entry, RT NULL,2048, 10, 5)。使用lighweight TCP/IP協(xié)議棧define RT USING LWIPLwIP協(xié)議棧的主線(xiàn)程TCP的參數(shù)(優(yōu)先級(jí),信箱大小,??臻g大小)tcp線(xiàn)程選項(xiàng)define RT LWIP TCPTHREAD PRIORITY 120define RT LWIP TCPTHREAD MBOX SIZE 4define RT LWIP TCPTHREAD STACKSIZE 1024默認(rèn)的IP地址,網(wǎng)關(guān)地址,(如果要使用DHCP方式分配,則需要定義RT USING DHCP宏) 目標(biāo)板IP地址define RT LWIP IPADDR0 192define RT LWIP IPADDR1 168define RT LWIP IPADDR2 1define RT LWIP IPADDR3 30網(wǎng)關(guān)地址 define RT LWIP GWADDR0 192define RT LWIP GWADDR1 168define RT LWIP GWADDR2 1define RT LWIP GWADDR3 1子網(wǎng)掩碼define RT LWIP MSKADDR0 255define RT LWIP MSKADDR1 255define RT LWIP MSKADDR2 255define RT LWIP MSKADDR3 04. MB9F618網(wǎng)口設(shè)置關(guān)鍵代碼:include ifdef RT_USING_LWIPinclude lwip/include lwip/include netif/void rt_init_thread_entry(void *parameter){ { extern void rt_led_hw_init(void)。 extern void set_ethernet_e_cout_clock(int is_rmii)。 FM3_GPIO = 0。 rt_thread_delay(RT_TICK_PER_SECOND/100)。 set_ethernet_e_cout_clock(1)。 rt_kprintf(TCP/IP initialized!\n)。 udp_text = netconn new(NETCONN UCP)。addr,1025)。 netbuf alloc(buf,10)。 tid = rt_thread_create(init, rt_init_thread_entry, RT_NULL, 2048, 8, 20)。如果連接已經(jīng)被遠(yuǎn)程主機(jī)關(guān)閉,則返回NULL,其它情況,函數(shù)返回一個(gè)包含著接收到的數(shù)據(jù)的netbuf。因?yàn)槟壳斑€沒(méi)有獲取這個(gè)值的方法,這就需要采用其它的途徑來(lái)避免超過(guò)MTU值,所以規(guī)定了一個(gè)上限,就是netbuf中包含的數(shù)據(jù)不能大于1000個(gè)字節(jié)。netconn bind()原型聲明int netconn bind(struct netconn *conn, struct ip addr *addr, unsigned short port)為參數(shù)conn指定的連接綁定本地IP地址和TCP或UDP端口號(hào)。而Lwip的API也分為兩部分實(shí)現(xiàn),一部分作為應(yīng)用程序的鏈接庫(kù)實(shí)現(xiàn),另一部分在TCP/IP進(jìn)程內(nèi)實(shí)現(xiàn)。完備的宏配置頭文件,方便內(nèi)核及外圍組件細(xì)節(jié)剪裁,繁簡(jiǎn)由心。UDP 是最簡(jiǎn)單的傳輸層協(xié)議,它具有以下特點(diǎn):(1) 無(wú)連接:UDP 不基于連接來(lái)傳輸數(shù)據(jù)。(5) 緩沖:UDP 協(xié)議不提供任何數(shù)據(jù)接收或發(fā)送的緩沖區(qū)。這些函數(shù)與BSD標(biāo)準(zhǔn)的Sockets相比雖然編程較困難,但是它們生成的代碼了更小,運(yùn)行占用更少的內(nèi)存,在RAM與CODE都是比較寶貴的嵌入式系統(tǒng)中,這通常我們的首選。 = htonl()。 netbuf alloc(buf, 10)。 netconn delete(buf)。圖47 TCPamp。從開(kāi)始接到論文題目到系統(tǒng)的實(shí)現(xiàn),最后到論文文章的完成,每一步對(duì)于我來(lái)說(shuō)都是新的挑戰(zhàn),這估計(jì)是我在大學(xué)里獨(dú)立完成的最大的項(xiàng)目了,在這幾個(gè)月里,我學(xué)到了很多新的知識(shí),同時(shí)也有很多的感受,對(duì)網(wǎng)絡(luò)通信不是很了解,我開(kāi)始了獨(dú)立的學(xué)習(xí)和測(cè)試,查看相關(guān)的資料和書(shū)籍,讓自己慢慢的對(duì)網(wǎng)絡(luò)通信有了全面的認(rèn)識(shí)和了解。在此,我首先向彭老師表示誠(chéng)摯的感謝,同時(shí)非常感謝信息工程學(xué)院的各位老師對(duì)我在校期間給予的教育和培養(yǎng)。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1