999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式LWIP網絡客戶端設計

2016-03-07 02:03:48胡曉玲余世欣
電子產品世界 2016年1期
關鍵詞:嵌入式

胡曉玲 余世欣

摘要:嵌入式網絡客戶端需要移植性高、占用資源小的協議棧,設計了基于輕量級協議棧LWIP的網絡客戶端。采用STM32處理器作為主控芯片,通過以太網控制器EN28J60和RJ45接口連接互聯網,移植了操作系統uC/OS-II和輕量級協議棧LWIP,最后對客戶端與主機進行聯機測試。結果表明:通過主機ping32字節的數據,4個包所用的時間最長為5ms,最短為3ms,而TTL值均為255;數據收發正確,錯誤率為0%。說明輕量級協議棧LWIP不僅占用資源小,而且滿足嵌入式系統應用的可靠性要求。

關鍵詞:嵌入式;輕量級協議棧;STM32;移植;操作系統

DOI:10.3969/i.issn.1005-5517.2016.1.010

引言

嵌入式技術的興起使得傳統的基于PC機的互聯網技術優勢不再,嵌入式網絡客戶端與服務端技術成為熱點,而該技術需要移植性高、占用資源小的協議棧,輕量級TCP/IP協議棧LWIP(light weight Internet protocol)比較適合嵌入式設備中存儲容量有限的情況,而且能實現TCP/IP協議棧的基木功能,不影響設備的網絡互聯與傳輸服務[1]。輕量級網絡協議LWIP依附的硬件操作系統有RT_Thread[2-3]和uC/OS-11[4-5],鑒于uC/OS-II是一款應用較為廣泛、技術較成熟的操作系統,本文采用uC/OS-II操作系統設計網絡客戶端。實驗結果表明:ping 32字節的數據,其收發正確,錯誤率為0%。

1 系統硬件

如圖1所示:硬件采用STM32處理器作為主控芯片,通過以太網控制器EN28J60和RJ45接口連接互聯網,而且為了進行功能擴展和試驗驗證,主控芯片也可以由串口與計算機進行數據互傳。

STM32F107是主控芯片,它不僅具有USB OTG和CAN2.OB接口,而且片上集成了以太網10/100 MAC模塊。該模塊支持Mll和RMII兩種模式,所以,主控制器只需外接一個物理層PHY芯片就可以實現一個完整的以太網收發器;在時鐘信號方面,只需用一個25MHz的晶振就可以給整個主控制器提供時鐘、而主控制器還能輸出一個25MHz或50MHz的時鐘,交外部物理層PHY層芯片使用,這樣可以為系統節省一個附加晶振[6]

以太網控制器是ENC28J60,它符合IEEE802.3協議的全部規范、可以利用健全的包過濾機制對輸入的數據包進行限制。集成了DMA模塊,支持數據的高速吞吐率,并結合硬件實現IP地址校驗和計算。它和主控器的通信依賴于兩個中斷管腳和SPI總線實現,數據傳輸速率高達10MB/s,為了觀察數據傳輸的活動狀態,可以在兩個專用的引腳接上發光二極管[7]

2 操作系統移植

操作系統uC/OS-II移植涉及到的主要內容是[4-5][8]:修改并整合與處理器相關的源文件,包含os_cpu_c.c,os_cpu_a.s,os_cpu.h三個文件。其中os_cpu.h文件負責定義與編譯器相關的數據類型、堆棧類型,另外還有幾個宏定義和函數聲明,在進行移植工作時,由于對一個相同的數據類型,不同的編譯器所支持的數據長度卻不相同,所以需要修改原來的數據類型。os_cpu_a.s文件主要負責定義與處理器相關的任務切換函數,實現任務上下文的切換以滿足任務調度時的需要,另外還定義了時鐘中斷處理函數和進退臨界區宏指令。os_cpu_c.c文件主要負責定義堆棧的初始化函數,以利于操作系統在進行任務切換或中斷時對相關操作數據進行堆棧保護,另外還定義了相關的HOOK函數。

首先修改。s_cp _u_a.asm文件,將原來的RSEGCODE:CODE:NOROOT(2)改成:

AREA|.text|, CODE, READONLY, ALIGN=2;(其中AREA|.text|代表選擇段|.text|,CODE指明代碼段,READONLY代表默認情況:只讀。由于當ALIGN=n,則字節數為2^n,故此處ALIGN=2表示對齊4字節。)

THUMB;Thumb指令集

REQUIRE8:說明當前文件是八字節對齊堆棧需求

PRESERVE8:說明當前文件屬于八字節對齊堆棧

修改。s_cpu.h文件,注釋掉下面的這三個函數:Void OS_CPU_SysTickHandler(void); Void OS_CPU_SysTicklnit(void); UINT32 0S_CPU_SysTickClkFreq(void);

修改os_cp u_c.c又件,注釋掉以下定義和函數:

#define OS_CPU_CM3_NVIC_ST_CTRL (*((volatileINT32U*)OxEOOOE010))

#define OS_CPU_CM3_NVIC_ST_RELOAD (*((volatile INT32U*)OxEOOOE014))

#define OS_CPU_CM3_NVIC_ST_CURRENT(*((volatileINT32U*)OxEOOOE018))

#define OS_CPU_CM3_NVIC_ST_CAL

(*((volatileINT32U*)OxEOOOE01C》

#define OS_CPU_CM3_NVIC_PRIO_ST (*((volatileINT8U*)OxEOOOED23))

#define OS_CPU_CM3_NVIC_ST_CTRL_COUNTOx00010000

#define OS_CPU_CM3_NVIC_ST_CTRL_CLK_SRCOx00000004

#define OS_CPU_CM3_NVIC_ST_CTRL_INTENOx00000002

#define OS_CPU_CM3_NVIC_ST_CTRL_ENABLEOx00000001

#define OS_CPU_CM3_NVIC_PRIO_MINOxFF

void OS_CPU_SysTickHandler(void)函數

void OS_CPU_SysTicklnit (void)函數

3 輕量級協議棧LWIP的移植

LWIP是輕量級的TCP/IP協議棧,協議棧中涉及的函數與數據結構和操作系統及硬件不相關,如果需要使用uC/OS-II操作系統的函數,必須通過操作系統模擬層進行調用。所以移植LWIP協議棧,實際上就是移植到uC/OS-II操作系統。操作系統模擬層為定時器、同步處理、消息傳送機制等服務提供一組外留的接口函數,為LwIP提供兩種進程間通信方式:信號量和郵箱。創建任務函數、臨界保護函數以及信號量和郵箱操作函數均由uC/OS-II提供,進行針對LwIP的移植任務時,就是修改相關接口函數(包括信號量操作函數、郵箱操作函數、臨界保護函數、sys_thread_new()函數、sys_arch_timeouts()函數),從而實現LwIP操作系統模擬層的函數利用[4-5]

LWIP的數據包包頭是14個字節,基于LWIP的以太網接收的數據包格式以一個數據結構來描述:PACK_STRUCT_BEGIN

struct eth—hdr{

PACK_STRUCT_FIELD(struct eth_addr dest);//目標的媒質接入控制層地址

PACK_STRUCT_FIELD(struct eth_addr src);//源的媒質接入控制層地址

PACK_STRUCT_FIELD(u16_t type);//類型

) PACK_STRUCT_STRUCT;

PACK_STRUCT_END

其中幾個PACK_STRUCT_xxx的宏定義與編譯器字對齊相關,上面的目標dest、源src和類型type三個字段分別對應目標的媒質接入控制層地址、源的媒質接入控制層地址、數據類型。

4結論

測試前需要把計算機與嵌入式網口模塊的IP地址配置在同一網段,IP地址分別為192.168.1.100,192.168.1.102。如果想查看IP地址配置情況,運行CMD命令行,執行ipco nfig/all命令。配置完以后,接著ping嵌入式網口的IP地址,結果如圖2所示。

從圖2可以看出:主機ping 32字節的數據,4個包所用的時間最長為5ms,最短為3ms;而4個包的TTL值均為255,這是由于最優路徑選擇算法定下來以后,經過一段時間穩定后,網絡拓撲結構也穩定了,數據包的路由路徑也會相應穩定在一個最優路徑上。整個過程的數據收發正確,錯誤率為0%。

參考文獻:

[1]張齊,勞熾元輕量級協議棧LWIP的分析與改進[J]計算機工程與設計,2010,31(10):2169—2256

[2]方瓊瓊,李正平基于Rth-read的嵌入式串口服務器的設計與實現[J]電腦知識與技術,2012.8(10):2425—2428

[3]陳希超,王健基于RT—Thread的嵌入式網絡通信[J]電聲技術,2012,36(12):49—56

[4]楊俊,呂建平,徐峰柳基于uC/0S—II和LwIP的嵌入式Web服務器實現[J]電氣自動化,2011,33(3):62—64

[5]趙國鋒,馬文武基于LWIP的嵌入式網絡系統設計與實現[J]微計算機信息,2008,24(8—2):59一61

[6]sonqhexin8STM32F107中國版用戶手冊[EB/OL][2012-12-06]http://wenku.baiu.com/link?url=EFDU6D5lPaOCl3mZJ2tuIZeBX2aVl kMKC41 nYDXF40W4F0toIf60txaWeJ94hHYa5fEVLOW067NMMS7bySVm COWhCltXFfKRICjfH—NZa

[7]高吉星,趙強,佟為明,基于ENC28J60的TMS320F281 2以太網通信接口設計[J].計算機測量與控制2013,21(3):709一711

[8]啊左不是蝸牛,UC,OS—II學習筆記一STM32移植[EB/OL][2012—12—29]hTTP://bbs.ednchina.com/BLOG__ARTlCLE 3010147 HTM:http://bbs.ednchina.com/BLOG ARTICLE 3010148.HTM

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 99久久成人国产精品免费| 无码高潮喷水专区久久| 色亚洲成人| 美女内射视频WWW网站午夜| 韩国福利一区| 一本视频精品中文字幕| 久久www视频| 日韩精品专区免费无码aⅴ| 五月激情婷婷综合| 成人午夜福利视频| 一级做a爰片久久免费| 国产无码精品在线播放 | 免费又爽又刺激高潮网址| 九九九精品视频| 免费又爽又刺激高潮网址 | 国产性猛交XXXX免费看| 乱色熟女综合一区二区| 欧美成人综合在线| 国产精品对白刺激| 国产正在播放| 色综合热无码热国产| 国产无套粉嫩白浆| 中文字幕 91| 亚洲天堂网站在线| 国产网站黄| 日韩精品免费一线在线观看| 人人91人人澡人人妻人人爽| 色婷婷天天综合在线| 九九热精品视频在线| 日本一本在线视频| 五月婷婷丁香色| 国产在线自乱拍播放| 永久免费AⅤ无码网站在线观看| 男女男免费视频网站国产| 国产乱子伦精品视频| 国产高清色视频免费看的网址| 久热re国产手机在线观看| 在线看片中文字幕| 人妻丰满熟妇av五码区| 国产自产视频一区二区三区| 亚洲一区第一页| 国产区网址| 欧美成人一级| 亚洲国产系列| 欧美精品在线看| 任我操在线视频| 日韩高清欧美| 久久国产高清视频| 久久精品人人做人人爽| 岛国精品一区免费视频在线观看| 香蕉网久久| 欧美亚洲国产一区| a级毛片免费播放| 亚洲电影天堂在线国语对白| 欧美视频在线不卡| 九九这里只有精品视频| 欧美精品成人一区二区在线观看| 免费亚洲成人| 欧美精品导航| 亚洲香蕉伊综合在人在线| 国产精品第一区| 有专无码视频| 亚洲天堂网在线视频| 国产最新无码专区在线| 国产91视频观看| 久久影院一区二区h| 国内视频精品| 亚洲乱码精品久久久久..| 91亚瑟视频| 九九九国产| 成色7777精品在线| 国产成人精品日本亚洲77美色| 狠狠久久综合伊人不卡| 波多野结衣一级毛片| 亚洲天堂网视频| 国产成人综合久久| 制服丝袜亚洲| 久久99精品久久久大学生| 这里只有精品在线| 欧美午夜小视频| 99在线国产| 国产麻豆福利av在线播放|