久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久
右欄
歡迎您:游客!請先
登錄
或
注冊
風格
恢復默認設置
|
展區
文件集瀏覽
圖片集瀏覽
Flash瀏覽
音樂集瀏覽
電影集瀏覽
|
搜索
|
社區游戲中心
曙海教育集團論壇
→
嵌入式硬件開發專區
→
嵌入式硬件技術討論專區
→ 基于AVR單片機多任務嵌入式Internet系統設計
新的主題
投票帖
交易帖
小字報
下一主題 >>
<< 上一主題
共有
6662
人關注過本帖
樹形
打印
主題:基于AVR單片機多任務嵌入式Internet系統設計
wangxinxin
小
大
1樓
個性首頁
|
博客
|
信息
|
搜索
|
郵箱
|
主頁
|
UC
加好友
發短信
等級:青蜂俠
帖子:
1393
積分:14038
威望:0
精華:0
注冊:
2010-11-12 11:08:23
基于AVR單片機多任務嵌入式Internet系統設計
Post By:2010-11-19 9:12:30
以下內容含腳本,或可能導致頁面不正常的代碼
引言 目前,嵌入式系統已廣泛滲透到人們的工作、生活中。從家用電器、信息終端、手持通信設備到儀器儀表、制造工業、過程控制等領域,嵌入式設備已隨處可見。另一方面,近幾年來Internet技術的飛速發展給嵌入式應用帶來了新的契機,在未來嵌入式系統中應用Internet技術具有非常大的優勢。 目前嵌入式Internet技術的實現主要有下面三種方式 : 第一種方式是EMIT技術,采用支持TCP/IP協議的高性能服務器作為網關(emGateway), 嵌入式設備通過RS-232、RS-485或CAN總線等和網關服務器連接,間接通過服務器網關連接Internet。經過多年的發展EMIT技術已在工業設備的網絡化中得到了廣泛的應用。但該技術也存在著以下的缺點:由于需要使用高性能的網關服務器,再加上emGateway網關的使用需要繳納相應的版稅,從而使得成本非常高;而且網關和設備之間需要專門布線,在嵌入式設備比較分散的情況下極為不便,通信的距離、速度都受到一定的限制。 第二種方式是采用硬件協議棧芯片進行網絡連接,比如Seiko公司的S7600,嵌入式MCU通過接口對其進行控制以達到Internet通信的目的,這時軟件只需要增加一段和協議棧芯片通信的接口程式即可,因此研發難度小、周期短。其缺點是系統的硬件成本非常高,而且由于使用的是硬件協議棧,擴展不靈活。 第三種方式是在嵌入式MCU上用軟件實現TCP/IP協議棧,然后通過網絡接口芯片連接Internet。在這種方式中由于使用了軟件協議棧使得嵌入式MCU本身具有了Internet通信能力,從而省去了高性能網關和硬件協議棧芯片,因此成本非常低,而且擴展起來非常方便靈活,再配上小型嵌入式實時操作系統的支持,就能實現性價比非常高的嵌入式多任務Internet平臺。不過要在資源有限的16位甚至8位單片機上實現復雜的操作系統和網絡協議棧有一定難度,但近年來隨著單片機處理速度的不斷提高和內部資源的不斷擴展,再加上小型的實時操作系統和網絡協議棧的相繼推出,使得利用單片機來實現低成本嵌入式多任務網絡平臺成為可能。 基于以上背景,本文就來介紹應用在研究課題“低碼率視頻信號的網絡傳輸”系統中的一種基于AVR單片機的多任務嵌入式網絡系統軟硬件平臺的設計。 <strong>2 硬件平臺設計</strong> 考慮到以太網接入方式技術成熟、可靠性高、通信速度快和成本低的好處,本系統的硬件平臺采用單片機加以太網接口控制芯片組成。由于操作系統和協議棧需要用到大量的數據存儲器,因此需要外擴RAM存儲器。為了提高通信性能,單片機和以太網接口芯片之間采用并行總線擴展方式進行連接,接口芯片和外部的RAM存儲器統一編址。本系統采用了可編程GAL器件ATF16V8進行地址譯碼,這樣不僅能充分利用地址資源,而且只需要修改ATF16V8的源程式即可實現地址的改動,提高了系統的擴展能力。系統的硬件平臺的原理框圖如圖1所示。 <img style="WIDTH: 559px; HEIGHT: 316px" onclick="ImgClick(this)" height="316" alt="硬件平臺系統框圖" hspace="0" src="http://www.21ic.com/news/upload/2006_10/061017105257501.gif" width="559" border="0" resized="0"/> 圖1:硬件平臺系統框圖 單片機選用高性能的AVR單片機ATmega128。AVR是ATMEL公司結合了成熟的51系列和PIC系列單片機的好處而推出的高性能8位單片機,具有以下特點 : 性價比高: AVR單片機內部集成8路10位的ADC、PWM、E2PROM、WDT、RTC等,具有了片上系統(SOC)的雛形,大幅度降低了系統的整體體積和成本。 速度快:AVR單片機采用了先進的RISC體系架構,大多數指令能在一個時鐘周期內完成,理論上速度能達到1MIPS/MHz。而且具有只需要兩個時鐘周期的硬件乘法器。 接口豐富:AVR單片機除能進行并行擴展外,還具有USART、SPI和I2C串行總線。 ISP&IAP:其內部的可擦寫FLASH存儲器不僅能進行在線下載,而且具有片上的BOOT程式實目前應用可編程,真正實現同時讀寫操作。 研發方便:AVR是第一款真正為C語言研發設計的單片機,具有多種編譯器。而且具有JTAG接口,能進行在線調試。 低功耗:AVR單片機具有六種睡眠模式,能最大程度的降低系統的功耗。 以太網接口控制芯片采用Realtek公司生產的以太網接口控制器RTL8019AS ,其10M處理能力對于本課題需要的碼率為4Mbps視頻流的網絡傳輸來說完全滿足需求。另外8019AS片內集成16KByte的RAM用作發送和接收的緩沖區,對其訪問能使用遠程DMA方式,從而大幅提高接口的通信能力。需要注意的是,由于ATmega128數據總線是8位,RTL8019AS的IOCS16B引腳應當下拉接地以選擇8位總線方式,而且JP引腳要接高電平以選擇跳線模式。 地址譯碼采用的是ATF16V8,具體是把MCU地址線的高8位作為16V8的譯碼輸入,16V8的3位輸出作為譯碼片選輸出:低端RAM(32KB)、高端RAM(32KB)和8019AS的片選。由于8019AS的地址空間僅需要32Byte,而且和高端RAM的地址重疊,為了給RAM分配盡可能多的地址空間,為8019AS分配頂部的256Byte,而把剩余的地址空間全部分配給RAM。上述譯碼的CUPL描述如下: CS_RAM_L = ! A15; CS_RAM_H = A15 & ! (A14 & A13 & A12 & A11 & A10 & A9 & A8); CS_8019 = A15 & A14 & A13 & A12 & A11 & A10 & A9 & A8; <strong>3 操作系統移植</strong> uC/OS-II是個專門為中小型嵌入式應用設計的搶占式的實時操作系統內核,具有原始碼公開、移植性好、可裁減、可固化、實時性和安全穩定性高的特點 ,非常適合本系統的應用。uC/OS-II的系統框圖如圖2所示。 uC/OS-II和硬件平臺無關的代碼文件:UCOS_CORE.C、UCOS_II.C等 uC/OS-II設置代碼文件:INCLUDES.H 、OS_CFG.H <img style="WIDTH: 359px; HEIGHT: 219px" onclick="ImgClick(this)" height="219" alt="uc/os-ii的系統框圖" hspace="0" src="http://www.21ic.com/news/upload/2006_10/061017105257502.gif" width="359" border="0" resized="0"/> 圖2:uC/OS-II的系統框圖 <strong>uC/OS-II</strong> <div id="Content"> 在設計之初就充分考慮了移植性,移植起來非常方便。從圖2能看出,和移植有關的只有3個文件:OS_CPU.H,OS_CPU_C.C和OS_CPU_A.S。 第1個文件是OS_CPU.H,其中主要定義了一些和編譯器有關的數據類型、堆棧的生長方向、臨界代碼區的保護方式。需要說明的是uC/OS-II中臨界代碼區的保護方式有3種,本設計采用第3種,即在進入臨界區之前把CPU狀態寄存器SREG的內容保存到一個局部變量cpu_sr中,在退出臨界區之后再還原SREG,這樣做的好處是臨界區保護不會對SREG產生影響。其中SREG的保存和返回函數必須由匯編語言來寫,放在OS_CPU_A.S文件中。 第2個文件OS_CPU_C.C中主要是任務堆棧初始化函數OSTaskStkInit(),任務創建時調用此函數來初始化任務的堆棧結構。該函數一開始把傳入的任務函數的指針存放到硬件堆棧的棧頂,看上去就像該函數在執行過程中發生了中斷相同(低字節在先),這樣返回后就能從新的任務開始執行了。需要特別注意的是,在這個函數中必須把CPU狀態寄存器SREG的值設為0x80,也就是全局中斷使能,否則系統將崩潰。 最后一個文件OS_CPU_A.S是個匯編源文件,主要定義了6個匯編函數。首先是臨界區保護用到的SREG保存和恢復函數。然后定義的是OSStartHighRdy()函數,他只在系統啟動時由OSStart()函數調用一次,所做的工作主要是讓系統從最高優先級的任務開始執行,實現的方法和后面要介紹的OSCtxSw()函數相似。OSCtxSw()函數實現的是任務級的轉換,首先把當前的任務的狀態保存到其任務控制塊TCB中,然后把當前優先級最高的任務的TCB中的內容加載到工作寄存器中,這樣函數返回后就能從此任務開始執行了。接下來的OSIntCtxSw()函數實現的是中斷級的任務轉換,他和OSCtxSw()函數的唯一不同是他是在中斷中調用的,因此不必保存工作寄存器的內容,剩下的和任務級的轉換過程完全相同。最后一個定義的是節拍時鐘的中斷服務子程式,在這個函數中的開始要令中斷欠套全局變量加1,并且調用時鐘管理函數OSTimeTick(),中斷退出時調用系統提供的中斷退出函數OSIntExit()。 <strong>4 網絡平臺設計</strong> LwIP是一套專門為嵌入式系統設計的源碼開放的輕型協議棧,最新版本是LwIP1.1.0。LwIP在保持TCP/IP協議基本需求的前提下,通過層和層之間共享內存,避免了許多繁瑣的復制處理,這樣做雖然破壞了嚴格的分層思想,但卻大幅度地節省了代碼和數據存儲空間,因此非常適合嵌入式應用。和其他輕型協議棧不同的是,LwIP不僅支持一般的網絡協議,比如UDP協議、DHCP協議、PPP協議等,而且還支持多網絡接口、IPv6和標準API 。 <img style="WIDTH: 291px; HEIGHT: 170px" onclick="ImgClick(this)" height="170" alt="lwip運行機制" hspace="0" src="http://www.21ic.com/news/upload/2006_10/061017105257503.gif" width="291" border="0" resized="0"/> 圖3:LwIP運行機制 <strong>4.1 LwIP在uC/OS-II上的移植</strong> 針對uC/OS-II和AVR的ICC編譯器,LwIP的移植只需要編寫arch目錄下的3個文件??cc.h、sys_arch.h和sys_arch.c。其中cc.h中有和CPU和編譯器有關的定義,包括數據結構和大小端存儲方式等。其中關鍵代碼區的保護用uC/OS-II中的相應函數替換一下即可。剩下的兩個和操作系統有關的文件是移植工作的重點。 為了增強移植性,LwIP專門把和操作系統有關的數據結構和函數放在一起組成操作系統封裝層,為諸如定時、進程同步和消息傳遞等操作系統服務提供統一的接口,移植時僅需針對不同的操作系統來實現特定的操作系統封裝層,這些是由sys_arch.h和sys_arch.c實現的。其中sys_arch.h主要定義和操作系統相關的數據結構??信號量、郵箱和進程號,這些在uC/OS-II中都有對應的實體,要注意的是LwIP中的郵箱對應于uC/OS-II中的消息隊列。 <div id="adimg"> sys_arch.c中要實現和操作系統有關函數的定義,包括系統的初始化及信號和郵箱的操作??創建、刪除、投遞和等待,這些功能只需要用uC/OS-II中相應的函數進行重新封裝即可。另外,TCP/IP協議棧中需要許多定時器的功能,這在LwIP中是用sys_timeout結構體隊列和相應的函數實現的 。每個sys_timeout結構體包括本線程的timeout時間長度,及超時后的回調處理函數 <div id="adimg">。sys_arch.c中sys_arch_timeouts()函數的功能就是返回當前進程所對應的sys_timeout結構體隊列的頭指針。本系統用的方法是在系統初始化的時候根據最大的LwIP進程數創建一個sys_timeout結構體指針的數組,以后每創建一個LwIP進程其優先級都從一個連續的已知區間進行分配,sys_arch_timeouts()函數通過調用OSTaskQuery()函數獲得進程的優先級進而獲得對應的sys_timeout結構體隊列的頭指針。 <strong>4.2 RTL8019AS驅動程式的編寫</strong> RTL8019AS驅動程式做的工作主要是8019AS的初始化、發送和接收以太網數據包。 初始化函數rtl8019_init()是在添加以太網絡接口時由netif_add()函數調用,調用過程中首先初始化此接口對應的全局網絡接口結構體,然后設置8019AS的各功能寄存器 。初始化完8019AS之后調用arp_init()函數啟動ARP功能,然后用sys_timeout()函數啟動ARP緩沖列表生命周期的定時器。 數據包的發送首先從ARP緩沖隊列中查找目的MAC地址,然后構造以太網數據幀的頭部,最后調用底層的發送函數low_level_output()將數據幀發送出去。如果未找到對應的IP/MAC項,發送ARP請求數據幀。數據包的接收由中斷處理函數rtl8019_ISR()調用,他的執行過程是先調用最底層的接收函數low_level_input()從8019AS中接收數據幀,如果接收的是IP數據包,則更新ARP緩沖隊列并把數據包傳給網絡接口結構指定的函數進行處理。如果接收的是ARP數據包,則調用etharp_arp_input()函數處理。為了提高性能,最底層的接收發送函數采用的都是8019AS的遠程DMA工作方式 。 <strong>5 總結</strong> 嵌入式設備和Internet的結合代表著嵌入式系統的未來發展方向,目前已有不少科研機構和公司紛紛加入了嵌入式Internet技術的研究行列。在這種背景之下,本文設計了一種基于8位AVR單片機的多任務嵌入式Internet系統平臺,并且已應用在研究課題“低碼率視頻信號的網絡傳輸”系統中,對于嵌入式Internet技術的推廣應用具有參考意義。本文作者創新點:將實時嵌入式操作系統和輕型TCP/IP協議棧結合起來,應用在8位AVR單片機上,實現了低成本的多任務嵌入式網絡系統平臺。 </div></div></div>
說明:
上面顯示的是代碼內容。您可以先檢查過代碼沒問題,或修改之后再運行.
支持
(
0
)
中立
(
0
)
反對
(
0
)
單帖管理
舉報帖子
使用道具
|
引用
|
回復
下一主題 >>
<< 上一主題
返回版面帖子列表
基于AVR單片機多任務嵌入式Internet系統設計
回復標題:
上傳附件:
簽名
:
不顯示
顯示
RSS2.0
Xhtml無圖版
Xslt無圖版
Copyright © 2000 - 2009
曙海
教育集團
Powered By
曙海教育集團
Version 2.2
頁面執行時間 0.04688 秒, 3 次數據查詢
主站蜘蛛池模板:
久久综合中文字幕一区二区三区
|
亚洲a级
|
国产一区二区精品在线观看
|
色天使色婷婷在线影院亚洲
|
日韩欧美视频在线播放
|
99国产精品农村一级毛片
|
国产精品秒播无毒不卡
|
91久久国产露脸精品
|
性欧洲精品videos'
|
草草草在线视频
|
国产片久久
|
日韩欧美一级
|
一个人的视频日本免费
|
99视频网址
|
欧美一区二区在线观看
|
正在播放的国产a一片
|
在线看免费观看韩国特黄一级
|
日韩精品福利视频一区二区三区
|
国产成年人在线观看
|
日韩午夜片
|
日韩a级
|
久久久久久91
|
亚洲一区二区三区视频
|
日本国产一区二区三区
|
亚洲欧美精品一区天堂久久
|
日韩黄色视屏
|
久草在线观看资源
|
免费在线一级片
|
国产成人免费网站
|
国产jk福利视频在线观看
|
欧美一级片在线免费观看
|
99re久久精品国产首页2020
|
日本加勒比一区
|
成年免费观看
|
91久久国产成人免费观看资源
|
国产极品一区
|
国产欧美日韩视频在线观看
|
欧美综合自拍亚洲综合百度
|
亚洲免费高清
|
亚洲国产成人久久综合野外
|
亚洲 欧美 都市 自拍 在线
|