久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

ARM命名規則

時間:2019-05-14 19:49:58下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《ARM命名規則》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《ARM命名規則》。

第一篇:ARM命名規則

ARM==Advanced RISC Machines

它開創了一種嶄新的商業模式,實現了無廠房式工廠,依靠出售芯片技術知識產權的授權來盈利。

其次,ARM是一種architecture,同MIPS、PowerPC、X86等并列。談到架構,這實際上本身就是一個很復雜的概念。就現在的理解來看,架構是一種系統設計藍圖,規劃了方方面面的技術規范。應該說,架構是理論,那么采用同樣的架構,實現的形式可以不相同。這也就是為什么同一架構會有那么多衍生的處理器實現。

ARM可以看作是一種技術,是RISC的代表。應該說,ARM公司位于產業鏈的最上層,盈利也最多。中國國內的一些OEM廠商,只是處于下游的小魚,盈利有限。中國的信息產業要想發展,就必須有自己的核心技術。寫到這里,希望龍芯帶給我們的,是夢想的接近,甚至是實現!(龍芯是兼容MIPS架構)

二、命名規則

這里提到的命名規則,應該分成兩類。

一類是基于ARM Architecture的版本命名規則;

另一類是基于ARM Architecture版本的處理器系列命名規則。

Naming of ARM Architecture versions | ARMv | n | variants | x(variants)| 分成四個組成部分:

ARMv--固定字符,即ARM Version n--指令集版本號。迄今為之,ARM架構版本發布了7個系列,所以n=[1:7]。其中最新的版本是第7版,具體看ARM官方網站。variants--變種。

x(variants)--排除x后指定的變種 常見的變種有:

T--Thumb指令集 M--長乘法指令 E--增強型DSP指令 J--Java加速器Jazelle SIMD--ARM媒體功能擴展

例如,ARMv5TxM表示ARM指令集版本為5,支持T變種,不支持M變種。

Naming of ARM Processor 采用上述的架構,形成一系列的處理器。有時候還要區分處理器核和處理器系列。不過,在這里其實不用區分太細,畢竟這是功能的小部分的變化,核心是相同的。

規則:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S} x--處理器系列

y--存儲管理/保護單元 z--cache T--支持Thumb指令集 D--支持片上調試 M--支持快速乘法器

I--支持Embedded ICE,支持嵌入式跟蹤調試 E--支持增強型DSP指令 J--支持Jazelle F--具備向量浮點單元VFP-S--可綜合版本

ARM體系結構處理器自誕生以來,不斷發展與創新,ARM體系的指令集功能形成了多種版本,為了適合不同的應用場合,各個版本又增加了新的變種,這些變種為該版本的指令集增加了新的功能。不同版本的指令集應用于不同的處理器,這也就形成了ARM處理器系列,ARM系列處理器不同版本實現技術、性能、應用場合個不相同。

ARM體系結構的基本版本 1 版本1 該版本的原型機是ARM1,沒有用于商業產品。包括下列指令: l 除乘法指令之外的基本的數據處理指令。

l 基于字節、字和多字的存儲器訪問指令(Load/Store)。l 包括子程序調用指令BL在內的跳轉指令。l 供操作系統使用的軟件中斷指令SWI。本版本中地址空間是26位,目前已經不再使用。2 版本2 對V1版進行了擴展,包含了對32位結果的乘法指令和協處理器指令的支持。版本2a是版本2的變種,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM處理器。版本2a增加了合并Load和Store(SWP)指令。與版本V1相比,增加了以下指令: l 乘法指令和乘加指令。l 支持協處理器操作指令。

l 對于FIQ模式,提供了額外的兩個備份寄存器。l SWP指令和SWPB指令。

本版本中地址空間是26位,目前已經不再使用。3 版本3 ARM公司第一個微處理器ARM6核心是版本3的,它作為IP核、獨立的處理器、具有片上高速緩存、MMU和寫緩沖的集成CPU。

版本3的變種版本有版本3G和版本3M。版本3G是不與版本2a向前兼容的版本3,版本3M引入了有符號和無符號數乘法和乘加指令,這些指令產生全部64位結果。

版本3版較以前的版本有較大的改動,主要包括: l 處理器的地址空間擴展到32位,但除了版本3G外的其他版本是向前兼容的,支持26位的地址空間。

l 當前程序狀態信息從原來的R15寄存器移到當前程序狀態寄存器CPSR中(Current Program Status Register)。l 增加了程序狀態保存寄存器SPSR(Saved Program Status Register)。l 增加了兩種異常模式,使操作系統代碼可方便地使用數據訪問中止異常、指令預取中止異常和未定義指令異常。

l 增加了MRS/MSR指令,用于訪問新增的CPSR/SPSR寄存器。l 修改了原來的從異常中返回的指令。4 版本4 版本4增加了下列指令:

l 有符號和無符號的半字讀取和寫入指令。l 帶符號的字節讀取和寫入指令。

l 增加了處理器的系統模式(特權模式)。在該模式下,使用的是用戶模式下的寄存器。

l 為結構定義的操作預留一些SWI(軟中斷指令)空間

版本4中明確定義了哪些指令會引起未定義指令異常,不再強制要求與以前的26位地址空間兼容。

ARMv4T在ARMv4的基礎上增加了Thumb指令集:處理器有了Thumb狀態,并且有了在ARM狀態和Thumb狀態切換的指令,處理器在ARM狀態執行ARM指令集,在Thumb狀態執行Thumb指令集。

ARMv4和ARMv4T結構的處理器得到了廣泛的應用。SA-

110、SA-1110等是基于ARMv4的;ARM7TDMI、ARM720T、ARM9TDMI、ARM940T、ARM920T、Intel的StrongARM等是基于ARMv4T版本。5 版本5 版本5在版本4的基礎上增加或修改以下指令:

l 提高了T變種中ARM/Thumb混合使用的效率。

l 對于T變種的指令和非T變種的指令使用相同的代碼生成技術。l 增加了前導零計數(CLZ)指令,該指令可以使整數除法和中斷優先級排隊操作更為有效。

l 增加了軟件斷點(BKPT)指令。

l 為協處理器設計提供了更多可選擇的指令。

l 更加嚴格的定義了乘法指令對條件標志位的影響。l 帶狀態切換的子程序調用(BLX)指令。版本5包括v5TE和v5TEJ,v5TE在v5T的基礎上增加了信號處理(DSP)指令集,v5TEJ除了具備v5T的功能外,還可以執行JAVA字節代碼,是在ARM上執行JAVA指令的效率提高了5-10倍,并且降低了功耗。ARM1020T 是ARMv5T的。

ARM9E-S、ARM966E-S、ARM1020E、ARM 1022E以及XScale是ARMv5TE的。ARM9EJ-S、ARM926EJ-S、ARM7EJ-S、ARM1026EJ-S是基于ARMv5EJ的。6 版本6 ARM體系版本6是2001年發布的。其目標是在有效的芯片面積上為嵌入式系統提供更高的性能。ARMv6 包含了ARMv5TEJ的所有指令。為了使現有的軟件,開發方法、設計技術可再利用,ARMv6兼容了ARMv5的內存管理和異常處理。ARMv6主要在多媒體處理、存儲器管理、多處理器支持、數據處理、異常和中斷響應等方面做了改進。

l SIMD(單指令多數據)指令,可使音視頻處理能力提高2-4倍。l Thumb-2新指令集,混合執行AMR和Thumb代碼,可以提供ARM指令級別的性能和Thumb指令級別的代碼密度。l 混合大小端和非對齊存儲訪問支持

l TrustZone安全技術,在硬件上提供可信區域和不可信區域,兩個區域里運行的代碼有不同的權限。讓經過認證的代碼運行在可信區域,未經過認證的代碼運行在不可信區域,從而提高系統的安全性。采用ARMv6核的處理器是ARM11系列。

ARM1136J(F)-S基于ARMv6主要特性有SIMD、Thumb、Jazelle、DBX、(VFP)、MMU。ARM1156T2(F)-S基于ARMv6T2 主要特性有SIMD、Thumb-

2、(VFP)、MPU。ARM1176JZ(F)-S基于ARMv6KZ 在 ARM1136EJ(F)-S 基礎上增加MMU、TrustZone。ARM11 MPCore基于ARMv6K 在ARM1136EJ(F)-S基礎上可以包括1-4 核SMP、MMU。7 版本7 2004年發布了新的ARMv7體系結構。全新的ARMv7是基于ARMv6的,ARMv7采用了Thumb-2技術,體積比32位ARM代碼減小31%,性能比16位Thumb代碼高出38%。同時,ARMv7保持了對已有ARM代碼的兼容性。此外,ARMv7還支持改良的運行環境,以迎合不斷增加的JIT(Just In Time)和DAC(DynamicAdaptive Compilation)技術的使用。ARMv7的增加的特性有:

l 改進的Thumb-2指令集。

l NEON多媒體技術,將DSP和多媒體處理能力提高了近4倍。l VFPv3改良的浮點運算。l 動態編譯支持。ARM體系結構的變種 Thumb指令集(T變種)

Thumb指令集是將ARM指令集中的一部分指令重新編碼形成的一個子集, Thumb指令長度是16位的。使用Thumb指令可以得到比ARM指令更高的代碼密度,這有助于減小系統的存儲器容量,從而降低系統的成本。另外,對于數據線是8或16位的系統,使用Thumb指令集可以取得好于使用ARM指令集的性能。在ARM體系命名中通用“T”來表示該版本支持Thumb指令集。在ARMv4T中使用v1版Thumb指令集;ARMv5T使用v2版的Thumb指令集。和Thumb v1相比Thumb v2 具有如下特點:

l 通過對指令的修改,來提高ARM指令和Thumb指令混合使用是的效率。l 增加軟件斷點指令。

l 嚴格定義了Thumb乘法指令對條件標志位的影響。與ARM指令集相比,Thumb指令集具有以下局限性:

l 完成相同的操作,Thumb指令通常需要更多的指令。

l Thumb指令集沒有包含進行異常處理時需要的一些指令,異常返回時需要從ARM狀態返回。2 長乘法指令(M變種)

M變種增加了兩條用于進行長乘法的ARM指令。其中一條用于實現32位整數乘以32位整數,生成64位整數的長乘法操作;另一條指令用于實現32位整數乘以32位位整數,然后加上32位整數,生成64位整數的長乘加操作。3 增強型DSP指令(E變種)

l E變種包含了一些附加的指令,這些指令用于增強處理器對一些典型的DSP算法的處理性能。主要包括:

l 幾條新的實現16位數據乘法和乘加操作的指令 l 實現飽和的帶符號數的加減法操作的指令。所謂飽和的帶符號數的加減法操作是在加減法操作溢出時,結果并不進行卷繞(Wrapping around),而是使用最大的整數或最小的負數來表示。

l 進行雙字數據操作的指令,包括雙字讀取指令LDRD、雙字寫入指令STRD和協處理器的寄存器傳輸指令MCRR/MRRC。l Cache預取指令PLD 4 Java加速器Jazelle(J變種)

ARM的Jazelle技術將Java的優勢和先進的32位RISC芯片完美地結合在一起。Jazelle技術提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。與普通的Java虛擬機相比,Jazelle使代碼運行速度提高了8倍,而且功耗降低了80%,Jazelle技術使得程序員可以在一個單獨的處理器上同時運行Java應用程序、已經建立好的操作系統、中間件以及其他的應用程序。與使用協處理器和雙處理器相比,使用單獨得處理器可以在提供高性能的同時,保證低功耗和低成本。ARM體系版本4TEJ最早包含了J變種,用字符J表示J變種。5 SIMD變種(ARM媒體功能擴展)

ARM媒體功能擴展SIMD技術極大地提高了嵌入式應用系統的音頻和視頻處理器能力,它可使微處理器的音頻和視頻性能提高4倍。新一代的Internet應用產品、移動電話和PDA等設備終端需要提供高性能的流式媒體,包括音頻和視頻等。而且這些設備需要提供更加人性化的界面,包括語言輸入和手寫輸入等。這樣,就對處理器的數字信號處理能力提出了很高的要求,同時還必須保證低功耗。ARM的SIMD媒體功能擴展為這些應用系統提供了解決方案,它為包括音頻和視頻處理在內的應用系統提供了優化功能,其主要特點如下: ●使處理器的音頻和視頻處理的性能提高了2~4倍。

●可同時進行2個16位操作數或者4個8位操作數的運算。●用戶可自定義飽和運算的模式。

●可進行2個16位操作數的乘加/乘減運算及32位乘以32位的小數乘加運算。●同時8 /16位選擇操作。

ARM11是基于ARMv6架構建成的。基于ARMv6架構的處理器包括ARM1136J(F)‐S,ARM1156T2(F)‐S,以及ARM1176JZ(F)‐S。ARMv6是ARM進化史上的一個重要里程碑:從那時候起,許多突破性的新技術被引進,存儲器系統加入了很多的嶄新的特性,單指令流多數據流(SIMD)指令也是從v6開始首次引入的。而最前衛的新技術,就是經過優化的Thumb‐2指令集,它專為低成本的單片機及汽車組件市場。

基于從ARMv6開始的新設計理念,ARM進一步擴展了它的CPU設計,成果就是ARMv7架構的閃亮登場。在這個版本中,內核架構首次從單一款式變成3種款式。1)款式A:設計用于高性能的“開放應用平臺”--越來越接近電腦了。

2)款式R:用于高端的嵌入式系統,尤其是那些帶有實時要求的--又要快又要實時。

3)款式M:用于深度嵌入的,單片機風格的系統中--本書的主角。讓我們再進距離地考察這3種款式:

1)款式A(ARMv7‐A):需要運行復雜應用程序的“應用處理器”。支持大型嵌入式操作系統,比如Symbian,Linux,以及微軟的WindowsCE和智能手機操作系統WindowsMobile。這些應用需要勁爆的處理性能,并且需要硬件MMU實現的完整而強大的虛擬內存機制,還基本上會配有Java支持,有時還要求一個安全程序執行環境。典型的產品包括高端手機和手持儀器,電子錢包以及金融事務處理機。

2)款式R(ARMv7‐R):硬實時且高性能的處理器。標的是高端實時市場。那些高級的玩意,像高檔轎車的組件,大型發電機控制器,機器手臂控制器等,它們使用的處理器不但要很好很強大,還要極其可靠,對事件的反應也要極其敏捷。3)款式M(ARMv7‐M):認準了舊世代單片機的應用而量身定制。在這些應用中,尤其是對于實時控制系統,低成本、低功耗、極速中斷反應以及高處理效率,都是至關重要的。

Cortex系列是v7架構的第一次亮相,其中Cortex‐M3就是按款式M設計的。到目前為止,Cortex‐M3也是款式M中被撫養成人的獨苗。其它Cortex家族的處理器包括款式A的Cortex‐A8(應用處理器),款式R的Cortex‐R4(實時處理器)。

處理器命名法

以前,ARM使用一種基于數字的命名法。在早期(1990s),還在數字后面添加字母后綴,用來進一步明細該處理器支持的特性。就拿ARM7TDMI來說,T代表Thumb指令集,D是說支持JTAG調試(Debugging),M意指快速乘法器,I則對應一個嵌入式ICE模塊。后來,這4項基本功能成了任何新產品的標配,于是就不再使用這4個后綴--相當于默許了。但是新的后綴不斷加入,包括定義存儲器接口的,定義高速緩存的,以及定義“緊耦合存儲器(TCM)”的,于是形成了新一套命名法,這套命名法也是一直在使用的。表一:ARM處理器名字

Jazelle是ARM處理器的硬件Java加速器。

MMU,存儲器管理單元,用于實現虛擬內存和內存的分區保護,這是應用處理器與嵌入式處理器的分水嶺。電腦和數碼產品所使用的處理器幾乎清一色地都帶MMU。但是MMU也引入了不確定性,這有時是嵌入式領域--尤其是實時系統不可接受的。然而對于安全關鍵(safety‐critical)的嵌入式系統,還是不能沒有內存的分區保護的。為解決矛盾,于是就有了MPU。可以把MPU認為是MMU的功能子集,它只支持分區保護,不支持具有“定位決定性”的虛擬內存機制。

到了架構7時代,ARM改革了一度使用的,冗長的、需要“解碼”的數字命名法,轉到另一種看起來比較整齊的命名法。比如,ARMv7的三個款式都以Cortex作為主名。這不僅更加澄清并且“精裝”了所使用的ARM架構,也避免了新手對架構號和系列號的混淆。

第二篇:ARM學習心得

ARM linux學習心得(zt)

2008-08-13 13:55

由于很多人總問這個問題,所以這里做一個總結文檔供大家參考。

這里必須先說明,以下的步驟都是針對Linux系統的,并不面向WinCE。也許你會注意到,現在做嵌入式的人中,做linux研究的人遠比做WinCE的人多,很多產家提供的資料也是以linux為主。我一直很難理解,其實WinCE的界面比linux的界面好看多了,使用起來也很方便,更為重要的是,WinCE的開發和Windows下的開發基本一樣,學起來簡單得多,但是學linux或者使用linux做嵌入式的人就是遠比WinCE多。在和很多工作的人交流時我了解到,他們公司從沒考慮使用WinCE,因為成本高,都是使用linux進行開發。我讀研究生的的實驗室中也沒有使用WinCE的,大都研究linux,也有少部分項目使用vxwork,但是就沒有聽說過使用WinCE的,原因就是開源!當然現在WinCE6.0聽說也開源,不過在成本和資源上linux已經有了無人能擋的優勢。與此相對應的是,越來越多的電子廠商已經開始使用linux開發產品。舉個例子,Google近期開發的智能手機操作系統Android其實就是使用linux-2.6.23內核進行改進得到的。

第一,學習基本的裸機編程。

對于學硬件的人而言,必須先對硬件的基本使用方法有感性的認識,更必須深刻認識該硬件的控制方式,如果一開始就學linux系統、學移植那么只會馬上就陷入一個很深的漩渦。我在剛剛開始學ARM的時候是選擇ARM7(主意是當時ARM9還很貴),學ARM7的時候還是保持著學51單片機的思維,使用ADS去編程,第一個實驗就是控制led。學過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復雜的系統最終都會落實到這些最底層的硬件控制,因此對這些硬件的控制有了感性的認識就好很多了

學習裸機的編程的同時要好好理解這個硬件的構架、控制原理,這些我稱他為理解硬件。所謂的理解硬件就是說,理解這個硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進行控制的。比如說,s3c2410中有AD轉換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設備的運轉?還有,norflash內部的每一個單元在這個芯片的內存中都有一個相應的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關系?他們是一樣的嗎?而與norflash相對應的nandflash內部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內存空間上進行使用?或者簡單地說應該怎么用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里面的代碼是什么意思?不要這個可以嗎?

諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學習將有很大的幫助,如果跳過這一步,我相信越往后學越會

覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。

不過先聲明一下,本人并沒有使用ADS對ARM9進行編程,我是學完ARM7后直接就使用ARM9學linux系統的,因此涉及使用ADS對ARM9進行編程的問題我很難回答^_^,自己去研究研究吧。

對于這部分不久將提供一份教程,這個教程中的例程并不是我為我們所代理的板子寫的,是我在我們學院實驗室拿的,英培特為他們自己的實驗箱寫的,不過很有借鑒意義,可以作為一份有價值的參考。

第二,使用linux系統進行一些基本的實驗。

在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有意義的,也是為進一步的學習積累感性認識,你能想象一個從沒有使用過linux系統的人能學好linux的編程嗎?好好按照手冊上的例程做一做里面的實驗,雖然有點娃娃學走路,有點弱智,但是我想很多高手都會經歷這個過程。

在這方面我們深藍科技目前沒有計劃提供相應的例程,主要是開發板的提供商會提供很豐富的例程,我們不做重復工作,只提供他們沒有的、最有價值的東西給大家。

第三,研究完整的linux系統的的運行過程。

所謂完整的linux系統包括哪些部分呢?

三部分:bootloader、linux kernel(linux內核)、rootfile(根文件系統)。那么這3部分是怎么相互協作來構成這個系統的呢?各自有什么用呢?三者有什么聯系?怎么聯系?系統的執行流程又是怎么樣的呢?搞清楚這個問題你對整個系統的運行就很清楚了,對于下一步制作這個linux系統就打下了另一個重要的根基。介紹這方面的資料網上可以挖掘到幾噸,自己好好研究吧。第四,開始做系統移植。

上面說到完整的linux有3部分,而且你也知道了他們之間的關系和作用,那么現在你要做的便是自己動手學會制作這些東西。

當然我不可能叫你編寫這些代碼,這不實現。事實上這個3者都能在網下載到相應的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進行移植的過程中你要學的東西很多,要懂的相關知識也很多,等你完成了這個過程你會發現你已經算是一個初出茅廬的高手了。

在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你

怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內核的分析與編程》,這是一本針對linux-2.6.11內核的書,說得很深,建議先提高自己的C語言編程水平再去看。

至于每個部分的移植網上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經驗的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會告訴你怎么解決,這時就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過我相信能給你一點建議,也許有助你解決問題。

這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標準的源代碼包,然后進行修改,最終運行在板子上。

盜用阿基米德的一句話:“給我一根網線,我能將linux搞定”。

第五,研究linux驅動程序的編寫。

移植系統并不是最終的目的,最終的目的是開發產品,做項目,這些都要進行驅動程序的開發。

Linux的驅動程序可以說是五花八門,linux2.4和linux2.6的編寫有相當大的區別,就是同為linux2.6但是不同版本間的驅動程序也有區別,因此編寫linux的驅動程序變都不是那么容易的事情,對于最新版本的驅動程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個不算很新的版本內核,這樣到時學驅動的編程就有足夠的資料了。

這部分的推薦書籍可以參考另一篇文章《推薦幾本學習嵌入式linux的書籍》。第六,研究應用程序的編寫。

做作品做項目除了編寫驅動程序,最后還要編寫應用程序。現在的趨勢是圖形應用程序的開發,而圖形應用程序中用得最多的還是qt/e函數庫。我一直就使用這個函數庫來開發自己的應用程序,不過我希望你能使用國產的MiniGUI函數庫。盜用周杰倫的廣告詞就是“支持國產,支持MiniGUI”。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應該說是相當不錯的,我曾使用過來開發ARM7的程序。不過MiniGUI最大的不好就是沒有像qtopia這樣的圖形操作平臺,這大大限制了他的推廣,我曾經幻想過與北京飛漫公司(就是MiniGUI的版權擁有者)合作使用MiniGUI函數庫開發像qtopia這樣的圖形操作平臺,不過由于水平有限這只能是幻想了,呵呵。

完成這一步你基本就學完了嵌入式linux的全部內容了。

還有一個小小的經驗想和大家分享。我在學習嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同學師兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自己研究解決問題。這樣做有個好處,就是可以提高自己解決問題的能力,因為做這些東西總有很多問題你難以理解,別人也沒有這方面的經驗,也不是所有問題都有人給你答案,這時必須要自己解決問題,這樣,個人的解決問題能力就顯得非常關鍵了。因此我的建議就是一般的問題到網上搜索一下,確實找不到答案了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你解決問題。

記住,問題是學習的最好機會。

第三篇:arm心得.

心得體會(許晶)

本次實習時間是一周,我們組所選的題目是直流電動機轉速控制設計,其要求有:硬件部分要求在LPC2100系列ARM的最小系統的基礎上,設計通過按鍵控制直流電動機速度的驅動電路,要求通過LPC2100內置的PWM發生器控制直流電動機;并將電動機速度通過串口送至PC機。軟件部分要求設計以上功能的脫機運行程序,并在試驗室調試通過。我負責的是硬件部分。首先我將系統分為兩部分。一是電動機控制驅動電路;二是ARM最小系統。在電動機驅動中,直流電機控制使用了H橋驅動電路,控制口線為P0.21、P0.22。在ARM最小系統中,分為5部分:電源電路、復位電路、JTAG接口電路、RS232串口電路、時鐘電路。

在制作原理圖中,我查閱了實驗指導書和課本。我所選用的是2114板子。因為LPC2114是基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI-STM CPU的微控制器,并帶有128/256 k字節(kB)嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結構使32位代碼能夠在最大時鐘速率下運行。對代碼規模有嚴格控制的應用可使用16位Thumb模式將代碼規模降低超過30%,而性能的損失卻很小。

在這個過程中,我注意到了許多問題。通過最小系統的制圖,我對一些問題逐漸了解,不像剛開始學習一樣,感覺什么也不懂,硬裝知識。我畫了5部分,這幾個部分讓我對書上的內容更加深了學習。如:時鐘電路中,我就把時鐘系統和晶體振蕩兩節課程,重新學習。

而在軟件設計中,在我的搭檔編程完之后,我也對程序進行了研究。在主程序中,我們用的是i、j表示速度與方向,正轉為“+”、反轉為“—”;最小速度為1,最大速度為4。先讓電機正向慢慢的加速,加到正傳的最大速后,在按下就變成反轉,然后在依次加速,往返循環,直至沒有按鍵按下。所運用的是,調節PWM的占空比就能達到電機的速度調節。

我們組在硬件中遇到的問題并不多,主要是在畫各部分原理圖時找器件很不熟練,不能很快的找到。這說明我不經常用軟件。其實這個軟件制圖很方便,各種器件幾乎都能找到,找不到時也可以在上面畫圖。

軟件中,程序在編譯正確后,下載方面出現了許多問題,如連接不上;不能生成hex文件等。其實這些問題,都是因為我們對軟件不熟悉所造成的。在我們多次調試、鏈接之后,終于完成。

經過一周實習,是我對ARM系統有了更深刻的認識。因為前期大家都找工作的原因,我并沒有特別認真的學習,而這次的實習,可以讓我重新再次拿起課本,認真學習。并且使我感觸最深的是,由于嵌入系統的廣泛應用,我應該更好的去學習它、掌握它。像掌握辦公自動化一樣,成為必不可少的技術。

第四篇:ARM學習方法

ARM學習方法

一步一步學習uCOS和ARM體系結構的心得

學習必備條件:

1、一塊開發板——例如44B0開發板,建議初學者不要去購買那些ARM9體系結構的,因為作為初學者來說ARM9體系的東西是很復雜的,買塊ARM7的就可以了(先入門,然后再提高);

2、學習必備書籍

《Pointer on C》中文名字叫《C和指針》(美)里科|譯者:徐波 前提你的了解C指針吧(這本書時非常經典的書籍,完全可以看中文版的,作者翻譯的非常到位)

《嵌入式實時操作系統μCOS-II(第二版)》--邵貝貝翻譯的(不能不承認邵貝貝是一個非常好的翻譯者)

《μC/OS-Ⅱ標準教程》--楊宗德

對于英文不好的朋友可以購買《ARM體系結構與編程》--杜春蕾(該書其實還是有很多翻譯錯誤的,大家在看的時候要注意一下,但是不可否認的是這本書到目前為止算得上是我見過最好的講解關于ARM體系結構的書籍了)

對于英文過關的兄弟姐妹可以直接看

《ARM+Architecture+Reference+Manual(2nd+Edition)》

3、有條件的兄弟姐妹可以選購一個仿真器 JLINK V8全功能版(這個的感謝中國的優秀工程師,是他們把原價1999多的JLINK變成了幾十元錢的東西

4、開發環境--MDK350或者IARARM

如果要熟悉這些開發環境,就需要好好讀一些這些開發環境的手冊資料,不好意思,這個就只有英文的了。

以上4個條件具備下來,可能也不會超過500元錢。

下面來講講我的學習經歷:

我剛開始學習的時候,自己走了不少彎路,這里就省略不說了。

第一步:在開發板上跑跑簡單程序

因為你有開發板,所以你就先在網上找一下對應開發板上的ARM芯片的datasheet,你都不先搞懂芯片的手冊,又談何讓自己實現很多功能呢。

熟讀數據手冊后,就盡可能的在開發板上實現芯片對應的每個功能,像GPIO實驗,UART通訊,I2C,ADC,DAC,PWM,RTC,SPI等等。自己寫自己的程序,然后在開發板上好好實踐一下。

當每個功能模塊都實現以后,建議你讓你的開發板實驗一下多個功能復合使用,比如用UART打印出ADC的值什么的。

第二步:學習uCOS

鑒于你已經購買了《嵌入式實時操作系統μCOS-II(第二版)》,除開以下三個文件:

1、OS_CPU_C.c2、OS_CPU.H,3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編)

這三個文件的處理機制暫時可以不用先了解怎么做的,怎么移植的,以后再說

第一次讀這本書時,搞清楚什么是任務,什么是前后臺,為什么要在系統中加入嵌入式操作系統。

第二次讀這本書時,詳細了解他的TCB(Task Control Block)和ECB(Event Control

Block)的數據結構,搞清楚整個uCOS的實現機制(這里不要先就去看uCOS的移植,這樣只會讓你云里霧里的)

第三次讀這本書是,詳細了解信號量,互斥信號量、消息隊列、郵箱和時間標志組

鑒于你又購買了《μC/OS-Ⅱ標準教程》,你 可以想在VC++ 6.0開發環境下實現對信號量,互斥信號量、消息隊列、郵箱和事件標志組的上機實驗代碼。

如果還是不能了解uCOS怎么工作的,建議你多看幾遍(我可是足足看了6、7遍了,書都翻得脫頁了。汗說明我很笨,希望各位看官都比我聰明,呵呵)

第三步:建立對uCOS的初步認識

在網上下載對應你的開發板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(當然有的開發板已經提供了這樣的基礎實驗)

在你的開發板上跑跑uCOS,建立起自己對于uCOS在ARM7開發板上的認識。

在你所購買的ARM7開發板上編寫一個自己跑uCOS得任務(這里先不要去搞中斷,初學者對于uCOS下的中斷程序設計根本就搞不清楚)

第四步:熟悉ARM體系結構

因為是基于ARM7的移植,建議英文不好的去看看這本書《ARM體系結構與編程》(雖然這本書的作者在翻譯時有很多操作,但是還是建議初學者去購買來好好看看),對于英文好的直接在網上下載《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了

在看這個《ARM體系結構與編程》或

《ARM+Architecture+Reference+Manual(2nd+Edition)》時,務必注意多看幾次,了解以下幾個方面的知識:

1、ARM模式下的指令集

2、Thumd模式下的指令集

3、異常模式及進入異常時ARM如何處理

4、一定能熟悉ARM中的匯編指令

5、熟悉CPSR,R0-R7,R8-R14,R15及在各個模式下,這些寄存器的映射。熟悉以后,再來自己做uCOS的移植了。

第五步:uCOS移植

當然在自己編寫代碼做移植uCOS之前,有必要看看別人的移植代碼。

其實對于uCOS的移植,我們只需要編寫關鍵的三個文件,文件如下:

1、OS_CPU_C.c(堆棧初始化操作OSTaskStkInit函數)

2、OS_CPU.H:完成在該芯片下的數據定義,比如什么unsigned char 之類的,注意一下OS_STK和OS_CPU_SR的定義,定義下關中斷和開中斷的方式,有三個只能選擇1個,ARM芯片一般是定義為第三種方式

3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編),這個文件的內容就多了,要做以下幾個函數的重寫:

1、OSStartHighRdy函數

2、任務級的任務切換函數OSCtxSw,3、中斷級的任務切換OSIntCtxSw,其實只要寫好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的時候記者要把保存當前任務的寄存器去掉就可以了。第六步:測試自己的uCOS移植代碼

第七步:在自己寫的uCOS移植代碼中跑跑任務。

[分享]ARM初學者學習ARM的步驟

很多人學完單片機就想學arm,但不知如何去學~現在列出一下學習這方面的步驟-----基于linux系統的學習步驟如下:(一步步來哦:)

其實這也只是個基礎,以后實際做項目了還要去學很多

1、Linux 基礎

安裝Linux操作系統

Linux文件系統

Linux常用命令

Linux啟動過程詳解

熟悉Linux服務 能夠獨立安裝Linux操作系統

能夠熟練使用Linux系統的基本命令

認識Linux系統的常用服務 安裝Linux操作系統

Linux基本命令實踐

設置Linux環境變量

定制Linux的服務 Shell 編程基礎使用vi編輯文件

使用Emacs編輯文件

使用其他編輯器

2、Shell 編程基礎

Shell簡介

認識后臺程序

Bash編程熟悉Linux系統下的編輯環境

熟悉Linux下的各種Shell

熟練進行shell編程熟悉vi基本操作

熟悉Emacs的基本操作

比較不同shell的區別

編寫一個測試服務器是否連通的shell腳本程序

編寫一個查看進程是否存在的shell腳本程序

編寫一個帶有循環語句的shell腳本程序

3、Linux 下的 C 編程基礎

linux C語言環境概述

Gcc使用方法

Gdb調試技術

Autoconf

Automake

Makefile

代碼優化 熟悉Linux系統下的開發環境

熟悉Gcc編譯器

熟悉Makefile規則編寫Hello,World程序

使用 make命令編譯程序

編寫帶有一個循環的程序

調試一個有問題的程序

4、嵌入式系統開發基礎

嵌入式系統概述

交叉編譯

配置TFTP服務

配置NFS服務

下載Bootloader和內核

嵌入式Linux應用軟件開發流程

熟悉嵌入式系統概念以及開發流程

建立嵌入式系統開發環境制作cross_gcc工具鏈

編譯并下載U-boot

編譯并下載Linux內核

編譯并下載Linux應用程序

4、嵌入式系統移植

Linux內核代碼

平臺相關代碼分析

ARM平臺介紹

平臺移植的關鍵技術

移植Linux內核到 ARM平臺 了解移植的概念

能夠移植Linux內核移植Linux2.6內核到 ARM9開發板

5、嵌入式 Linux 下串口通信

串行I/O的基本概念

嵌入式Linux應用軟件開發流程

Linux系統的文件和設備

與文件相關的系統調用

配置超級終端和MiniCOM 能夠熟悉進行串口通信熟悉文件I/O 編寫串口通信程序

編寫多串口通信程序

6、嵌入式系統中多進程程序設計

Linux系統進程概述

嵌入式系統的進程特點

進程操作

守護進程

相關的系統調用了解Linux系統中進程的概念

能夠編寫多進程程序編寫多進程程序

編寫一個守護進程程序

sleep系統調用任務管理、同步與通信 Linux任務概述 任務調度

管道

信號

共享內存

任務管理 API 了解Linux系統任務管理機制

熟悉進程間通信的幾種方式

熟悉嵌入式Linux中的任務間同步與通信

編寫一個簡單的管道程序實現文件傳輸

編寫一個使用共享內存的程序

7、嵌入式系統中多線程程序設計

線程的基礎知識

多線程編程方法

線程應用中的同步問題了解線程的概念

能夠編寫簡單的多線程程序編寫一個多線程程序

8、嵌入式 Linux 網絡編程

網絡基礎知識

嵌入式Linux中TCP/IP網絡結構

socket 編程

常用 API函數

分析Ping命令的實現

基本UDP套接口編程

許可證管理

PPP協議

GPRS 了解嵌入式Linux網絡體系結構

能夠進行嵌入式Linux環境下的socket 編程

熟悉UDP協議、PPP協議

熟悉GPRS 使用socket 編寫代理服務器

使用socket 編寫路由器

編寫許可證服務器

指出TCP和UDP的優缺點

編寫一個web服務器

編寫一個運行在 ARM平臺的網絡播放器

9、GUI 程序開發

GUI基礎

嵌入式系統GUI類型

編譯QT

進行QT開發熟悉嵌入式系統常用的GUI

能夠進行QT編程使用QT編寫“Hello,World”程序調試一個加入信號/槽的實例

通過重載QWidget 類方法處理事件

10、Linux 字符設備驅動程序

設備驅動程序基礎知識

Linux系統的模塊

字符設備驅動分析

fs_operation結構

加載驅動程序了解設備驅動程序的概念

了解Linux字符設備驅動程序結構

能夠編寫字符設備驅動程序編寫Skull驅動

編寫鍵盤驅動

編寫I/O驅動

分析一個看門狗驅動程序

對比Linux2.6內核與2.4內核中字符設備驅動的不同 Linux 塊設備驅動程序塊設備驅動程序工作原理

典型的塊設備驅動程序分析

塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構

能夠編寫簡單的塊設備驅動程序比較字符設備與塊設備的異同編寫MMC卡驅動程序

分析一個文件系統

對比Linux2.6內核與2.4內核中塊設備驅動的不同

11、文件系統

虛擬文件系統

文件系統的建立

ramfs內存文件系統

proc文件系統

devfs 文件系統

MTD技術簡介

MTD塊設備初始化

MTD塊設備的讀寫操作了解Linux系統的文件系統了解嵌入式Linux的文件系統

了解MTD技術

能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持移植JFFS2文件系統

通過proc文件系統修改操作系統參數

分析romfs 文件系統源代碼

創建一個cramfs 文件系統

第五篇:arm對講機報告

《嵌入式實訓課》 課程設計報告

設計題目: 基于ARM的網絡對講機

專 業 電子信息科學與技術 班 級 091 學 號 200916022118 學生姓名 大石頭

2012年 6 月 10 日

摘要

語音對講系統是現代智能化服務的一個重要組成部分,它對于提高社會高效率和方便還有安全監控力度提高,在現代社會語音對講機在小區等一些工程中高效率的提高的人們方便和減輕了很多事情的工作量。本設計首先是用網線使用UDP協議將兩個ARM機連接起來,通過麥克風傳遞給dev/dsp聲卡的數據然后通過網線傳送到另外一臺ARM機的接收端通過dev/dsp聲卡播放來實現對講的功能。由這樣的思路來實現對講機的功能。

目錄

一、前言...................................................................................................................4

二、系統的總體設計.................................................................................................4(一)功能描述.....................................................................................................4(二)系統基本功能圖..........................................................................................5

三、相關技術綜述.....................................................................................................5(一)Linux操作系統...........................................................................................5 1.Linux的歷史...........................................................................................5 2.Linux具有以下一些特點:......................................................................6(二)聲卡驅動.....................................................................................................7(三)(四)

四、(一)(二)(三)(四)UDP協議.....................................................................................................8 Socket套接字.............................................................................................9 SamSung公司s3c6410微處理器簡介...........................................................9 SamSung公司s3c6410微處理器功能特性...................................................11 系統設計器件.............................................................................................11 電源及復位電路........................................................................................12 系統的硬件設計.................................................................................................9 3.電源電路...............................................................................................12 4.復位電路...............................................................................................12(五)系統時鐘電路............................................................................................13(六)(七)系統存儲器電路........................................................................................14 IIS數字音頻電路.....................................................................................15 5.下面是WM9714芯片和音頻線路輸入的原理圖:.....................................16 6.下圖是mic座原理圖:..........................................................................17 7.下圖為MIC輸入座的俯視圖:................................................................17(八)網卡電路...................................................................................................17

五、系統的軟件設計...............................................................................................19(一)總體設計流程圖........................................................................................19(二)(三)(四)聲卡部分...................................................................................................19 網絡連接部分............................................................................................22 總體部分...................................................................................................23

六、系統測試..........................................................................................................24(一)Linux系統移植安裝..................................................................................24(二)(三)七、八、九、交叉編譯環境搭建.....................................................................................24 聲卡的初始化參數.....................................................................................24 參考文獻..........................................................................................................24 總結與心得體會...............................................................................................25 致謝.................................................................................................................26

一、前言

對講機對大家來說一點也不陌生。現在小區和寫字樓很多場所的保安人員都佩戴有對講機。它給我們的日常生活帶來了便利。對講機的英文名稱是 two way radio,它是一種雙向移動通信工具,在不需要任何網絡支持的情況下,就可以通話,沒有話費產生,適用于相對固定且頻繁通過話的場合。對講機已經有很長的一段歷史了,大部分的對講機是基于模擬電路的集成芯片技術。功能比較單一,價格也不菲。今天我們設計的對講機是應用了現在主流處理器arm的技術。

首先,我們在arm開發板燒入了linux系統,在開發的時候無論是系統還是代碼,都增加了可移植性。另外便于擴展我們目前沒考慮后期需要的模塊。比如,pc對各個對講機的數據監控,lcd顯示等等。Arm的開發靈活的特點讓這些都變成了可能。另外,從經濟方面來看,現在arm芯片的價格相對來說也不高,在市場方面帶來價格上的優勢。

二、系統的總體設計

(一)功能描述

在6410開發板上寫入linux系統后,對dev/dsp聲卡進行編寫程序。程序分為錄音,放音,網絡數據傳輸等幾部分。首先,第一塊arm(以后稱為arm1)在按鍵按下的情況下,麥克風工作,此時對聲卡進行讀寫,并將數據經網路傳給另一塊arm(以后成為arm2,設計過程中用pc代替)。此時如果arm2的按鍵沒有按下的情況下將網絡傳過來的數據寫入聲卡,此時喇叭發出聲音。相對的過程同上依次重復下去

4(二)系統基本功能圖

三、相關技術綜述

(一)Linux操作系統

1.Linux的歷史

Linux它起源于Unix。是一種可自由發布的、多用戶、多任務的優秀操作系統。

UNIX穩定性高、可擴展性強,在金融、電信、能源等一些關鍵性部門得到廣泛的應用。

1991年,芬蘭赫爾辛基大學的學生Linus Torvalds,受Minix系統的啟發,推出一個新的UNIX的變種。他給Internet上的新聞組comp.os.minix發了一封信,聲稱其開發了一個免費的操作系統,并歡迎其他的開發者研究他的工作、提出修改意見。

在芬蘭最大的FTP站點上,Linus建立了一個名為Linux的目錄存放他的源文件,意思是“Linus的Minix”,于是,Linux就這樣被命名了。

許多程序員獲得了Linux的源代碼。隨著他們不斷將原商用UNIX的特性和產品加入到Linux中來,Linux不斷發展壯大,到現在為止,已成為具有全部UNIX特征的操作系統。

2.Linux具有以下一些特點:

(1)兼容UNIX:Linux是UNIX的完整的實現,它混合了BSD UNIX和System V這兩個UNIX版本的最優良的特性。UNIX中的絕大多數命令都可以在Linux中找到、并有所加強;其可靠性、穩定性、以及強大的網絡功能也得到體現。

(2)價格低廉:是一種免費的、公開源碼的自由軟件。它是根據GNU通用公共許可證(GNU General Public License,GPL)發布的。

根據GPL,用戶可以改變任何源代碼,甚至可以銷售Linux。但有一個前提,如果以盈利為目的,則必須提供系統的源代碼,以便其他人也能進一步的修改并銷售。

Linux是由志愿者免費開發和維護的,甚至Linux下的許多應用軟件都是根據GPL發布的、免費的自由軟件。用戶只需花費下載費用,完全可以搭建一套全免費的、與商用系統性能相當的系統。

(3)強大的網絡功能: Linux的開發是通過Internet進行的,支持網絡的功能在開發的早期就已經加入了。

6(4)可靠性好:比Windows更可靠。

Linux對應用程序使用的內存進行了保護,應用程序無法訪問系統分配的區域以外的其他內存,因此,一個軟件的錯誤操作不會造成整個系統的癱瘓(在Windows系統中經常出現的)。

在安全方面,由于源碼被公開,可消除系統中是否有“后門”的疑惑。而且,由于一旦發現漏洞就可以馬上修改源代碼,所以安全性要遠高于Windows系統。

(5)可移植性好:Linux幾乎可以運行在任何的計算機系統之上。

(二)聲卡驅動

聲卡驅動程序提供的/dev/dsp 是用于數字采樣(sampling)和數字錄音(recording)的設備文件,它對于Linux下的音頻編程來講非常重要:向該設備寫數據即意味著激活聲卡上的D/A轉換器進行放音,而向該設備讀數據則意味 著激活聲卡上的A/D 轉換器進行錄音。目前許多聲卡都提供有多個數字采樣設備,它們在Linux下可以通過/dev/dsp1 等設備文件進行訪問。

DSP是數字信號處理器(Digital Signal Processor)的簡稱,它是用來進行數字信號處理的特殊芯片,聲卡使用它來實現模擬信號和數字信號的轉換。聲卡中的DSP設備實際上包含兩個組成部分:在以只讀方式打開時,能夠使用A/D 轉換器進行聲音的輸入;而在以只寫方式打開時,則能夠使用D/A轉換器進行聲音的輸出。嚴格說來,Linux下的應用程序要么以只讀方式打開/dev/dsp 輸入聲音,要么以只寫方式打開/dev/dsp 輸出聲音,但事實上某些聲卡驅動程序仍允許以讀寫的方式打開/dev/dsp,以便同時進行聲音的輸入和輸出,這對于某些應用場合(如IP 電話)來講是非常關鍵的。

在從DSP設備讀取數據時,從聲卡輸入的模擬信號經過A/D 轉換器變成數字采樣后的樣本(sample),保存在聲卡驅動程序的內核緩沖區中,當應用程序通過read 系統調用從聲卡讀取數據時,保存在內核緩沖區中的數字采樣結果將 被復制到應用程序所指定的用戶緩沖區中。需要指出的是,聲卡采樣頻率是由內核中的驅動程序所決定的,而不取決于應用程序從聲卡讀取數據的速度。如果應用程序讀取數據的速度過慢,以致低于聲卡的采樣頻率,那么多余的數據將會被丟棄;如果讀取數據的速度過快,以致高于聲卡的采樣頻率,那么聲卡驅動程序將會阻塞那些請求數據的應用程序,直到新的數據到來為止。

在向DSP設備寫入數據時,數字信號會經過D/A轉換器變成模擬信號,然后產生出聲音。應用程序寫入數據的速度

同樣應該與聲卡的采樣頻率相匹配,否則過慢的話會產生聲音暫停或者停頓的現象,過快的話又會被內核中的聲

卡驅動程序阻塞,直到硬件有能力處理新的數據為止。與其它設備有所不同,聲卡通常不會支持非阻塞(non-blocking)的I/O 操作。

無論是從聲卡讀取數據,或是向聲卡寫入數據,事實上都具有特定的格式(format),默認為8 位無符號數據、單聲道、8KHz采樣率,如果默認值無法達到要求,可以通過ioctl 系統調用來改變它們。通常說來,在應用程序中打 開設備文件/dev/dsp 之后,接下去就應該為其設置恰當的格式,然后才能從聲卡讀取或者寫入數據。

(三)UDP協議

UDP協議的全稱是用戶數據報協議,在網絡中它與TCP協議一樣用于處理數據包。在OSI模型中,在第四層——傳輸層,處于IP協議的上一層。UDP有不提供數據報分組、組裝和不能對數據包的排序的缺點,也就是說,當報文發送之后,是無法得知其是否安全完整到達的。

UDP用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協 8 議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。

與所熟知的TCP(傳輸控制協議)協議一樣,UDP協議直接位于IP(網際協議)協議的頂層。根據OSI(開放系統互連)參考模型,UDP和TCP都屬于傳輸層協議。

UDP協議的主要作用是將網絡數據流量壓縮成數據報的形式。一個典型的數據報就是一個二進制數據的傳輸單位。每一個數據報的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。

(四)Socket套接字

套接字(socket)是套接口描述字的簡稱。和文件句柄相似,SOCKET提供了一種通訊機制,是linux的一種通訊方式。應用程序創建了一個套接字后,就能夠獲得這種機制提供的網絡服務功能。對于服務器來說,它提供了監聽網絡的連接請求;對于客戶機來說,它可以連接到一個給定的主計算機和特定的端口上。客戶端和服務器端可以通過套接字對象來發送和接收數據。套接字提供了分別基于連接的協議(TCP)等和無連接的協議(UDP)等,以滿足網絡連接的可靠性、穩定性以及高速性的要求。

四、系統的硬件設計

(一)SamSung公司s3c6410微處理器簡介

隨著微電子技術的快速發展,ARM處理器經歷了包括ARM7、ARM9在內的多個發展歷程,而ARM11的成熟應用必將為嵌入式的發展帶來新的活力,使更高端的產品應用成為可能。

與ARM9的5級流水線相比,ARM11擁有一條具有獨立的load-store和算術 流水的8級流水線,在同樣工藝下,ARM11處理器的性能與ARM9相比大約提高 了40%。ARM11執行ARMv6架構的指令,ARMv6指令包含了針對媒體處理的單指令流多數據流(SIMD)擴展,采用特殊的設計,以改善視頻處理性能。為了能夠進行快速浮點運算,ARM11增加了向量浮點單元。所有這些結構上的提高,都是ARM9處理器不可比擬的。

ARM11為便攜式和無線應用,提供了從未有過的高超性能,并且使我們主要關心的成本和功耗減到最小。ARM11的微架構保證了系統性能可以從基本的350-500MHz范圍擴展到最終的1GHz以上。其微架構的高效率表現,允許開發者根據不同的應用來調節時鐘頻率和電源電壓,從而在性能和功耗之間達到最佳的折衷。例如,一個基于ARM11的微架構的處理器在1.2V工作電壓下,使用0.13um工藝實現,其功率將不會超過0.4mW/MHz。

ARM11微處理器是一種高性能、低功耗的‘準64位’微處理器!對于目前大多數嵌入式應用,一個真正的64位處理器仍然被認為是不必要的,其巨大的功耗和面積讓人難以接受。對此,ARM11選擇了一個折中的方案,以較小的代價,部分實現了一個64位微架構。ARM11只在處理器整數單位和高速緩存之間,以及在整數單位和協處理器之間實現了64位數據總線。這些64位數據道路允許處理器在一個時鐘周期中同時獲取兩條指令,還允許在一個時鐘周期執行多個數據讀寫指令。這使得ARM11在執行很多特定序列的代碼時能夠達到非常高的性能,特別是那些允許數據搬移與數據處理并行處理的代碼序列。

S3C6410是由三星公司推出的一款低功耗、高性價比的RSIC處理器,它基于ARM11內核(ARM1176JZF-S),可廣泛應用于移動電話和通用處理等領域;S3C6410為2.5G和3G通信服務提供了優化的硬件性能,內置強大的硬件加速器:包括運動視頻處理、音頻處理、2D加速、顯示處理和縮放等;集成了一個MFC(Multi-Format video Codec)支持MPEG4 /H.263/H.264編解碼和VC1的解碼,能夠提供實時的視頻會議以及NRSC和PAL制式的TV輸出;除此之外,該處理器內置一個采用最先進技術的3D加速器,支持OpenGL ES 1.1/ 2.0和D3DMAPI,能實現4M triangles/s的3D加速;同時,S3C6410包含了優化的外部存儲器接口,該接口能滿足在高端通信服務中的數據帶寬要求。由于以上突出的性能表現,10 著名的蘋果公司手機IPHONE就是基于S3C6410處理器。

(二)SamSung公司s3c6410微處理器功能特性

S3C6410 是一個 16/32 位 RISC 微處理器,旨在提供一個具有成本效益、功耗低,性能高的應用處理器解決方案,像移動電話和一般的應用。它為 2.5G 和 3G 通信服務提供優化的 H /W 性能,S3C6410 采用了64/32 位內部總線架構。該 64/32 位內部總線結構由 AXI、AHB 和 APB 總線組成。它還包括許多強大的硬件加速器,像視頻處理,音頻處理,二維圖形,顯示操作和縮放。一個集成的多格式編解碼器(MFC)支持 MPEG4/H.263/H.264 編碼、譯碼以及 VC1 的解碼。這個 H/W 編碼器/解碼器支持實時視頻會議和 NTSC、PAL 模式的 TV 輸出。

S3C6410 有一個優化的接口連線到外部存儲器。存儲器系統具有雙重外部存儲器端口、DRAM 和 FLASH /ROM/ DRAM 端口。DRAM 的端口可以配置為支持移動 DDR,DDR,移動 SDRAM 和 SDRAM。FLASH/ROM/DRAM端口支持 NOR-FLASH,NAND-FLASH,ONENAND,CF,ROM 類型外部存儲器和移動 DDR,DDR,移動 SDRAM 和SDRAM。

為減少系統總成本和提高整體功能,S3C6410 包括許多硬件外設,如一個相機接口,TFT 24 位真彩色液晶顯示控制器,系統管理器(電源管理等),4 通道 UART,32 通道 DMA,4 通道定時器,通用的 I/O 端口,IIS 總線接口,IIC 總線接口,USB 主設備,在高速(480 MB/S)時 USB OTG 操作,SD 主設備和高速多媒體卡接口、用于產生時鐘的 PLL。

S3C6410 提供了豐富的內部設備,下面我們從它的整體特性、多媒體加速特性、視頻接口、USB 特征、存儲器設備、系統外設以及它的系統管理等方面來詳細的介紹 S3C6410 處理器的特性

(三)系統設計器件

? Samsung S3C6410處理器

? 256M字節NAND Flash(SLC)

? 12MHz、48MHz、27MHz、32.768KHz時鐘源;

? 1個100M網口,采用DM9000AE,帶連接和傳輸指示燈

? 2個3.5MM標準立體聲音頻插座。其中包括1個音頻輸出插座,可與耳機連接;1個話筒輸入插座。另有插針形式提供了Line In(四)電源及復位電路

3.電源電路

4.復位電路

系統復位按鍵使用輕觸開關,復位芯片選擇MAX811t,專業復位芯片可保證系統的穩定可靠。

復位芯片MAX811設計原理圖如下:

(五)系統時鐘電路 主晶振(12MHZ)原理圖:

網卡晶振原理圖:

(六)系統存儲器電路

使用了256M Bytes NAND FLASH,型號為K9F2G08U0B(另有MLC結構2G Bytes NAND FLASH的K9GAG08U0D供用戶選擇),片選信號使用CSn2。NAND FLASH 存儲器主要用于存放內核代碼、應用程序、文件系統和數據資料。

NAND FLASH設計原理圖:

(七)IIS數字音頻電路

音頻功能使用S3C6410處理器的AC97總線。外接WM9714音頻芯片,實現集成音頻輸出、Line in輸入和Mic輸入功能。音頻輸出和MIC輸入以及LINE IN均采用標準音頻插座。

5.下面是WM9714芯片和音頻線路輸入的原理圖:

6.下圖是mic座原理圖:

7.下圖為MIC輸入座的俯視圖:

(八)網卡電路

我們在系統集成一個100M以太網接口,通過DM9000AE芯片來擴展。在開發過程中,以太網接口可以用來連接PC機下載文件;在Linux的系統開發時,可以用來掛載NFS網絡文件系統。使用時,需通過交叉網線直接連接PC機,也可以使用直連網線連接交換機或路由器。

DM9000AE設計原理圖如下:

五、系統的軟件設計

(一)總體設計流程圖

(二)聲卡部分

對聲卡進行編程時首先要做的是打開與之對應的硬件設備,這是借助于open系統調用來完成的,并且一般情況下使用的是/dev/dsp 文件。采用何種模 19 式對聲卡進行操作也必須在打開設備時指定,對于不支持全雙工的聲卡來說,應該使用只讀或者只寫的方式打開,只有那些支持全雙工的聲卡,才能以讀寫的方式打開,并且還要依賴于驅動程序的具體實現。Linux允許應用程序多次打開或者關閉與聲卡對應的設備文件,從而能夠很方便地在放音狀態和錄音狀態之間進行切換,建議在進行音頻編程時只要有可能就盡量使用只讀或者只寫的方式打開設備文件,因為這樣不僅能夠充分利用聲卡的硬件資源,而且還有利于驅動程序的優化。下面的代碼示范了如何以可寫可讀方式打開聲卡進行放音(playback)操作:

fd = open(“/dev/dsp”, O_RDWR);

if(fd < 0)

{

perror(“open of /dev/dsp failed”);

exit(1);

}

運行在Linux內核中的聲卡驅動程序專門維護了一個緩沖區,其大小會影響到放音和錄音時的效果,使用ioctl 系統調用可以對它的尺寸進行恰當的設置。調節驅動程序中緩沖區大小的操作不是必須的,如果沒有特殊的要求,一般采用默認的緩沖區大小也就可以了。但需要注意的是,緩沖區大小的設置通常應緊跟在設備文件打開之后,這是因為對聲卡的其它操作有可能會導致驅動程序無法再修改其緩沖區的大小。下面的代碼示范了怎樣設置聲卡驅動程序中的內核緩沖區的大小:

#define LENGTH 3 /* 存儲秒數 */ #define RATE 8000 /* 采樣頻率 */ #define SIZE 8 /* 量化位數 */ #define CHANNELS 1 /* 聲道數目 */ /* 用于保存數字音頻數據的內存緩沖區 */ unsigned char msg[LENGTH*RATE*SIZE*CHANNELS/8];

接下來要做的是設置聲卡工作時的聲道(channel)數目,根據硬件設備和驅動程序的具體情況,可以將其設置為0(單聲道,mono)或者1(立體聲,stereo)。下面的代碼示范了應該怎樣設置聲道數目:

arg = CHANNELS;

status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg);

if(status ==-1)

perror(“SOUND_PCM_WRITE_CHANNELS ioctl failed”);

if(arg!= CHANNELS)

perror(“unable to set number of channels”);

采樣格式和采樣頻率是在進行音頻編程時需要考慮的另一個問題,聲卡支持的所有采樣格式可以在頭文件soundcard.h 中找到,而通過ioctl 系統調用則可以很方便地更改當前所使用的采樣格式。下面的代碼示范了如何設置聲卡的量化位數:

/* 設置采樣時的量化位數 */ arg = SIZE;

status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);

if(status ==-1)

perror(“SOUND_PCM_WRITE_BITS ioctl failed”);

if(arg!= SIZE)

perror(“unable to set sample size”);

聲卡采樣頻率的設置也非常容易,只需在調用ioctl 時將第二個參數的值設置為SNDCTL_DSP_SPEED,同時在第三個參數中指定采樣頻率的數值就行了。對于大多數聲卡來說,其支持的采樣頻率范圍一般為5kHz到44.1kHz 或者48kHz,但并不意味著該范圍內的所有頻率都會被硬件支持,在Linux下進行音頻編程時最常用到的幾種采樣頻率是11025Hz、16000Hz、22050Hz、32000Hz和44100Hz。下面的代碼示范了如何設置聲卡的采樣頻率:

/* 設置采樣時的采樣頻率 */ arg = RATE;

status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);

if(status ==-1)

perror(“SOUND_PCM_WRITE_WRITE ioctl failed”);

(三)網絡連接部分 Socket套接字初始化:

addr_len=sizeof(struct sockaddr_in);bzero(&addr,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(REMOTEPORT);addr.sin_addr.s_addr=inet_addr(REMOTEIP);

(四)總體部分 客戶端:

從聲卡讀取聲音信號放到緩存中

status = read(fd, msg, sizeof(msg));

if(status!= sizeof(msg))

perror(“read wrong number of bytes”);將緩存中的數組發到服務端:

sendto(s,msg,sizeof(msg),0,&addr,addr_len);

服務端:

從客戶端接收數據:

len= recvfrom(mysock,msg,sizeof(msg),0,&addr,&addr_len);將接收的數據寫入聲卡,聲音回放

status = write(fd, msg, sizeof(msg));/* 回放 */

if(status!= sizeof(msg))

perror(“wrote wrong number of bytes”);

六、系統測試

(一)Linux系統移植安裝

我們在成功試驗時使用了ubuntu10.4版本。之前曾經嘗試過很多版本的linux,由于無法安裝dsp驅動不得一次又一次的裝系統,在這個階段花費了很長一段時間。

(二)交叉編譯環境搭建

由于在開發主機上安裝的交叉編譯器與arm里面燒寫的linux版本不對應,造成開發調試的程序無法正常運行。經過訪問論壇找到合適版本的交叉編譯器。問題得到了解決。

(三)聲卡的初始化參數

讀寫聲卡,要有特定的格式(format),默認為8 位無符號數據、單聲道、8KHz采樣率。雖然默認值可以達到我們pc機的要求,但是默認值無法達到我們開發板的要求。在開發過程中,開發板部分噪聲特別大。嚴重影響產品效果。

我們翻閱了資料,得知可以通過ioctl 系統調用來改變它們。在不斷的調試中,不斷地得到老師的幫助。我們最終得到了我們的理想音質效果。

七、參考文獻

[1]孫瓊.嵌入式Li舢x應用程序開發詳解.北京:人民郵電出版社,2007.9 [2]馬忠梅.ARM&Linux嵌入式系統教程.北京:北京航空航天大學出版社,2004 [3]于明.范書瑞.曾祥燁.ARM9嵌入式系統設計與開發教程.北京:電子工業 出版社.2006 24 [4]張景璐.ARM9嵌入式系統設計與應用案例.北京:中國電力出版社.2008 [5]李亞鋒.ARM嵌入式Linux設備驅動實例開發.北京:中國電力出版 社.2008 [6]張琦文.謝建雄.謝勁心.ARM嵌入式常用模塊與綜合系統設計實例精講. 北京:電子工業出版社.2006 [7]孫秋野.孫凱.馮健.ARM嵌入式系統開發典型模塊.北京:人民郵電出版 社.2007 [8]封景剛.吳寶江.ARM嵌入式系統開發完全入門與主流實踐.北京:電子 工業出版社.2008 [9]田澤.ARM9嵌入式Linux開發實驗與實踐.北京:北京航空航天大學出 版社.2006 [10]華清遠見嵌入式培訓中心.嵌入式Linux C語言應用程序設計.北京: 人民郵電出版社出版社.2007 [11]馮國進.嵌入式Linux驅動程序設計從入門到精通.北京:清華大學出 版社.2008 [12]羅苑棠.楊宗德.嵌入式Linux應用系統開發實例精講.北京:電子工業 出版社.2007 [13]楊樹青,王歡.Linux環境下C編程指南.北京:清華大學出版社,2007 [14]李俊.嵌入式Linux設備驅動開發詳解.北京:人民郵電出版社,2008 [15] 龍躍.基于嵌入式系統的網絡音響設計與實現.華中科技大學碩士論 文,2007 [16]陳莉君.Linux操作系統內核分析.北京:人民郵電出版社,2000 [17J盧軍.Linux 0.Ol內核分析與操作系統設計:創造你自己的操作系統. 北京:清華大學出版社,2004

八、總結與心得體會

這次設計有很重要的意義,而且任務很重,但在這次設計中也學到了很多以前課堂沒有的知識。雖然之前有學過有關于ARM方面的知識,不過到實際用的時 25 候發現了很多問題存在,不免有很大的壓力。

這是我們大學重要的設計之一;我們仔細閱讀老師給的資料,并按照實驗步驟進行,盡管如此但在實踐過程中還是遇到了很多的問題,不過經過指導老師的細心講解,讓我學到了很多東西。有些之前我們學過的知識要點,不過有一段時間間隔了,很多的知識要點有不同程度的遺忘,我們通過網絡所搜,和同學一起討論問題。時間過得很快,短短兩周工程訓練;在這兩周時間里,我學到了很多東西,對于linux操作系統,以前了解過一些這方面的知識,但并沒有實踐過;安裝ubuntu軟件的時候,出現了系統卡機;在這次工程訓練中安裝交叉編譯環境讓我有很大的壓力,遇到了很多的問題,在網上也查了很多的資料,最后是在同學的幫助下完成的。安裝完成編譯環境后,設置共享文件時出現了問題,而且連U盤都不能在linux系統中讀出來,開始的時候并不知道怎么樣設置共享,我試圖使用網絡傳輸。不過后來,在同學的指導下完成了設置共享文件,真的很感謝那位同學。使用ARM開發板的時候,掛接U盤,一開始不知道怎們樣把U盤中的文件拷貝到開發板上,后來在知道里面搜索到了,相關的指令;在這次工程訓練中讓我受益非淺。功放電路的制作并不是很難,但放出來的音效并不是很理想,我試圖通過改變電路的參數改善音頻效果,但效果并不是很理想,可能是初始化設置參數的緣故。

在這次工程訓練中學到了很多,更多的了解到了有關于ARM11方面的知識;學會了獨立思考,獨立解決問題;通過和同學交流,共同學習,共同進步;同時也了解到了怎樣更好的通過網絡查找自己需要的資料,在這次設計中由于時間原因,沒有實現同步發送。還有初始化不太準確造成有噪聲

九、致謝

首先感謝的是我的老師殷群老師,殷老師的學術感染力使我受益匪淺,在這學年當中,我得到了殷老師始終如一的指導、關心和照顧。殷老師學識淵博,治學嚴謹,在這學年的學習中,事無巨細,殷老師都能給我最細致和耐心的指導,生活中,殷老師的和善豁達,平易近人的作風也為我如何待人接物,為人處事做 了最好的詮釋,其人格魅力也無形而有力的指引著我做人做事的方式,為我在以后的工作學習中樹立了榜樣。

下載ARM命名規則word格式文檔
下載ARM命名規則.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    ARM學習規劃(經典).

    ARM 學習規劃 ARM+LINUX路線,主攻嵌入式 Linux 操作系統及其上應用軟件開發目標: (1 掌握主流嵌入式微處理器的結構與原理(初步定為 arm9 (2 必須掌握一個嵌入式操作系統 (......

    班級命名

    "班級命名"活動設計龍崗區實驗小學王中舟楊勇李偉明一、活動創意。讓學生選擇自己喜歡的科學家、文學家等歷史名人中的一人,以他們的名字來命名自己的班級,并以他作為全班學習......

    艦艇命名[推薦]

    艦船命名規則 神龍軍團海軍艦船的命名結合了中美海軍的命名規則,由艦艇類型代號,艦艇編號和船名組成。 艦艇類型代號參照美國海軍通用艦船分類符號,以字母縮寫表示艦船種類。......

    教學樓命名

    教學樓:凌志樓明德樓知行樓 學生宿舍樓: 第一套方案:思齊樓文蕙樓怡心樓雅行樓 第二套方案:逸馨樓逸軒樓逸安樓逸遠樓 逸清樓 第三套方案:漢風樓漢韻樓漢源樓漢淵樓 漢景樓 第四......

    實習總結-嵌入式ARM

    實訓總結 班級 卓越1301姓名*** 通過這段時間的學習使我學到了很多知識,并且了解到ARM的應用以及對開發板的應用,為以后的學習奠定了一定的基礎。 嵌入式系統一般定義為以應用......

    嵌入式系統ARM實驗報告

    南京郵電大學通信與信息工程學院 實驗報告 實驗名稱:實驗一基于ADS開發環境的設計 實驗二嵌入式Linux交叉開發環境的建立 實驗三嵌入式Linux環境下的程序設計課程名稱嵌入式......

    ARM學習心得體會(5篇材料)

    ARM四天學習心得體會 1.懂得了如何使用IAR的軟件使用,使用前要先進行環境的設置,具體見文檔IAR使用說明。 2.第一次是學習點亮LED燈,在點亮LED燈中學習到如果要點亮LED燈必須學......

    ARM實習報告感想

    通過這次模具設計,本人在多方面都有所提高。通過這次設計,綜合運用本專業所學課程的理論和實際知識進行設計,提高學生獨立工作能力,鞏固與擴充了ARM等課程所學的內容,掌握ARM設......

主站蜘蛛池模板: 亚洲爆乳少妇无码激情| 亚洲精品高清av在线播放| 久久伊人色av天堂九九小黄鸭| 国产精品中文原创av巨作首播| 久久久久久无码午夜精品直播| aaa午夜级特黄日本大片| 一本本月无码-| 女人脱了内裤趴开腿让男躁| 精品多毛少妇人妻av免费久久| 人妻人人看人妻人人添| 亚洲国产成人精品无码一区二区| 国产艳妇av在线出轨| 久久99精品国产麻豆婷婷| 久久久久爽爽爽爽一区老女人| 久久精品国产亚洲av日韩| 亚洲综合伊人久久综合| 精品一区二区三区无码免费视频| 欧洲熟妇色xxxx欧美老妇免费| 国产免费观看黄av片| 午夜三级a三级三点在线观看| 一本一道av无码中文字幕﹣百度| 亚洲熟女少妇一区二区| 久久高清内射无套| 黄床片30分钟免费视频教程| 伊人久久大香线蕉av一区| 色偷偷亚洲女人的天堂| 黑人大战日本人妻嗷嗷叫| 人妻无码一区二区视频| 最新精品国偷自产在线美女足| 国产福利姬喷水福利在线观看| a欧美亚洲日韩在线观看| 午夜免费福利小电影| 亚洲国产婷婷香蕉久久久久久| 欧美老妇bbbwwbbbww| 婷婷五月综合缴情在线视频| www国产精品内射老熟女| 狠狠爱俺也去去就色| 欧美大荫蒂毛茸茸视频| 无码不卡中文字幕av| 大香j蕉75久久精品免费8| 好了av四色综合无码久久|