99精品久久这里只有精品,三上悠亚免费一区二区在线,91精品福利一区二区,爱a久久片,无国产精品白浆免费视,中文字幕欧美一区,爽妇网国产精品,国产一级做a爱免费观看,午夜一级在线,国产精品偷伦视频免费手机播放

    <del id="eyo20"><dfn id="eyo20"></dfn></del>
  • <small id="eyo20"><abbr id="eyo20"></abbr></small>
      <strike id="eyo20"><samp id="eyo20"></samp></strike>
    • 首頁 > 文章中心 > 正文

      RT-Thread 網(wǎng)絡通信系統(tǒng)的設計

      前言:本站為你精心整理了RT-Thread 網(wǎng)絡通信系統(tǒng)的設計范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

      RT-Thread 網(wǎng)絡通信系統(tǒng)的設計

      ARMCortex-M3內核可以對4GB空間進行簡單和固定的存儲器映射,片內512kB的Flash用作存儲器異常/中斷向量表以及操作系統(tǒng)的鏡像,系統(tǒng)復位后從中讀取指令執(zhí)行;64kB的SRAM為程序的運行空間和數(shù)據(jù)空間,啟動代碼先將系統(tǒng)鏡像復制到SRAM后執(zhí)行。此外,該CPU內置靈活的靜態(tài)存儲控制器(FlexibleStaticMemoryController),可以方便外擴總線型的SRAM,NorFlash存儲器。由于處理器內部沒有集成MAC電路,網(wǎng)絡功能需通過網(wǎng)絡接口芯片來實現(xiàn)物理層通信。

      DM9000A由3.3V供電,支持IEEE的802.3網(wǎng)絡傳輸協(xié)議的10/100M以太網(wǎng)物理層單芯片收發(fā)器,片內集成濾波器、16kB的FIFO的SRAM緩存,自帶可觸發(fā)中斷的MII管理接口并支持中繼模式和節(jié)點模式、全雙工和半雙工模式的轉換[2]。通過RJ45連接到Internet,綜合LwIP程序包、通信協(xié)議(TCP/UDP)和網(wǎng)絡編程函數(shù),即可實現(xiàn)網(wǎng)絡數(shù)據(jù)傳輸。

      底層網(wǎng)絡驅動DM9000A的網(wǎng)絡設備驅動程序分為設備的初始化和數(shù)據(jù)的發(fā)送接收兩部分。DM9000A的初始化過程是在CPU配置內部網(wǎng)絡控制寄存器(NCR)、中斷寄存器(ISR)等寄存器后進行的,具體過程包括軟件復位、設置網(wǎng)絡工作模式、設置PHY、選擇模式、使能喚醒時間、使能RX/TX中斷,使能數(shù)據(jù)接收功能等。初始化完成后,DM9000A進入等待數(shù)據(jù)發(fā)送/接收狀態(tài),圖2是其數(shù)據(jù)傳輸流程圖。當處理器發(fā)送數(shù)據(jù)時,先將TCP或IP數(shù)據(jù)打包成以太網(wǎng)數(shù)據(jù)幀,然后通過16bit總線寫入到DM9000A的數(shù)據(jù)緩存區(qū),再將數(shù)據(jù)長度等信息寫到DM9000A的相應寄存器內后使能發(fā)送;當DM9000A接收到外部網(wǎng)絡傳來的網(wǎng)絡數(shù)據(jù)時,將數(shù)據(jù)幀緩存在內部SRAM中,由CPU通過標志位對接收到的數(shù)據(jù)進行處理[3]。

      RT-Thread操作系統(tǒng)

      RT-Thread是采用面向對象風格設計、C語言實現(xiàn)的開放源代碼的RTOS,其突出特點是小型、實用和可裁剪。其核心能夠小到僅占用2.5kB的ROM和1kB的RAM空間;系統(tǒng)線程調度核心是完全bitmap方式,可使計算時間完全固定;配置文件rtconfig.h包含多種選項,能夠對Kernel細節(jié)進行精細調整,并可對文件系統(tǒng)、網(wǎng)絡協(xié)議棧、圖形用戶界面及FinshShell等組件進行可選配置。

      RT-Thread系統(tǒng)移植RT-ThreadKernel代碼目前支持多數(shù)主流CPU芯片,其bsp(板級支持包)含有所支持的各平臺的移植代碼,并會包含有兩個匯編文件,一個是系統(tǒng)啟動初始化文件,一個是線程進行上下文切換的文件,其他的都是C源文件。移植時選好開發(fā)平臺后僅需修改rtconfig.py和rtconfig.h文件。RT-Thread源碼具有非常好的移植性,可以非常容易的移植到其他開發(fā)環(huán)境下。本系統(tǒng)采用MDK開發(fā)環(huán)境,修改rtconfig.py文件中CROSS_TOOL=‘keil’和EXEC_PATH=‘D:/Keil’后,并配置rtconfig.h使能LwIP和FinshShell(其他組件可根據(jù)需要配置)。

      RT-Thread初始化RealViewMDK的用戶程序入口是main()函數(shù),main()函數(shù)調用rt_thread_startup()函數(shù)(RT-Thread多平臺下的統(tǒng)一入口點),函數(shù)中包含了RT-Thread操作系統(tǒng)的啟動流程:包括初始化系統(tǒng)相關的硬件,初始化定時器、調度器等系統(tǒng)組件,初始化系統(tǒng)設備,初始化各個應用線程、并啟動調度器。其中用戶代碼入口位置是rt_application_init(),在這個函數(shù)中可以初始化用戶應用程序的線程,當打開調度器后,用戶線程也將得到執(zhí)行。

      LwIP協(xié)議棧

      LwIP是一種源代碼開放的TCP/IP協(xié)議棧的實現(xiàn),占用的體積大概在幾十kB的RAM和40kB的ROM代碼左右,因此十分適合于使用到嵌入式設備中。

      LwIP協(xié)議初始化LwIP由協(xié)議的實現(xiàn)模塊(IP,ICMP,UDP,TCP)、操作系統(tǒng)模擬層、緩沖與內存管理模塊、網(wǎng)絡接口函數(shù)和API接口函數(shù)等相對獨立的模塊組成。使用LwIP協(xié)議棧,需要初始化協(xié)議棧,同時協(xié)議棧本身會啟動一個TCP/IP的線程,和協(xié)議相關的處理都會放在這個線程中完成[4]。

      LwIPAPILwIPAPI在LwIP的應用中,可以充分發(fā)揮其內部結構優(yōu)勢,且不必在協(xié)議棧和應用程序之間復制數(shù)據(jù),故可以使應用程序巧妙地直接處理內部緩沖區(qū)。LwIPAPI主要使用兩種數(shù)據(jù)類型,netbuf和netconn。netbuf是描述網(wǎng)絡緩存,對應的函數(shù)為netbuf_new()、netbuf_delete()、netbuf_ref()、netbuf_data()等;netconn是描述網(wǎng)絡連接,對應的函數(shù)為netconn_new()、netconn_delete()、netconn_connect()、net-conn_recv()、netconn_write()等。

      BSDSocket網(wǎng)絡編程LwIP提供了一個輕型BSDSocketAPI的實現(xiàn),為大量已有的網(wǎng)絡應用程序提供了兼容的接口。LwIP的socket接口實現(xiàn)都在函數(shù)名前加有l(wèi)wip前綴,同時在頭文件中把它采用宏定義的方式定義成標準的BSDSocketAPI接口。BSD是UNIX/Linux系統(tǒng)中通用的網(wǎng)絡接口,也廣泛應用于嵌入式系統(tǒng)和實時操作系統(tǒng)中,不僅能夠支持不同的網(wǎng)絡類型,而且擁有內部進程之間的通信機制,圖3顯示了通過BSDSocket網(wǎng)絡編程實現(xiàn)的分層結構[5]。

      嵌入式網(wǎng)絡應用實現(xiàn)

      RT-Thread實時操作系統(tǒng)可實現(xiàn)多任務的調度管理,上層應用程序則可通過LwIP協(xié)議棧及調用LwIPAPI來實現(xiàn)網(wǎng)絡通信及網(wǎng)絡任務,再配合操作系統(tǒng)的RTGUI,DFS文件系統(tǒng)及設備驅動等組件來增加系統(tǒng)的實用性及擴展性。

      HTTP協(xié)議通信過程超文本傳輸協(xié)議(HTTP)是一個實現(xiàn)WWW的應用層協(xié)議,是一種請求/響應協(xié)議,當基于HTTP的客戶端/服務器數(shù)據(jù)交換有請求產生時,就開始一次HTTP數(shù)據(jù)通信。其過程如下:瀏覽器(客戶端)首先提取出URL中的主機,然后向DNS發(fā)出請求、解析主機名的IP地址(服務器偵聽端口一般為80);DNS將解析地址返回給瀏覽器;瀏覽器向該地址請求建立TCP連接;客戶端發(fā)出請求報文,服務器向客戶端發(fā)送響應報文,并將指定數(shù)據(jù)發(fā)送給客戶端;結束后斷開連接[6]。

      WebServer實現(xiàn)WebServer任務是基于LwIPAPI接口函數(shù)來實現(xiàn)應用,圖4為其任務流程圖。從圖中可以看出當用戶通過網(wǎng)絡連接訪問服務器頁面時,HTTP協(xié)議首先和服務器建立TCP連接,服務器通過進入netconn_accept()函數(shù),并等待其郵箱信息的到來,等待期間線程被掛起。通過兩次握手后,客戶端就把HTTP請求報文作為第三次握手的第三個報文的數(shù)據(jù)發(fā)送給服務器,服務器收到HTTP請求報文后,就把所請求的頁面作為響應報文返回給客戶。該WebServe通過建立數(shù)據(jù)處理函數(shù)HTML編寫服務器設置界面后,可應用于遠程網(wǎng)絡控制系統(tǒng),通過在網(wǎng)頁程序中加入<META/>標記,瀏覽器可以自發(fā)周期性的刷新頁面,用戶在瀏覽器端可及時收到遠程現(xiàn)場傳感器采集的數(shù)據(jù),并可控制及設置參數(shù)來調節(jié)和監(jiān)控遠程現(xiàn)場環(huán)境,圖5為基于HTTP協(xié)議實現(xiàn)的嵌入式遠程網(wǎng)絡監(jiān)控系統(tǒng)的測試效果[7]。

      系統(tǒng)網(wǎng)絡通信測試LwIP協(xié)議已經(jīng)實現(xiàn)了大部分的Socket網(wǎng)絡連接函數(shù),要實現(xiàn)Socket的基本通信,只需要在此基礎上通過調用其Socket網(wǎng)絡連接函數(shù)即可實現(xiàn)簡單的客戶機/服務器網(wǎng)絡數(shù)據(jù)通信。為測試本網(wǎng)絡通信系統(tǒng)的可靠性和穩(wěn)定性,在RT-Thread操作系統(tǒng)下增加TCP客戶端和UDP服務器網(wǎng)絡測試程序線程,其實現(xiàn)過程與WebServer類似,不同之處是基本網(wǎng)絡通信過程采用了更為標準化的BSDSocketAPI來實現(xiàn),數(shù)據(jù)處理過程也和各測試任務相關。經(jīng)TCP&UDP測試工具及RT-Thread自帶的FinshShell的測試表明,該系統(tǒng)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)穩(wěn)定可靠,傳輸速率可達10Mb/s以上,滿足多數(shù)嵌入式網(wǎng)絡通信設備的要求。

      結束語

      本文詳細介紹了利用STM32單片機,在移植RT-Thread實時操作系統(tǒng)的基礎上,實現(xiàn)了幾乎完整的TCI/IP協(xié)議棧,并且操作系統(tǒng)還采用模塊化設計,用戶在使用時可根據(jù)需要進行裁剪以節(jié)約資源。此外通過建立嵌入式網(wǎng)絡應用程序檢測了其通信性能,表明該系統(tǒng)為構建嵌入式設備的網(wǎng)絡通信提供了一種低成本高可靠性的解決方案;結合嵌入式設備友好的人機界面、易于升級和擴展等優(yōu)點,本通信系統(tǒng)在廣播電視播控系統(tǒng)、網(wǎng)絡媒體傳播技術、智能監(jiān)控領域中有著廣泛的應用前景。

      作者:陳希超王健單位:杭州電子科技大學電子信息學院聚光科技(杭州)股份有限公司

      文檔上傳者
      婷婷中文字幕综合在线| 亚洲不卡av二区三区四区| 干日本少妇一区二区三区| 又粗又黄又猛又爽大片免费| 日本黄页网站免费大全| 久久精品国产久精国产69| 久久综合激情的五月天| 粗大的内捧猛烈进出少妇| 亚洲欧美日韩在线一区| 久久久久久岛国免费网站| 一区二区精品天堂亚洲av| 欧美成人国产精品高潮| 亚洲人成亚洲精品| 国产91在线|亚洲| 尤物精品国产亚洲亚洲av麻豆| 医院人妻闷声隔着帘子被中出| 国产suv精品一区二区69| 亚洲熟妇中文字幕日产无码| 在线观看一区二区三区在线观看| 玩弄白嫩少妇xxxxx性| 精品久久久久久久无码| 免费国人成人自拍视频| 日本a级一级淫片免费观看| 狠狠色狠狠色综合| 国产亚洲欧美日韩综合综合二区| 国产av区亚洲av毛片| 偷拍一区二区三区四区| 欧美一区二区三区激情| 国产精品成人午夜久久| 日本一道高清在线一区二区| 亚洲 另类 小说 国产精品| 国内精品久久久久影院一蜜桃 | 国产老妇伦国产熟女老妇高清| 国产精品自拍网站在线| 新婚人妻不戴套国产精品| 国产人妻久久精品二区三区| 免费国产黄片视频在线观看| 青青草视频在线观看精品在线| 精品乱人伦一区二区三区| 欧美极品少妇性运交| 日本人妻少妇精品视频专区|