導航:首頁 > 編程大全 > 嵌入式網路那些事

嵌入式網路那些事

發布時間:2023-03-08 14:48:47

Ⅰ 如何學習嵌入式

作者:匿名用戶
鏈接:https://www.hu.com/question/19688487/answer/32217959
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

學習嵌入式系統,首先應該明確什麼是嵌入式系統,否則費力去學,卻不知所學為何物,豈不惘然?嵌入式系統的定義很多,這也是困擾嵌入式系統學習的一個因素。筆者根據自己開發和教學過程中的理解,以及對各種嵌入式系統的應用進行總結,提出了嵌入式系統的簡單定義:嵌入式系統是嵌入式計算機系統的簡稱,這個定義突出嵌入式計算機系統和普通計算機系統的共性。下表列出了嵌入式系統的一些典型的應用:
智能機器人(S D R 4,火星登陸車)
娛樂和消費電子(Gameboy Advance,SonyPSP)
網路通信產品(Smartphone)
軍用設備(軍用PDA )
汽車(車載導航,自動駕駛,娛樂系統)
智能儀器(虛擬儀器)
安全防護(防火,防盜)
環境保護(探空氣球)
銀行和商業消費(ATM)
以火星登陸車為例來分析一下嵌入式系統的定義。火星登陸車雖然聽起來感覺在技術上有些高不可測,但是本質就是嵌入式計算機系統的應用,其核心就是一個計算機系統,而這個計算機系統的組成同傳統的計算機系統在本質上沒有什麼差別。兩者的顯著不同之處就在於,用於火星登陸車的計算機系統被安裝到了火星登陸車上。當然,一個計算機系統能夠被安裝在火星登陸車上,是需要進行很多特殊設計的。但是從本質上講,嵌入式系統的核心概念還在計算機系統。嵌入式系統學習的重點也在計算機系統上。一方面,學習者需要牢固掌握計算機系統本身的概念,更重要的是學習嵌入系統的開發過程同傳統計算機系統開發過程的差別。這里需要指出的是,很多學習者本來就沒有從事過完整計算機系統的開發,高校的教學是以程序設計為中心的,計算機系統的構成,操作系統的原理,編程語言等課程都是為了能夠讓學生更好的使用計算機系統進行程序設計,在現有的計算平台上來設計實現各種應用,學生一般沒有機會學習一個完整的計算機系統是如何構建,並親身參與到構建的每一個過程。而對於嵌入式系統而言,從事平台開發的人就是要親自去開發出一個完整的計算機系統,這個過程包括
1. 需求分析
2 硬體設計
3 驅動程序
4 Bootloader & BSP (板級支持包)
5 操作系統的移植
6 應用程序的開發
7 性能檢查
嵌入式系統教學的目的就是教會學生如何根據需求去建立滿足某種特殊行業需求的嵌入式計算機系統。讓學生學會如何構件硬體平台,進行硬體設計,選擇能夠滿足應用要求的最佳的嵌入式操作系統,並完成Bootloader,BSP和驅動程序的編寫,移植,調試等過程。為了滿足行業需求,最終要在所建立的系統上編寫調試相應的應用程序,並進行性能的測試和檢查。

你是誰,你需要學習哪些東西?
如果你的工作只是需要在PC 機上編寫一個圖片瀏覽程序,那麼你就沒有必要去了解當系統收到一個ARP請求包後應該如何回應。同樣的道理,嵌入式系統的學習也是有很多方面的。就嵌入式系統的設計和實現而言,基本上需要四種不同的工作:系統設計工作,硬體設計工作,驅動程序和操作系統移植工作和應用程序設計開發工作。
1.系統設計工作
在系統的設計階段,系統分析師將根據需求確定系統的硬體的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟體開發工具。系統分析師往往是較為完整的參與過嵌入式系統設計的全過程,對於系統應用的行業較為了解,對於嵌入式系統本身的開發流程十分清楚的人。
2.硬體設計工作

系統硬體設計人員需要根據系統分析師的設計結果,進行硬體原理圖的設計。通常需要硬體設計人員熟悉嵌入式系統的硬體構成。硬體設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),乙太網MAC晶元,音頻/視頻編解碼晶元,電源管理晶元,匯流排介面電路 (USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網路通信模塊(Bluetooth,WLAN,GPRS)等硬體電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網路上能找到很多公司的評估板的原理圖,對於這些原理圖要仔細研究,摸清處理器同存儲器,網卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統的構成,這些電路同實際產品中的電路雖有一定差別的,特別是對於手持設備,但這些差別不影響初學者學習嵌入式系統的硬體設計基本構成。
以上這些知識,往往需要較長時間的學習和積累,需要親自參與實踐的機會。對於剛剛接觸嵌入式系統硬體開發的學生來講,一般不可能全部了解這些知識,但也不會是通通一無所知。筆者結合自己開發和教學的經驗認為:首先應該選定一款主流且較為簡單的嵌入式系統處理器,比如基於ARM7TDMI 內核的AT91M40800,S3C44B0 等嵌入式系統處理器,學習32 位RISC處理器的編程模型,指令集。高校教學中,單片計算機課程一般以8051系列單片為核心講解,由於現代32位處理器的結構和開發方式同8位單片機有著較大的差別,學習者還是需要花一點力氣來研究以下32位處理器的。以ARM處理器為例,學習者就需要理解處理器的多種工作模式,備份寄存器,RISC 指令集的特點,MMU 和虛擬地址,中斷處理過程等內容。在學習指令集的過程中,最好能夠每學習幾條指令,就使用這幾條指令在模擬器上實驗以下,觀察處理器執行的結果。這個過程一方面是學習者對於指令本身的學習能夠取得一個比較好的效果,另外也是對開發工具本身的一種學習。接著,就可以開始學習片上資源的使用和配置方法。這時就需要一個方便使用的開發板,學習者能夠通過JTAG模擬器將開發板同調試PC機相連,進行程序的下載,調試。特別是要仔細研究系統的初始化過程和中斷處理的過程。在開發過程中如果遇到問題,應自己分析問題產生的原因,通過分析縮小問題可能產生的范圍,最終找到問題的所在。最重要的就是要保持一種解決問題的信心,面對困難如何處理,往往能夠決定最終系統是否能夠調試成功。然後,學習者可以開始仔細學習處理器同存儲器的連接,存儲空間的配置,各種外擴器件,如網卡,AC97音效卡的工作原理和使用方法。嵌入式系統硬體設計中往往需要使用可編程器件,學習者還需要一定的時間來學習使用常用的可編程器件(CP L D / F P G A),常用的有Xilinx和Altera公司的產品。進行系統硬體原理圖設計,就需要使用原理圖設計的EDA工具,常用的EDA 原理圖設計工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下來就可以參照評估板的電路圖,根據系統的設計要求,開始進行原理圖的繪制了。在原理圖繪制過程中,一定要搞清評估板電路連接的原因,對於一時沒有搞清楚的問題切不可矇混過關。例如,有些處理器的地址線是以位元組位單位的,而另一些處理器的地址線則是以兩個位元組為單位的,當連接16位的存儲器的時候,切不可想當然的把處理器的A 0 直接連接到存儲器的A 0 上面。另外,學生還應具有一定的PCB板圖繪制能力,因為在現階段,很多公司還不能完全把原理圖的設計工作和PCB 的繪制工作分開,往往要求硬體設計人員既能進行原理圖設計又能進行板圖設計。即使是PCB設計和原理圖設計分開的公司,也需要原理圖設計者能為PCB 的設計者對於不同的信號提出布板要求。
3.驅動程序和操作系統移植工作
現代嵌入式系統的開發同傳統8位單片機系統的開發相比,一個顯著的區別就是嵌入式操作系統的廣泛使用。在拿到焊接完畢的電路板,並進行基本的測試後,就要進行驅動程序和操作系統的移植工作了。首先要進行的Bootloader的編寫和移植工作。Bootloader相當於PC系統的BIOS。對於有些嵌入式操作系統,如uc/OSII沒有bootloader同樣可以開發調試。但是對於WindowsCE和嵌入式linux系統而言Bootloader就是必須的了。本文以Windows CE 為例,做一個簡要的說明。
Windows CE 系統的移植工作主要就是BSP(板級支持包)的開發過程。BSP將具體的硬體差異同操作系統的核心隔離開來,主要由Bootloaer ,OAL(OEMAbstraction Layer)和設備驅動程序三部分組成。WindowsCE系統中Bootloader叫做Eboot。Eboot被寫入系統的引導Flash。系統啟動時運行Eboot,完成通過網卡將調試PC 機中WindowsCE 操作系統映像下載到目標系統的SDRAM中並開始執行的功能。對於一個系統移植人員,首先需要閱讀文檔,了解WindowsCE系統Bootloader和BSP的基本概念和開發過程。(呵,還要做這工作啊,我還沒想到(初學^_^))Windows CE的開發系統Platform Builder提供了詳細的文檔和常式,開發人員需要仔細的閱讀文檔和常式。搞清楚各個函數之間的調用關系。在開發過程中的一個重要的步驟就是打通串口,使得目標板能夠通過PC機串口向調試PC 機發送數據。由於ARM系統的模擬器比較昂貴,而且操作系統的調試往往不使用JTAG調試器進行單步調試。所以能從串口觀察程序的執行過程和結果對於調試就顯得十分重要了。串口打通之後一個比較棘手的問題就是網卡晶元的調試。剛剛接觸嵌入式系統開發的人往往沒有直接在寄存器級上使用網卡晶元的經驗,而網卡晶元的說明一般都較為簡短,這就要求開發者學習一些乙太網的基礎知識,對乙太網的MAC 層有一個基本的認識。另外,各種網路調試(抓包)工具的使用也能大大降低系統調試的難度。系統的OAL需要根據具體硬體的不同做出相應的修改,這個部分可參照文檔進行,在調試過程中根據串口的信息分析出錯的地方。要充分發揮跨文件字元串搜索工具的功能,在浩如煙海的源文件中找到出錯的位置。當然,隨著開發者對系統文件目錄結構的熟悉和了解,錯誤定位的速度會不斷加快。WindowsCE 的驅動程序相對而言是比較好寫的。
4.應用程序的開發
嵌入式系統的應用程序開發同在PC 機上開發應用程序的區別不是很大。對於Windows CE系統而言,Microsoft已經提供了較為完善的開發工具。特別是.NET Compact work的使用,使得基於Windows CE.NETCompactwork的應用程序有了跨平台性。開發人員可以使用Windows 的C# 語言直接在PC 上進行http://CE.NET應用程序的開發和模擬調試,也可將目標系統同PC 機相連,進行聯機調試。現在有很多系統支持J2ME(JAVA的嵌入式系統版本) ,這使得JAVA 在嵌入式系統應用開發中佔有較大的優勢。另外,作為專業的嵌入式系統軟體開發人員,還需要充分了解面向對象技術和設計模式等方面的知識,當然作為初學者可以先不深入研究這方面的內容。
常用嵌入式系統處理器和操作系統
處理器
常用嵌入式系統處理器主要包括ARM 處理器,Power PC 處理器,基於MIPS 內核的嵌入式處理器,軟核處理器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(數字信號處理器)等。
ARM 處理器的主要特點是具有較高的性能功耗比。ARM處理器被廣泛的應用在手機,PDA等領域,其中較為著名的有Intel 公司生產的基於ARM 內核的XScale系列處理器。由於所有公司生產的基於ARM內核的處理器具有相同的編程模型,在手持和電池供電的系統中,基於ARM的嵌入式系統處理器往往被首先選用。PowerPC(簡稱PPC)處理器具有較強的運算性能和數據吞吐能力,在網路和數據通信領域基於PPC的嵌入式系統處理器有著廣泛的應用。其中Motorola公司生產的MPC860/MPC8260被大量地應用在嵌入式網路產品中。MIPS 處理器的特點表現在十分強大的處理能力上。作為高性能處理器,MIPS處理器適用於網路、企業及高級消費類電子應用,特別是在機頂盒系統中,MIPS處理器具有較高的市場佔有率。隨著可編程器件的規模不斷擴大,使得人們能夠根據需要定製處理器,並方便的將針對某種特殊應用定製的處理器方便的在可編程器件內部實現。除了處理器外,計算機系統還需要許多其他構成部分,比如在多通道媒體數據處理系統中,經常需要使用可編程器件來實現高速的數據處理功能,使用軟核DSP來實現復雜的數字信號處理演算法,同時還需要處理器進行事務處理,軟核處理器將可編程器件,DSP同處理器結合在一起,為系統級設計提供了極大的靈活性。DSP(數字信號處理器)有別於通用處理器,集中表現在其強大的數字信號處理能力上。在DSP 內部提供了硬體乘累加器,處理器在設計上對於特殊的定址方式做了優化,一些DSP 還支持零耗循環(Zero OverheadLoop)。為了方便嵌入式系統設計,主流DSP 一般也都提供了豐富的外設。特別值得一提的是ADI 公司的Blackfin 系列DSP和TI 公司的DM64X系列DSP,兩種處理器都提供了豐富的片上外設,非常適用嵌入式系統應用。
操作系統
http://WindowCE.NET/5.0
作為Microsoft的產品,WindowCE.NE/5.0提供了功能完備的平台開發工具Platform Builder和應用開發工具Embedded Visual C++/Visual Studio 2003。WindowsCE由於擁有廣大使用者所熟悉的windows界面,系統提供了眾多驅動程序,並且有完備的文檔支持。對於應用開發而言,熟悉Windows系統開發的程序員很容易轉到WindowsCE 應用程序的開發。Windows CE將會是一個非常有前途的嵌入式操作系統。
VxWorks
VxWorks是由Windriver(風河)公司出品的嵌入式實時操作系統,大名鼎鼎的火星登陸車就是使用了VxWorks。Windriver為VxWorks提供了集成開發環境tornado。
υC/OSII
υC/OS是由Jean Labrosse設計編寫的開放源代碼的嵌入式實時操作系統,筆者最早接觸的嵌入式操作系統就是它。閱讀並深入理解υC/OS的源代碼對於理解實時系統是大有裨益的。
ARM Linux
ARM linux是由Russell King和其他開發者開發移植的用於ARM 處理器的linux操作系統。ARM Linux系統在GNU GPL下發布。
υCLinux
υClinux 是適用於沒有MMU 的嵌入式處理的LinuxOS 版本。υ Clinux 同樣在GNU GPL發布。
嵌入式系統開發過程中的常見問題和解決方法
Bootloader如何寫入Flash ?
初學者一般都會遇到如何將程序寫入處理器的問題。對於不同的處理器,可以採用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對於具有JTAG調試工具軟體的處理器,可以使用如下思路:編寫一段程序,這段程序能將位於SDRAM/SRAM 固定地址中的數據寫入Flash中。燒寫時,首先,將這段軟體下載到SDRAM 中,然後通過調試軟體將要寫入Flash的數據下載到SDRAM/SRAM的某個固定地址開始的緩沖區,然後通過調試器開始執行程序,將數據寫入Flash。除此以外,網路上還提供了很多專用的寫Flash的工具,開發者可以根據自己的需要選用。(現在明白了我在學的那個BF533為什麼先下個flashProgramer.dxe先了)
什麼是arm-elf-gcc?
arm-elf-gcc是一個交叉C語言編譯器。我們在PC平台下編譯程序,編譯器運行的處理器同生成的代碼將要運行的處理器相同。但是,在PC
機上編譯ARM程序時,編譯器運行的處理器同生成的代碼運行的處理器不同,這種編譯器叫做交叉編譯器。其中的elf是指編譯器生成的目標文件格式。(其實我們平時用的單片機編譯器如GCC—AVR等已是交叉編譯器了,我到現在才弄清楚什麼是交叉編譯器)
走了哪條編譯路徑?
系統程序和驅動程序往往包含很多的編譯選項,很多選項都是在編譯時通過命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
這樣在編譯的時候就知道,編譯的是哪一條路經了。對於支持#pragma message( 「I am here」)的編譯器也可使用#pragma message預編譯指令。
我怎麼知道那段代碼在那個文件中?
系統編程中經常需要使用在多個文件中搜索字元串,在windows平台下可以使用平台提供的多文件字元串搜索工具。在linux平台下,可以使用grep來搜索字元串。Grep的搜索功能十分強大,支持正則表達式搜索,熟練使用grep對於閱讀系統和驅動程序代碼是很有幫助的。
系統是從那個文件開始運行的?
對於Windows CE系統,一般從WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目錄的某個匯編文件中。對於Linux系統版本不同會存在一定差異,以arm處理器為例,一般會在linux2.4.x\arch\arm\kernel的head-armv.S中。
程序執行到了那裡?
可以在程序中插入如下代碼來實現
printf( 「I am here %s, %d\n」,__FILE__,__LINE__);
代碼將打出printf語句所在的文件名和行號。
推薦書目
Jean J.Labrosse MicroC/OS-II The Real-TimeKernel,Second Edition這本書是筆者接觸嵌入式實時系統的入門書,在國內能夠買到中文版。這本書較為清楚地講述了實時系統的概念,各個組成部分的工作原理,特別是公開了實時系統內核的源代碼,仔細研究定會受益匪淺。有個小的提示,對於初學者,這本書可以先不看第一章,直接從第二章看起。
Abraham Silberschatz, Peter Baer Galvin,GregGagne Operating System Concepts筆者在教學過程中發現,無論是計算機還是電子工程專業都有很多學生對於操作系統的基本概念都沒有搞清,很少有學生有完整的系統編程經驗。Operating System Concepts這本書對操作系統的概念講述只能用經典來形容。對於嵌入式系統有興趣深入研究的同學,首先要把基礎打好,這本書就成了必讀之物了。
Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 學習計算機的同學一定都知道OPERATINGSYSTEMs:Designand
Implementation這本書,筆者對於Tanenbaum這樣的教授由衷佩服。網路協議棧是嵌入式系統中的支柱性組成部分。願意致力於網路深層技術研究的同學,這本書將為你們建立一個堅實的網路基礎。
Karim Yaghmour Building Embedded Linux Systems本書詳盡的介紹了嵌入式linux系統的組成,基本概念和如何去建立各個部分。全書篇幅較小,可謂短小精悍。即可以作為嵌入式linux系統的入門讀物,又是開發過程各個部分的指南。
Advanced RISC Machines Ltd (ARM) ARM7 TDMI DataSheet Advanced RISC Machines Ltd (ARM) ARM920TTechnical Reference Manual學習嵌入式系統不了解當前應用最廣泛的嵌入式處理器怎麼行?ARM7 TDMI 的 data sheet是學習ARM編程模型,指令集的好東西。在嵌入式系統中,MMU(內存管理單元)是很重要的部分,又是較難理解和掌握的部分。ARM920TTechnical Reference Manual 正好可以幫你講解這方面的內容。
Perter Van Der LinDen Expert C Programming嵌入式系統級編程最常用的語言還是C 。很多同學都自認為自己的C語言學的很好,那好,就看看這本書吧,找找自己和Experts差距。
嵌入式開發與桌面開發既有不同,又有非常大的聯系,而且十分注重實際操作能力。搞桌面開發的人在一開始接觸嵌入式的時候,通常轉換不過來,這主要體現在定位上。如文中所說,你是誰,你要做什麼?我對硬體的了解僅限於編程領域,PCB設計一竅不通,但並不能說你不懂硬體就不能從事嵌入式開發。一個系統的開發設計方方面面,在自己感興趣和熟悉的領域做出自己的貢獻才是最主要的。
1。硬體設計: 需要有硬體設計的經驗,對各種嵌入式器件有很好的了解。
2。系統移植:需要匯編經驗,操作系統原理以及底層驅動的了解
3。應用程序:需要桌面編程經驗

Ⅱ 小白看過來,新人如何入門嵌入式

在學習嵌入式Linux之前,肯定要有C語言基礎。匯編基礎有沒有無所謂(就那麼幾條匯回編指令,用到了一看就會答)。C語言要學到什麼程度呢?越熟當然越好,不熟的話也要具備基本技能。比如寫一個數組排序、輸入數字求和什麼的。學C語言唯一的方法是多寫程序多練習,編譯出錯沒關系,自己去解決;執行出錯沒關系,自己去分析。以前我是用VC來練習C語言的,經常去嘗試著寫一些C語言競賽的題目。它們是純C、純數學、純邏輯的題目,不涉及界面這些東西,目前來說嵌入式軟體的就業前景很好,創客學院的嵌入式視頻很適合提高你的編程能力。

Ⅲ 嵌入式internet的幾種接入方式比較

首先介紹嵌入式Internet技術的發展和廣闊的應用前景以及嵌入式Internet技術的基本概念和原理,然後重點闡述了嵌入式系統接入Internet的幾種方式,包括各種接入方式的工作原理,對TCP/IP的處理方法及所需的其他協議、軟硬體等,並對它們各自的優缺點進行了比較,指出了新的發展方向。

關鍵詞:嵌入式系統;嵌入式Internet;TCP/IP協議

0引言

嵌入式Internet技術是一種將嵌入式設備接入Internet的技術,利用該技術可將Internet從PC機延伸到8位、16位、32位單片機,並實現基於Inter-net的遠程數據採集、遠程式控制制、自動報警、上傳/下載數據文件、自動發送E-mail等功能,大大擴展In-ternet的應用范圍。

嵌入式Internet技術的出現時間並不很長,但是發展速度卻非常之快,新思想不斷涌現,新概念連續推出,新技術層出不窮,新產品不斷產生,從底層硬體技術所提供的解決方案到頂層軟體所開拓的想像空間,都在不斷地推陳出新。隨著PC機時代的到來,21世紀將是嵌入式Internet的時代。美國貝爾實驗室總裁Arun Netravali的一批科學家對此做出了預測:嵌入式Internet「將會產生比PC機時代多成百上千倍的瘦伺服器和超級嵌入式瘦伺服器。這些瘦伺服器將與我們所能想到的各種物理信息、生物信息相聯接,通過Internet網自動地、實時地、方便地、簡單地提供給需要這些信息的對象」更多內容可以在闖客技術論壇查看。

網路專家預測,將來在Internet上傳輸的信息中,將有70%的信息來自小型嵌入式系統[2]。嵌入式Internet將有很好的發展前景和廣闊的市場,未來的Internet技術將是嵌入式Internet佔主導地位,因此嵌入式系統與Internet的接入方式已成為人們研究的熱點。

1嵌入式Internet的基礎

嵌入式Internet是嵌入式系統與Internet的結合。嵌入式系統中包含嵌入式處理機、嵌入式操作系統和應用電路部分,與Internet的接入則必須有對應的接入協議,如通用的TCP/IP協議。因此,實現嵌入式Internet的基礎是嵌入式處理機、嵌入式操作系統和接入Internet的通信協議。

(1)嵌入式處理機

單片機就是典型的嵌入式處理機,如常見的In-tel的8051系列、Atmel的AVR、MicroChip的PIC、Motorola的Dragonball、Cygnal的C8051F等,以及一些高端的單片機如ARM、SH3、MIPS等,嵌入式處理機的種類有幾百種。處理機是嵌入式系統的核心,其性能直接影響整個系統的性能高低,影響接入Internet的方式和成本。

(2)嵌入式操作系統

嵌入式系統要完成復雜的功能,已經不可能像普通單片機一樣,直接從底層開始編寫所有程序,必須採用底層的操作系統,在此基礎上來完成復雜的應用軟體設計。但由於嵌入式系統自身資源的限制,嵌入式操作不可能像PC機的操作系統一樣龐大,Windows98/2000有幾百兆位元組,而嵌入操作系統一般只有100-200半位元組。同時嵌入操作系統還必須是實時多任務操作系統,而Windows98/2000不是實時操作系統。另一方面,嵌入式處理機的種類繁多,嵌入操作系統還必須支持多種不同處理器體系結構的眾多處理機。

目前國際上嵌入式系統的主流是實時多任務操作系統(RTOS:Real-Time Operating System)。RTOS是嵌入式應用軟體的基礎和開發平台,是一段嵌入在目標代碼中的軟體,用戶的其它應用程序都建立在RTOS之上。不但如此,RTOS還是一個標準的內核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標準的API,並根據各個任務的優先順序,合理地在不同任務之間分配CPU時開發基礎。這樣一來,基於RTOS上的C語言程序具有極大的可移植性。同時,在RTOS基礎上可以編寫出各種硬體驅動程序、專家庫函數、行業庫函數、產品庫函數和通用性的應用程序一起,可以作為產品銷售,促進行業內的知識產權交流。

雖然商品化的嵌入式操作系統在20世紀70年代後期才出現,但到20世紀末,成熟的商品化操作系統已經十分豐富了,如Palm OS,VxWorks,pSOS,Nuclear,VelOSity,QNX,VRTX,WindowsCE(現改名為Windows Powered)以及目前炒得很熱的嵌入式Linux等。

(3)接入Internet的通信協議

嵌入式系統接入Internet同PC機接入Internet一樣,必須通過相應的通信協議。目前的Internet採用TCP/IP協議,因此嵌入式系統接入Internet最終必須通過TCP/IP接入,嵌入式系統對信息進行TCP/IP協議處理,使其變成可以在Internet上傳輸的IP數據包。若採用網關方式,在網關前端可以採用適合嵌入處理機和起控製作用的新協議,通過網關轉換後變成標准IP包接入Internet。

由於嵌入式系統自身資源的限制,處理能力不如台式機強,以及從PC機上來的TCP/IP的復雜性,使得處理通信協議成為嵌入式系統接入Internet的關鍵,也是嵌入式系統接入Internet的難點之一。因此下面著重分析當前的幾種接入方式以及對協議的不同處理方法。

2嵌入Internet的幾種接入方式

2.1處理機加TCP/IP協議方式

採用處理機加TCP/IP協議方式,MCU處理機像PC機一樣直接處理TCP/IP協議,一般需要高檔的處理機,如32位的ARM,SH3,MIPS等MCU和一些單周期指令速度較高的8位MCU,如AVR、SX等,其結構見圖1。

對TCP/IP協議的具體處理又有2種方法。一種方法是採用實時操作系統RTOS,用軟體方式直接處理TCP/IP協議。實時操作系統的功能越來越強大,許多都具有對圖像界面和TCP/IP的支持能力。採用這種方式最靈活,能按用戶需求實現很多復雜的功能,當然靈活的同時帶來的是開發復雜度的增加,對開發人員的要求高,對操作系統和TCP/IP協議都要有一定的熟悉程度,因此開發周期也較長,高檔MCU和RTOS的價格也很高。

另一種是採用固化了TCP/IP協議的硬體晶元,如Seiko Instruments公司的S7600A等,它支持HTTP、SMTP、POP3、MIME等多種協議,通過外部硬體電路處理TCP/IP協議。也可用UBICOM公司(原Scenix公司)的SX單片機加虛擬外設的方式。SX單片機採用CPU並行流水線和單時鍾周期指令,其極限運行速度系數等於1,達到最大值,支持的晶振最大到100 MHz,因此執行速度可達100MIPS。SX單片機的最大特點是支持虛擬外設,將許多功能模塊(如DTMF接收與發送、TCP/IP協議等)設計成軟體功能模塊,需要使用某功能時直接調用相應模塊,其效果等同於安裝對應硬體外設電路,但虛擬外設方式更靈活更方便,且硬體電路簡單。該方式與前一種相比更方便,開發難度有所降低,但還是需要熟悉TCP/IP協議和相關介面。

這兩種方式類似於在MCU上實現PC機加網卡的功能,MCU直接處理TCP/IP協議,復雜度較高,且每個MCU也需要一個IP地址,而IP地址需要付費使用。它需要高檔的MCU處理機和較高的開發成本,因此一般只會在一些高檔產品(如汽車)中使用。它有一個好處是不需要PC機做網關。

2.2Webit方式

Webit是沈陽東大新業信息技術股份有限公司研製開發的嵌入式系統接入Internet的一個實用產品,它將MCU和乙太網控制器集成到一塊小板卡上,將它裝入到嵌入系統中就可以完成嵌入系統與Internet網的聯接。Webit有自己的IP地址,與前面提到的第一種方式相似,但它有更高的集成度,將協議處理部分獨立出來,開發人員省去了網路部分的設計,可將主要精力放在應用系統本身。

Webit總體上是一個基於AVR單片機的系統,在單片機內有用來存儲系統服務程序的8千位元組的FLASH空間、512位元組的RAM空間以及用來存放

系統參數(IP地址、MAC地址、串口波特率等)的EEPROM。在單片機的外圍,有用來存放Web頁面的EEPROM。系統中包含一個10 M乙太網控制器,用來提供網路的聯接。系統提供的應用系統介面為TTL電平的UART口及14位I/O口,通過它與應用系統相連,其應用方式見圖2。

Webit方式實際上與第一種方式類似,只是將協議處理部分分離出來由Webit單獨完成,開發人員可以不必考慮網路協議和相關介面,但也需要獨立的IP地址。該方式也不需要網關,無需PC機,軟、硬體結構可以獨立設計,其開發成本相對較低。

2.3採用專用嵌入式網路協議

利用emWare公司開發的嵌入式微Internet網路技術(EMIT:Embedded Micro InternetworkingTechnology)。EMIT由emNet和emGateway兩部分組成,emNet協議運行在MCU內部,是為嵌入式系統和其他網路(如RS485、IR、RF和電力線等)進行聯接的網路協議。同時,emNet使得集成emMicro的嵌入式系統能夠和嵌入式微控制器網關emGate-way進行有效的通信。嵌入式微控制器網關(即em-Gateway)運行在計算機、TV機頂盒或專用的家用電器伺服器中,它是設備網路和Internet之間聯接的橋梁。應用系統運行MCU內的emNet,通過em-Gateway與Internet聯接,見圖3。

具體來講,EMIT採用桌面計算機或高性能嵌入式處理器作為網關emGateway,支持TCP/IP協議並運行Internet服務程序,形成一個用戶可通過網路瀏覽器進行遠程訪問的伺服器,emGateway通過RS232、RS485、CAN、紅外、射頻等匯流排將多個嵌入式設備聯系起來,每個嵌入式設備的應用程序中包含一個獨立的通信任務,稱為emMicro,監測嵌入式設備中預先定義的各個變數,並將結果反饋到emGateway中;同時emMicro還可以解釋emGate-way的命令,修改設備中的變數,或進行某種控制。

這種方式要求設計工程師必須熟悉emNet協議和相關的介面,並且軟硬體設計的工作量仍然較大。應用系統的MCU處理emNet協議要佔用一定的系統資源,對MCU的要求也較高,同時需要微機做網關。優點是網關中的一個IP地址可以聯接多個嵌入式應用系統。

2.4使用專用晶元Webchip

Webchip是武漢力源公司於2000年4月開發出使嵌入式電子設備和家用電器與網路方便聯接的實用解決方案。Webchip是獨立於各種微控制器的專用網路介面晶元,它通過標準的輸入、輸出口與各種MCU相連。MCU通過Webchip與網關聯接即可接收並執行經由Internet遠程傳來的命令或將數據交給Webchip發送出去。MCU應用系統通過Webchip網路晶元與Gateway聯接,再進入Internet網,如圖4所示。

Webchip內部固化了MCUNet協議,它與em-Gateway和OSGi協議兼容,是MCU電子設備與計算機平台上的Gateway建立聯系的一種軟體協議,可以處理MCU與Gateway之間的通信。MCUNet協議結構簡單,但功能很強。Webchip作用就是解釋通信協議,控制數據傳輸,使MCU應用系統不用去管理協議的具體內容,只需要解釋和執行Webchip送來的命令(Webchip與MCU之間共有17條命令)。Webchip將來自MCU的數據編譯成符合協議規定的格式,然後傳給Gateway,而由Gateway下傳的命令和數據由Webchip負責解釋,然後通過命令方式送給MCU。圖4中的網關伺服器用於協議的解釋、轉換、執行等,通常由一台普通PC機來實現。

Webchip的簡要工作過程是:Webchip通過SPI三線串列介面與MCU應用系統聯接。它與MCU應用系統交換信息是由17條簡單的指令進行控制。Webchip的另一端以RS-232、RS-485或Modem等介面電路與基於PC機平台的網關介面。Webchip在MCU應用系統接入Internet的過程中實際上是起

了底層協議的編譯、解釋和轉換作用,將MCU應用系統與網關再與Internet聯接起來。這是由於PC機網關能提供HTTP服務,又可與網路瀏覽器介面。

這種方案相對更簡單,對MCU要求較低,無論是運行速度、硬體配置和存儲器容量等方面均無特殊要求;軟體設計也只需在原應用系統的基礎上增加一小段介面程序,其它無需作大的改動。對設計工程師,不需要熟悉復雜的網路協議和相關介面,完全不必考慮任何網路協議,只需要解釋並執行We-bchip傳送過來的指令和數據就可以實現與Internet網路聯接。其開發周期更短,也較靈活。同採用專用嵌入式網路協議方案一樣,需要微機做網關,網關中的一個IP地址可以聯接多個嵌入式應用系統。

目前還買不到PS2000的晶元,只是最近在力源網站上有了PS2000的詳細晶元資料。其開發套件也較便宜,包含帶有通信介面的PSM2000模塊板和PSE2000 EVKIT演示套件等。

3結束語

隨著晶元技術的發展,嵌入Internet還會有更多更新的接入方式出現。針對目前的情況,最主要的問題是需要解決成本問題,以上幾種接入方式雖然有成本較低的方案,但與眾多嵌入系統中便宜的MCU系統相比,其接入成本在整個系統中還是佔有相當大的比重。只有接入成本進一步降低才能使嵌入式Internet真正進入尋常百姓家庭,真正在嵌入系統和智能家庭的大市場中發揮重要作用,因此還需要進一步開發單晶元的最低成本的解決方案,以適應市場的需要。

Ⅳ 什麼是嵌入式搞嵌入式是不是等於寫代碼

首先說說嵌入式開發吧,嵌入式開發就是指在嵌入式操作系統下進行開發,一般常用的系統有WinCE,Palm,Symbian現在又多linux,android等,都有相應的SDK開發包。用單片機匯編開發也算是嵌入式,用高級一點的處理器,arm7,arm9,arm10.arm11 到最新的arm context系列,powerpc什麼的開發起來,不過要加操作系統而已,也屬於嵌入式的開發. 針對你的問題一般認為搞嵌入式的可以分為兩類人:一種是底層硬體的開發還可能寫一些底層的驅動程序,另一類是做應用軟體或者專職驅動開發的軟體開發人員,不管底層的具體硬體實現。以上是我的初淺認識,總之這就看你怎樣抉擇了,看你擅長哪一類的!

Ⅳ 常見嵌入式系統有哪些

一個嵌入式系統裝置一般都由嵌入式計算機系統和執行裝置組成,嵌入式計算機系統是整個嵌入式系統的核心,由硬體層、中間層、系統軟體層和應用軟體層組成。執行裝置也稱為被控對象,它可以接受嵌入式計算機系統發出的控制命令,執行所規定的操作或任務。執行裝置可以很簡單,如手機上的一個微小型的電機,當手機處於震動接收狀態時打開;也可以很復雜,如SONY智能機器狗,上面集成了多個微小型控制電機和多種感測器,從而可以執行各種復雜的動作和感受各種狀態信息。

硬體層
硬體層中包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設備介面和I/O介面(A/D、D/A、I/O等)。在一片嵌入式處理器基礎上添加電源電路、時鍾電路和存儲器電路,就構成了一個嵌入式核心控制模塊。其中操作系統和應用程序都可以固化在ROM中。

(1)嵌入式微處理器

嵌入式系統硬體層的核心是嵌入式微處理器,嵌入式微處理器與通用CPU最大的不同在於嵌入式微處理器大多工作在為特定用戶群所專用設計的系統中,它將通用CPU許多由板卡完成的任務集成在晶元內部,從而有利於嵌入式系統在設計時趨於小型化,同時還具有很高的效率和可靠性。

嵌入式微處理器的體系結構可以採用馮·諾依曼體系或哈佛體系結構;指令系統可以選用精簡指令系統(RecedInstructionSet Computer,RISC)和復雜指令系統CISC(Complex Instruction Set Computer,CISC)。RISC計算機在通道中只包含最有用的指令,確保數據通道快速執行每一條指令,從而提高了執行效率並使CPU硬體結構設計變得更為簡單。

嵌入式微處理器有各種不同的體系,即使在同一體系中也可能具有不同的時鍾頻率和數據匯流排寬度,或集成了不同的外設和介面。據不完全統計,全世界嵌入式微處理器已經超過1000多種,體系結構有30多個系列,其中主流的體系有ARM、MIPS、PowerPC、X86和SH等。但與全球PC市場不同的是,沒有一種嵌入式微處理器可以主導市場,僅以32位的產品而言,就有100種以上的嵌入式微處理器。嵌入式微處理器的選擇是根據具體的應用而決定的。

(2)存儲器

嵌入式系統需要存儲器來存放和執行代碼。嵌入式系統的存儲器包含Cache、主存和輔助存儲器。

1、Cache

Cache是一種容量小、速度快的存儲器陣列它位於主存和嵌入式微處理器內核之間,存放的是一段時間微處理器使用最多的程序代碼和數據。在需要進行數據讀取操作時,微處理器盡可能的從Cache中讀取數據,而不是從主存中讀取,這樣就大大改善了系統的性能,提高了微處理器和主存之間的數據傳輸速率。Cache的主要目標就是:減小存儲器(如主存和輔助存儲器)給微處理器內核造成的存儲器訪問瓶頸,使處理速度更快,實時性更強。

在嵌入式系統中Cache全部集成在嵌入式微處理器內,可分為數據Cache、指令Cache或混合Cache,Cache的大小依不同處理器而定。一般中高檔的嵌入式微處理器才會把Cache集成進去。

2、主存

主存是嵌入式微處理器能直接訪問的寄存器,用來存放系統和用戶的程序及數據。它可以位於微處理器的內部或外部,其容量為256KB~1GB,根據具體的應用而定,一般片內存儲器容量小,速度快,片外存儲器容量大。

閱讀全文

與嵌入式網路那些事相關的資料

熱點內容
淘寶低價海關扣押蘋果 瀏覽:335
javadouble和float 瀏覽:303
atmega8下載程序 瀏覽:819
飛鴿傳輸文件和qq哪個快 瀏覽:519
怎樣在win10安裝winxp 瀏覽:354
iphone5s照片模糊不清怎麼解決 瀏覽:75
ps文件過大閃退怎麼辦 瀏覽:325
中國反詐app是什麼梗 瀏覽:830
cnc如何編程零件程序 瀏覽:306
怎樣把word裡面的批註刪掉 瀏覽:807
如何不刪數據卸載軟體視頻 瀏覽:150
有兩個活動網路 瀏覽:598
cad文件如何虛擬列印 瀏覽:799
vb編程軟體怎麼寫 瀏覽:309
ps圖層移到另一文件變模糊 瀏覽:753
騰訊管家強力刪除文件 瀏覽:284
臨時大文件傳輸工具哪個好 瀏覽:406
網信千金app 瀏覽:753
bjss 瀏覽:823
熊貓tvapp怎麼領竹子 瀏覽:863

友情鏈接