欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      ARM學(xué)習(xí)方法

      時(shí)間:2019-05-14 21:52:24下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《ARM學(xué)習(xí)方法》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《ARM學(xué)習(xí)方法》。

      第一篇:ARM學(xué)習(xí)方法

      ARM學(xué)習(xí)方法

      一步一步學(xué)習(xí)uCOS和ARM體系結(jié)構(gòu)的心得

      學(xué)習(xí)必備條件:

      1、一塊開發(fā)板——例如44B0開發(fā)板,建議初學(xué)者不要去購(gòu)買那些ARM9體系結(jié)構(gòu)的,因?yàn)樽鳛槌鯇W(xué)者來(lái)說(shuō)ARM9體系的東西是很復(fù)雜的,買塊ARM7的就可以了(先入門,然后再提高);

      2、學(xué)習(xí)必備書籍

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

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

      《μC/OS-Ⅱ標(biāo)準(zhǔn)教程》--楊宗德

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

      對(duì)于英文過(guò)關(guān)的兄弟姐妹可以直接看

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

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

      4、開發(fā)環(huán)境--MDK350或者IARARM

      如果要熟悉這些開發(fā)環(huán)境,就需要好好讀一些這些開發(fā)環(huán)境的手冊(cè)資料,不好意思,這個(gè)就只有英文的了。

      以上4個(gè)條件具備下來(lái),可能也不會(huì)超過(guò)500元錢。

      下面來(lái)講講我的學(xué)習(xí)經(jīng)歷:

      我剛開始學(xué)習(xí)的時(shí)候,自己走了不少?gòu)澛?,這里就省略不說(shuō)了。

      第一步:在開發(fā)板上跑跑簡(jiǎn)單程序

      因?yàn)槟阌虚_發(fā)板,所以你就先在網(wǎng)上找一下對(duì)應(yīng)開發(fā)板上的ARM芯片的datasheet,你都不先搞懂芯片的手冊(cè),又談何讓自己實(shí)現(xiàn)很多功能呢。

      熟讀數(shù)據(jù)手冊(cè)后,就盡可能的在開發(fā)板上實(shí)現(xiàn)芯片對(duì)應(yīng)的每個(gè)功能,像GPIO實(shí)驗(yàn),UART通訊,I2C,ADC,DAC,PWM,RTC,SPI等等。自己寫自己的程序,然后在開發(fā)板上好好實(shí)踐一下。

      當(dāng)每個(gè)功能模塊都實(shí)現(xiàn)以后,建議你讓你的開發(fā)板實(shí)驗(yàn)一下多個(gè)功能復(fù)合使用,比如用UART打印出ADC的值什么的。

      第二步:學(xué)習(xí)uCOS

      鑒于你已經(jīng)購(gòu)買了《嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II(第二版)》,除開以下三個(gè)文件:

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

      這三個(gè)文件的處理機(jī)制暫時(shí)可以不用先了解怎么做的,怎么移植的,以后再說(shuō)

      第一次讀這本書時(shí),搞清楚什么是任務(wù),什么是前后臺(tái),為什么要在系統(tǒng)中加入嵌入式操作系統(tǒng)。

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

      Block)的數(shù)據(jù)結(jié)構(gòu),搞清楚整個(gè)uCOS的實(shí)現(xiàn)機(jī)制(這里不要先就去看uCOS的移植,這樣只會(huì)讓你云里霧里的)

      第三次讀這本書是,詳細(xì)了解信號(hào)量,互斥信號(hào)量、消息隊(duì)列、郵箱和時(shí)間標(biāo)志組

      鑒于你又購(gòu)買了《μC/OS-Ⅱ標(biāo)準(zhǔn)教程》,你 可以想在VC++ 6.0開發(fā)環(huán)境下實(shí)現(xiàn)對(duì)信號(hào)量,互斥信號(hào)量、消息隊(duì)列、郵箱和事件標(biāo)志組的上機(jī)實(shí)驗(yàn)代碼。

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

      第三步:建立對(duì)uCOS的初步認(rèn)識(shí)

      在網(wǎng)上下載對(duì)應(yīng)你的開發(fā)板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(當(dāng)然有的開發(fā)板已經(jīng)提供了這樣的基礎(chǔ)實(shí)驗(yàn))

      在你的開發(fā)板上跑跑uCOS,建立起自己對(duì)于uCOS在ARM7開發(fā)板上的認(rèn)識(shí)。

      在你所購(gòu)買的ARM7開發(fā)板上編寫一個(gè)自己跑uCOS得任務(wù)(這里先不要去搞中斷,初學(xué)者對(duì)于uCOS下的中斷程序設(shè)計(jì)根本就搞不清楚)

      第四步:熟悉ARM體系結(jié)構(gòu)

      因?yàn)槭腔贏RM7的移植,建議英文不好的去看看這本書《ARM體系結(jié)構(gòu)與編程》(雖然這本書的作者在翻譯時(shí)有很多操作,但是還是建議初學(xué)者去購(gòu)買來(lái)好好看看),對(duì)于英文好的直接在網(wǎng)上下載《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了

      在看這個(gè)《ARM體系結(jié)構(gòu)與編程》或

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

      1、ARM模式下的指令集

      2、Thumd模式下的指令集

      3、異常模式及進(jìn)入異常時(shí)ARM如何處理

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

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

      第五步:uCOS移植

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

      其實(shí)對(duì)于uCOS的移植,我們只需要編寫關(guān)鍵的三個(gè)文件,文件如下:

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

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

      3、OS_CPU_A.asm(這個(gè)是MDK環(huán)境下的匯編文件)或OS_CPU_A.a(這個(gè)是IAR開發(fā)環(huán)境下的匯編),這個(gè)文件的內(nèi)容就多了,要做以下幾個(gè)函數(shù)的重寫:

      1、OSStartHighRdy函數(shù)

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

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

      [分享]ARM初學(xué)者學(xué)習(xí)ARM的步驟

      很多人學(xué)完單片機(jī)就想學(xué)arm,但不知如何去學(xué)~現(xiàn)在列出一下學(xué)習(xí)這方面的步驟-----基于linux系統(tǒng)的學(xué)習(xí)步驟如下:(一步步來(lái)哦:)

      其實(shí)這也只是個(gè)基礎(chǔ),以后實(shí)際做項(xiàng)目了還要去學(xué)很多

      1、Linux 基礎(chǔ)

      安裝Linux操作系統(tǒng)

      Linux文件系統(tǒng)

      Linux常用命令

      Linux啟動(dòng)過(guò)程詳解

      熟悉Linux服務(wù) 能夠獨(dú)立安裝Linux操作系統(tǒng)

      能夠熟練使用Linux系統(tǒng)的基本命令

      認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù) 安裝Linux操作系統(tǒng)

      Linux基本命令實(shí)踐

      設(shè)置Linux環(huán)境變量

      定制Linux的服務(wù) Shell 編程基礎(chǔ)使用vi編輯文件

      使用Emacs編輯文件

      使用其他編輯器

      2、Shell 編程基礎(chǔ)

      Shell簡(jiǎn)介

      認(rèn)識(shí)后臺(tái)程序

      Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境

      熟悉Linux下的各種Shell

      熟練進(jìn)行shell編程熟悉vi基本操作

      熟悉Emacs的基本操作

      比較不同shell的區(qū)別

      編寫一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序

      編寫一個(gè)查看進(jìn)程是否存在的shell腳本程序

      編寫一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序

      3、Linux 下的 C 編程基礎(chǔ)

      linux C語(yǔ)言環(huán)境概述

      Gcc使用方法

      Gdb調(diào)試技術(shù)

      Autoconf

      Automake

      Makefile

      代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境

      熟悉Gcc編譯器

      熟悉Makefile規(guī)則編寫Hello,World程序

      使用 make命令編譯程序

      編寫帶有一個(gè)循環(huán)的程序

      調(diào)試一個(gè)有問(wèn)題的程序

      4、嵌入式系統(tǒng)開發(fā)基礎(chǔ)

      嵌入式系統(tǒng)概述

      交叉編譯

      配置TFTP服務(wù)

      配置NFS服務(wù)

      下載Bootloader和內(nèi)核

      嵌入式Linux應(yīng)用軟件開發(fā)流程

      熟悉嵌入式系統(tǒng)概念以及開發(fā)流程

      建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈

      編譯并下載U-boot

      編譯并下載Linux內(nèi)核

      編譯并下載Linux應(yīng)用程序

      4、嵌入式系統(tǒng)移植

      Linux內(nèi)核代碼

      平臺(tái)相關(guān)代碼分析

      ARM平臺(tái)介紹

      平臺(tái)移植的關(guān)鍵技術(shù)

      移植Linux內(nèi)核到 ARM平臺(tái) 了解移植的概念

      能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板

      5、嵌入式 Linux 下串口通信

      串行I/O的基本概念

      嵌入式Linux應(yīng)用軟件開發(fā)流程

      Linux系統(tǒng)的文件和設(shè)備

      與文件相關(guān)的系統(tǒng)調(diào)用

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

      編寫多串口通信程序

      6、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)

      Linux系統(tǒng)進(jìn)程概述

      嵌入式系統(tǒng)的進(jìn)程特點(diǎn)

      進(jìn)程操作

      守護(hù)進(jìn)程

      相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念

      能夠編寫多進(jìn)程程序編寫多進(jìn)程程序

      編寫一個(gè)守護(hù)進(jìn)程程序

      sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信 Linux任務(wù)概述 任務(wù)調(diào)度

      管道

      信號(hào)

      共享內(nèi)存

      任務(wù)管理 API 了解Linux系統(tǒng)任務(wù)管理機(jī)制

      熟悉進(jìn)程間通信的幾種方式

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

      編寫一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸

      編寫一個(gè)使用共享內(nèi)存的程序

      7、嵌入式系統(tǒng)中多線程程序設(shè)計(jì)

      線程的基礎(chǔ)知識(shí)

      多線程編程方法

      線程應(yīng)用中的同步問(wèn)題了解線程的概念

      能夠編寫簡(jiǎn)單的多線程程序編寫一個(gè)多線程程序

      8、嵌入式 Linux 網(wǎng)絡(luò)編程

      網(wǎng)絡(luò)基礎(chǔ)知識(shí)

      嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)

      socket 編程

      常用 API函數(shù)

      分析Ping命令的實(shí)現(xiàn)

      基本UDP套接口編程

      許可證管理

      PPP協(xié)議

      GPRS 了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu)

      能夠進(jìn)行嵌入式Linux環(huán)境下的socket 編程

      熟悉UDP協(xié)議、PPP協(xié)議

      熟悉GPRS 使用socket 編寫代理服務(wù)器

      使用socket 編寫路由器

      編寫許可證服務(wù)器

      指出TCP和UDP的優(yōu)缺點(diǎn)

      編寫一個(gè)web服務(wù)器

      編寫一個(gè)運(yùn)行在 ARM平臺(tái)的網(wǎng)絡(luò)播放器

      9、GUI 程序開發(fā)

      GUI基礎(chǔ)

      嵌入式系統(tǒng)GUI類型

      編譯QT

      進(jìn)行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI

      能夠進(jìn)行QT編程使用QT編寫“Hello,World”程序調(diào)試一個(gè)加入信號(hào)/槽的實(shí)例

      通過(guò)重載QWidget 類方法處理事件

      10、Linux 字符設(shè)備驅(qū)動(dòng)程序

      設(shè)備驅(qū)動(dòng)程序基礎(chǔ)知識(shí)

      Linux系統(tǒng)的模塊

      字符設(shè)備驅(qū)動(dòng)分析

      fs_operation結(jié)構(gòu)

      加載驅(qū)動(dòng)程序了解設(shè)備驅(qū)動(dòng)程序的概念

      了解Linux字符設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)

      能夠編寫字符設(shè)備驅(qū)動(dòng)程序編寫Skull驅(qū)動(dòng)

      編寫鍵盤驅(qū)動(dòng)

      編寫I/O驅(qū)動(dòng)

      分析一個(gè)看門狗驅(qū)動(dòng)程序

      對(duì)比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動(dòng)的不同 Linux 塊設(shè)備驅(qū)動(dòng)程序塊設(shè)備驅(qū)動(dòng)程序工作原理

      典型的塊設(shè)備驅(qū)動(dòng)程序分析

      塊設(shè)備的讀寫請(qǐng)求隊(duì)列了解Linux塊設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)

      能夠編寫簡(jiǎn)單的塊設(shè)備驅(qū)動(dòng)程序比較字符設(shè)備與塊設(shè)備的異同編寫MMC卡驅(qū)動(dòng)程序

      分析一個(gè)文件系統(tǒng)

      對(duì)比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動(dòng)的不同

      11、文件系統(tǒng)

      虛擬文件系統(tǒng)

      文件系統(tǒng)的建立

      ramfs內(nèi)存文件系統(tǒng)

      proc文件系統(tǒng)

      devfs 文件系統(tǒng)

      MTD技術(shù)簡(jiǎn)介

      MTD塊設(shè)備初始化

      MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng)了解嵌入式Linux的文件系統(tǒng)

      了解MTD技術(shù)

      能夠編寫簡(jiǎn)單的文件系統(tǒng)為 ARM9開發(fā)板添加 MTD支持移植JFFS2文件系統(tǒng)

      通過(guò)proc文件系統(tǒng)修改操作系統(tǒng)參數(shù)

      分析romfs 文件系統(tǒng)源代碼

      創(chuàng)建一個(gè)cramfs 文件系統(tǒng)

      第二篇:ARM學(xué)習(xí)心得

      ARM linux學(xué)習(xí)心得(zt)

      2008-08-13 13:55

      由于很多人總問(wèn)這個(gè)問(wèn)題,所以這里做一個(gè)總結(jié)文檔供大家參考。

      這里必須先說(shuō)明,以下的步驟都是針對(duì)Linux系統(tǒng)的,并不面向WinCE。也許你會(huì)注意到,現(xiàn)在做嵌入式的人中,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是以linux為主。我一直很難理解,其實(shí)WinCE的界面比linux的界面好看多了,使用起來(lái)也很方便,更為重要的是,WinCE的開發(fā)和Windows下的開發(fā)基本一樣,學(xué)起來(lái)簡(jiǎn)單得多,但是學(xué)linux或者使用linux做嵌入式的人就是遠(yuǎn)比WinCE多。在和很多工作的人交流時(shí)我了解到,他們公司從沒(méi)考慮使用WinCE,因?yàn)槌杀靖?,都是使用linux進(jìn)行開發(fā)。我讀研究生的的實(shí)驗(yàn)室中也沒(méi)有使用WinCE的,大都研究linux,也有少部分項(xiàng)目使用vxwork,但是就沒(méi)有聽(tīng)說(shuō)過(guò)使用WinCE的,原因就是開源!當(dāng)然現(xiàn)在WinCE6.0聽(tīng)說(shuō)也開源,不過(guò)在成本和資源上linux已經(jīng)有了無(wú)人能擋的優(yōu)勢(shì)。與此相對(duì)應(yīng)的是,越來(lái)越多的電子廠商已經(jīng)開始使用linux開發(fā)產(chǎn)品。舉個(gè)例子,Google近期開發(fā)的智能手機(jī)操作系統(tǒng)Android其實(shí)就是使用linux-2.6.23內(nèi)核進(jìn)行改進(jìn)得到的。

      第一,學(xué)習(xí)基本的裸機(jī)編程。

      對(duì)于學(xué)硬件的人而言,必須先對(duì)硬件的基本使用方法有感性的認(rèn)識(shí),更必須深刻認(rèn)識(shí)該硬件的控制方式,如果一開始就學(xué)linux系統(tǒng)、學(xué)移植那么只會(huì)馬上就陷入一個(gè)很深的漩渦。我在剛剛開始學(xué)ARM的時(shí)候是選擇ARM7(主意是當(dāng)時(shí)ARM9還很貴),學(xué)ARM7的時(shí)候還是保持著學(xué)51單片機(jī)的思維,使用ADS去編程,第一個(gè)實(shí)驗(yàn)就是控制led。學(xué)過(guò)一段時(shí)間ARM的人都會(huì)笑這樣很笨,實(shí)際上也不是,我倒是覺(jué)得有這個(gè)過(guò)程會(huì)好很多,因?yàn)闊o(wú)論做多復(fù)雜的系統(tǒng)最終都會(huì)落實(shí)到這些最底層的硬件控制,因此對(duì)這些硬件的控制有了感性的認(rèn)識(shí)就好很多了

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

      諸如此類都是對(duì)硬件的理解,理解了這些東西就對(duì)硬件有很深的理解了,這對(duì)以后更深一步的學(xué)習(xí)將有很大的幫助,如果跳過(guò)這一步,我相信越往后學(xué)越會(huì)

      覺(jué)得迷茫,越覺(jué)得這寫東西深不可測(cè)。因?yàn)?,你的根基沒(méi)打好。

      不過(guò)先聲明一下,本人并沒(méi)有使用ADS對(duì)ARM9進(jìn)行編程,我是學(xué)完ARM7后直接就使用ARM9學(xué)linux系統(tǒng)的,因此涉及使用ADS對(duì)ARM9進(jìn)行編程的問(wèn)題我很難回答^_^,自己去研究研究吧。

      對(duì)于這部分不久將提供一份教程,這個(gè)教程中的例程并不是我為我們所代理的板子寫的,是我在我們學(xué)院實(shí)驗(yàn)室拿的,英培特為他們自己的實(shí)驗(yàn)箱寫的,不過(guò)很有借鑒意義,可以作為一份有價(jià)值的參考。

      第二,使用linux系統(tǒng)進(jìn)行一些基本的實(shí)驗(yàn)。

      在買一套板子的時(shí)候一般會(huì)提供一些linux的試驗(yàn)例程,好好做一段時(shí)間這個(gè)吧,這個(gè)過(guò)程也是很有意義的,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識(shí),你能想象一個(gè)從沒(méi)有使用過(guò)linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊(cè)上的例程做一做里面的實(shí)驗(yàn),雖然有點(diǎn)娃娃學(xué)走路,有點(diǎn)弱智,但是我想很多高手都會(huì)經(jīng)歷這個(gè)過(guò)程。

      在這方面我們深藍(lán)科技目前沒(méi)有計(jì)劃提供相應(yīng)的例程,主要是開發(fā)板的提供商會(huì)提供很豐富的例程,我們不做重復(fù)工作,只提供他們沒(méi)有的、最有價(jià)值的東西給大家。

      第三,研究完整的linux系統(tǒng)的的運(yùn)行過(guò)程。

      所謂完整的linux系統(tǒng)包括哪些部分呢?

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

      上面說(shuō)到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和作用,那么現(xiàn)在你要做的便是自己動(dòng)手學(xué)會(huì)制作這些東西。

      當(dāng)然我不可能叫你編寫這些代碼,這不實(shí)現(xiàn)。事實(shí)上這個(gè)3者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個(gè)源代碼不可能下載編譯后就能在你的系統(tǒng)上運(yùn)行,需要很多的修改,直到他能運(yùn)行在你的板子上,這個(gè)修改的過(guò)程就叫移植。在進(jìn)行移植的過(guò)程中你要學(xué)的東西很多,要懂的相關(guān)知識(shí)也很多,等你完成了這個(gè)過(guò)程你會(huì)發(fā)現(xiàn)你已經(jīng)算是一個(gè)初出茅廬的高手了。

      在這個(gè)過(guò)程中如果你很有研究精神的話你必然會(huì)想到看源代碼。很多書介紹你

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

      至于每個(gè)部分的移植網(wǎng)上也可以找到好多噸的資料,自己研究研究吧,不過(guò)要提醒的是,很多介紹自己經(jīng)驗(yàn)的東西都或多或少有所保留,你按照他說(shuō)的去做總有一些問(wèn)題,但是他不會(huì)告訴你怎么解決,這時(shí)就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問(wèn)題,因?yàn)槲椅幢赜龅竭^(guò)你的問(wèn)題,不過(guò)我相信能給你一點(diǎn)建議,也許有助你解決問(wèn)題。

      這一步的最終目的是,從源代碼的官方主頁(yè)上(都是外國(guó)的,悲哀)下載標(biāo)準(zhǔn)的源代碼包,然后進(jìn)行修改,最終運(yùn)行在板子上。

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

      第五,研究linux驅(qū)動(dòng)程序的編寫。

      移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產(chǎn)品,做項(xiàng)目,這些都要進(jìn)行驅(qū)動(dòng)程序的開發(fā)。

      Linux的驅(qū)動(dòng)程序可以說(shuō)是五花八門,linux2.4和linux2.6的編寫有相當(dāng)大的區(qū)別,就是同為linux2.6但是不同版本間的驅(qū)動(dòng)程序也有區(qū)別,因此編寫linux的驅(qū)動(dòng)程序變都不是那么容易的事情,對(duì)于最新版本的驅(qū)動(dòng)程序的編寫甚至還沒(méi)有足夠的參考資料。那么我的建議就是使用、移植一個(gè)不算很新的版本內(nèi)核,這樣到時(shí)學(xué)驅(qū)動(dòng)的編程就有足夠的資料了。

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

      做作品做項(xiàng)目除了編寫驅(qū)動(dòng)程序,最后還要編寫應(yīng)用程序?,F(xiàn)在的趨勢(shì)是圖形應(yīng)用程序的開發(fā),而圖形應(yīng)用程序中用得最多的還是qt/e函數(shù)庫(kù)。我一直就使用這個(gè)函數(shù)庫(kù)來(lái)開發(fā)自己的應(yīng)用程序,不過(guò)我希望你能使用國(guó)產(chǎn)的MiniGUI函數(shù)庫(kù)。盜用周杰倫的廣告詞就是“支持國(guó)產(chǎn),支持MiniGUI”。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應(yīng)該說(shuō)是相當(dāng)不錯(cuò)的,我曾使用過(guò)來(lái)開發(fā)ARM7的程序。不過(guò)MiniGUI最大的不好就是沒(méi)有像qtopia這樣的圖形操作平臺(tái),這大大限制了他的推廣,我曾經(jīng)幻想過(guò)與北京飛漫公司(就是MiniGUI的版權(quán)擁有者)合作使用MiniGUI函數(shù)庫(kù)開發(fā)像qtopia這樣的圖形操作平臺(tái),不過(guò)由于水平有限這只能是幻想了,呵呵。

      完成這一步你基本就學(xué)完了嵌入式linux的全部?jī)?nèi)容了。

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

      記住,問(wèn)題是學(xué)習(xí)的最好機(jī)會(huì)。

      第三篇:arm心得.

      心得體會(huì)(許晶)

      本次實(shí)習(xí)時(shí)間是一周,我們組所選的題目是直流電動(dòng)機(jī)轉(zhuǎn)速控制設(shè)計(jì),其要求有:硬件部分要求在LPC2100系列ARM的最小系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)通過(guò)按鍵控制直流電動(dòng)機(jī)速度的驅(qū)動(dòng)電路,要求通過(guò)LPC2100內(nèi)置的PWM發(fā)生器控制直流電動(dòng)機(jī);并將電動(dòng)機(jī)速度通過(guò)串口送至PC機(jī)。軟件部分要求設(shè)計(jì)以上功能的脫機(jī)運(yùn)行程序,并在試驗(yàn)室調(diào)試通過(guò)。我負(fù)責(zé)的是硬件部分。首先我將系統(tǒng)分為兩部分。一是電動(dòng)機(jī)控制驅(qū)動(dòng)電路;二是ARM最小系統(tǒng)。在電動(dòng)機(jī)驅(qū)動(dòng)中,直流電機(jī)控制使用了H橋驅(qū)動(dòng)電路,控制口線為P0.21、P0.22。在ARM最小系統(tǒng)中,分為5部分:電源電路、復(fù)位電路、JTAG接口電路、RS232串口電路、時(shí)鐘電路。

      在制作原理圖中,我查閱了實(shí)驗(yàn)指導(dǎo)書和課本。我所選用的是2114板子。因?yàn)長(zhǎng)PC2114是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI-STM CPU的微控制器,并帶有128/256 k字節(jié)(kB)嵌入的高速Flash存儲(chǔ)器。128位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16位Thumb模式將代碼規(guī)模降低超過(guò)30%,而性能的損失卻很小。

      在這個(gè)過(guò)程中,我注意到了許多問(wèn)題。通過(guò)最小系統(tǒng)的制圖,我對(duì)一些問(wèn)題逐漸了解,不像剛開始學(xué)習(xí)一樣,感覺(jué)什么也不懂,硬裝知識(shí)。我畫了5部分,這幾個(gè)部分讓我對(duì)書上的內(nèi)容更加深了學(xué)習(xí)。如:時(shí)鐘電路中,我就把時(shí)鐘系統(tǒng)和晶體振蕩兩節(jié)課程,重新學(xué)習(xí)。

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

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

      軟件中,程序在編譯正確后,下載方面出現(xiàn)了許多問(wèn)題,如連接不上;不能生成hex文件等。其實(shí)這些問(wèn)題,都是因?yàn)槲覀儗?duì)軟件不熟悉所造成的。在我們多次調(diào)試、鏈接之后,終于完成。

      經(jīng)過(guò)一周實(shí)習(xí),是我對(duì)ARM系統(tǒng)有了更深刻的認(rèn)識(shí)。因?yàn)榍捌诖蠹叶颊夜ぷ鞯脑?,我并沒(méi)有特別認(rèn)真的學(xué)習(xí),而這次的實(shí)習(xí),可以讓我重新再次拿起課本,認(rèn)真學(xué)習(xí)。并且使我感觸最深的是,由于嵌入系統(tǒng)的廣泛應(yīng)用,我應(yīng)該更好的去學(xué)習(xí)它、掌握它。像掌握辦公自動(dòng)化一樣,成為必不可少的技術(shù)。

      第四篇:ARM命名規(guī)則

      ARM==Advanced RISC Machines

      它開創(chuàng)了一種嶄新的商業(yè)模式,實(shí)現(xiàn)了無(wú)廠房式工廠,依靠出售芯片技術(shù)知識(shí)產(chǎn)權(quán)的授權(quán)來(lái)盈利。

      其次,ARM是一種architecture,同MIPS、PowerPC、X86等并列。談到架構(gòu),這實(shí)際上本身就是一個(gè)很復(fù)雜的概念。就現(xiàn)在的理解來(lái)看,架構(gòu)是一種系統(tǒng)設(shè)計(jì)藍(lán)圖,規(guī)劃了方方面面的技術(shù)規(guī)范。應(yīng)該說(shuō),架構(gòu)是理論,那么采用同樣的架構(gòu),實(shí)現(xiàn)的形式可以不相同。這也就是為什么同一架構(gòu)會(huì)有那么多衍生的處理器實(shí)現(xiàn)。

      ARM可以看作是一種技術(shù),是RISC的代表。應(yīng)該說(shuō),ARM公司位于產(chǎn)業(yè)鏈的最上層,盈利也最多。中國(guó)國(guó)內(nèi)的一些OEM廠商,只是處于下游的小魚,盈利有限。中國(guó)的信息產(chǎn)業(yè)要想發(fā)展,就必須有自己的核心技術(shù)。寫到這里,希望龍芯帶給我們的,是夢(mèng)想的接近,甚至是實(shí)現(xiàn)!(龍芯是兼容MIPS架構(gòu))

      二、命名規(guī)則

      這里提到的命名規(guī)則,應(yīng)該分成兩類。

      一類是基于ARM Architecture的版本命名規(guī)則;

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

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

      ARMv--固定字符,即ARM Version n--指令集版本號(hào)。迄今為之,ARM架構(gòu)版本發(fā)布了7個(gè)系列,所以n=[1:7]。其中最新的版本是第7版,具體看ARM官方網(wǎng)站。variants--變種。

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

      T--Thumb指令集 M--長(zhǎng)乘法指令 E--增強(qiáng)型DSP指令 J--Java加速器Jazelle SIMD--ARM媒體功能擴(kuò)展

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

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

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

      y--存儲(chǔ)管理/保護(hù)單元 z--cache T--支持Thumb指令集 D--支持片上調(diào)試 M--支持快速乘法器

      I--支持Embedded ICE,支持嵌入式跟蹤調(diào)試 E--支持增強(qiáng)型DSP指令 J--支持Jazelle F--具備向量浮點(diǎn)單元VFP-S--可綜合版本

      ARM體系結(jié)構(gòu)處理器自誕生以來(lái),不斷發(fā)展與創(chuàng)新,ARM體系的指令集功能形成了多種版本,為了適合不同的應(yīng)用場(chǎng)合,各個(gè)版本又增加了新的變種,這些變種為該版本的指令集增加了新的功能。不同版本的指令集應(yīng)用于不同的處理器,這也就形成了ARM處理器系列,ARM系列處理器不同版本實(shí)現(xiàn)技術(shù)、性能、應(yīng)用場(chǎng)合個(gè)不相同。

      ARM體系結(jié)構(gòu)的基本版本 1 版本1 該版本的原型機(jī)是ARM1,沒(méi)有用于商業(yè)產(chǎn)品。包括下列指令: l 除乘法指令之外的基本的數(shù)據(jù)處理指令。

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

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

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

      版本3的變種版本有版本3G和版本3M。版本3G是不與版本2a向前兼容的版本3,版本3M引入了有符號(hào)和無(wú)符號(hào)數(shù)乘法和乘加指令,這些指令產(chǎn)生全部64位結(jié)果。

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

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

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

      l 有符號(hào)和無(wú)符號(hào)的半字讀取和寫入指令。l 帶符號(hào)的字節(jié)讀取和寫入指令。

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

      l 為結(jié)構(gòu)定義的操作預(yù)留一些SWI(軟中斷指令)空間

      版本4中明確定義了哪些指令會(huì)引起未定義指令異常,不再?gòu)?qiáng)制要求與以前的26位地址空間兼容。

      ARMv4T在ARMv4的基礎(chǔ)上增加了Thumb指令集:處理器有了Thumb狀態(tài),并且有了在ARM狀態(tài)和Thumb狀態(tài)切換的指令,處理器在ARM狀態(tài)執(zhí)行ARM指令集,在Thumb狀態(tài)執(zhí)行Thumb指令集。

      ARMv4和ARMv4T結(jié)構(gòu)的處理器得到了廣泛的應(yīng)用。SA-

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

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

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

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

      l 為協(xié)處理器設(shè)計(jì)提供了更多可選擇的指令。

      l 更加嚴(yán)格的定義了乘法指令對(duì)條件標(biāo)志位的影響。l 帶狀態(tài)切換的子程序調(diào)用(BLX)指令。版本5包括v5TE和v5TEJ,v5TE在v5T的基礎(chǔ)上增加了信號(hào)處理(DSP)指令集,v5TEJ除了具備v5T的功能外,還可以執(zhí)行JAVA字節(jié)代碼,是在ARM上執(zhí)行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年發(fā)布的。其目標(biāo)是在有效的芯片面積上為嵌入式系統(tǒng)提供更高的性能。ARMv6 包含了ARMv5TEJ的所有指令。為了使現(xiàn)有的軟件,開發(fā)方法、設(shè)計(jì)技術(shù)可再利用,ARMv6兼容了ARMv5的內(nèi)存管理和異常處理。ARMv6主要在多媒體處理、存儲(chǔ)器管理、多處理器支持、數(shù)據(jù)處理、異常和中斷響應(yīng)等方面做了改進(jìn)。

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

      l TrustZone安全技術(shù),在硬件上提供可信區(qū)域和不可信區(qū)域,兩個(gè)區(qū)域里運(yùn)行的代碼有不同的權(quán)限。讓經(jīng)過(guò)認(rèn)證的代碼運(yùn)行在可信區(qū)域,未經(jīng)過(guò)認(rèn)證的代碼運(yùn)行在不可信區(qū)域,從而提高系統(tǒng)的安全性。采用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 基礎(chǔ)上增加MMU、TrustZone。ARM11 MPCore基于ARMv6K 在ARM1136EJ(F)-S基礎(chǔ)上可以包括1-4 核SMP、MMU。7 版本7 2004年發(fā)布了新的ARMv7體系結(jié)構(gòu)。全新的ARMv7是基于ARMv6的,ARMv7采用了Thumb-2技術(shù),體積比32位ARM代碼減小31%,性能比16位Thumb代碼高出38%。同時(shí),ARMv7保持了對(duì)已有ARM代碼的兼容性。此外,ARMv7還支持改良的運(yùn)行環(huán)境,以迎合不斷增加的JIT(Just In Time)和DAC(DynamicAdaptive Compilation)技術(shù)的使用。ARMv7的增加的特性有:

      l 改進(jìn)的Thumb-2指令集。

      l NEON多媒體技術(shù),將DSP和多媒體處理能力提高了近4倍。l VFPv3改良的浮點(diǎn)運(yùn)算。l 動(dòng)態(tài)編譯支持。ARM體系結(jié)構(gòu)的變種 Thumb指令集(T變種)

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

      l 通過(guò)對(duì)指令的修改,來(lái)提高ARM指令和Thumb指令混合使用是的效率。l 增加軟件斷點(diǎn)指令。

      l 嚴(yán)格定義了Thumb乘法指令對(duì)條件標(biāo)志位的影響。與ARM指令集相比,Thumb指令集具有以下局限性:

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

      l Thumb指令集沒(méi)有包含進(jìn)行異常處理時(shí)需要的一些指令,異常返回時(shí)需要從ARM狀態(tài)返回。2 長(zhǎng)乘法指令(M變種)

      M變種增加了兩條用于進(jìn)行長(zhǎng)乘法的ARM指令。其中一條用于實(shí)現(xiàn)32位整數(shù)乘以32位整數(shù),生成64位整數(shù)的長(zhǎng)乘法操作;另一條指令用于實(shí)現(xiàn)32位整數(shù)乘以32位位整數(shù),然后加上32位整數(shù),生成64位整數(shù)的長(zhǎng)乘加操作。3 增強(qiáng)型DSP指令(E變種)

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

      l 幾條新的實(shí)現(xiàn)16位數(shù)據(jù)乘法和乘加操作的指令 l 實(shí)現(xiàn)飽和的帶符號(hào)數(shù)的加減法操作的指令。所謂飽和的帶符號(hào)數(shù)的加減法操作是在加減法操作溢出時(shí),結(jié)果并不進(jìn)行卷繞(Wrapping around),而是使用最大的整數(shù)或最小的負(fù)數(shù)來(lái)表示。

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

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

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

      ●可同時(shí)進(jìn)行2個(gè)16位操作數(shù)或者4個(gè)8位操作數(shù)的運(yùn)算。●用戶可自定義飽和運(yùn)算的模式。

      ●可進(jìn)行2個(gè)16位操作數(shù)的乘加/乘減運(yùn)算及32位乘以32位的小數(shù)乘加運(yùn)算?!裢瑫r(shí)8 /16位選擇操作。

      ARM11是基于ARMv6架構(gòu)建成的?;贏RMv6架構(gòu)的處理器包括ARM1136J(F)‐S,ARM1156T2(F)‐S,以及ARM1176JZ(F)‐S。ARMv6是ARM進(jìn)化史上的一個(gè)重要里程碑:從那時(shí)候起,許多突破性的新技術(shù)被引進(jìn),存儲(chǔ)器系統(tǒng)加入了很多的嶄新的特性,單指令流多數(shù)據(jù)流(SIMD)指令也是從v6開始首次引入的。而最前衛(wèi)的新技術(shù),就是經(jīng)過(guò)優(yōu)化的Thumb‐2指令集,它專為低成本的單片機(jī)及汽車組件市場(chǎng)。

      基于從ARMv6開始的新設(shè)計(jì)理念,ARM進(jìn)一步擴(kuò)展了它的CPU設(shè)計(jì),成果就是ARMv7架構(gòu)的閃亮登場(chǎng)。在這個(gè)版本中,內(nèi)核架構(gòu)首次從單一款式變成3種款式。1)款式A:設(shè)計(jì)用于高性能的“開放應(yīng)用平臺(tái)”--越來(lái)越接近電腦了。

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

      3)款式M:用于深度嵌入的,單片機(jī)風(fēng)格的系統(tǒng)中--本書的主角。讓我們?cè)龠M(jìn)距離地考察這3種款式:

      1)款式A(ARMv7‐A):需要運(yùn)行復(fù)雜應(yīng)用程序的“應(yīng)用處理器”。支持大型嵌入式操作系統(tǒng),比如Symbian,Linux,以及微軟的WindowsCE和智能手機(jī)操作系統(tǒng)WindowsMobile。這些應(yīng)用需要?jiǎng)疟奶幚硇阅?,并且需要硬件MMU實(shí)現(xiàn)的完整而強(qiáng)大的虛擬內(nèi)存機(jī)制,還基本上會(huì)配有Java支持,有時(shí)還要求一個(gè)安全程序執(zhí)行環(huán)境。典型的產(chǎn)品包括高端手機(jī)和手持儀器,電子錢包以及金融事務(wù)處理機(jī)。

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

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

      處理器命名法

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

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

      MMU,存儲(chǔ)器管理單元,用于實(shí)現(xiàn)虛擬內(nèi)存和內(nèi)存的分區(qū)保護(hù),這是應(yīng)用處理器與嵌入式處理器的分水嶺。電腦和數(shù)碼產(chǎn)品所使用的處理器幾乎清一色地都帶MMU。但是MMU也引入了不確定性,這有時(shí)是嵌入式領(lǐng)域--尤其是實(shí)時(shí)系統(tǒng)不可接受的。然而對(duì)于安全關(guān)鍵(safety‐critical)的嵌入式系統(tǒng),還是不能沒(méi)有內(nèi)存的分區(qū)保護(hù)的。為解決矛盾,于是就有了MPU。可以把MPU認(rèn)為是MMU的功能子集,它只支持分區(qū)保護(hù),不支持具有“定位決定性”的虛擬內(nèi)存機(jī)制。

      到了架構(gòu)7時(shí)代,ARM改革了一度使用的,冗長(zhǎng)的、需要“解碼”的數(shù)字命名法,轉(zhuǎn)到另一種看起來(lái)比較整齊的命名法。比如,ARMv7的三個(gè)款式都以Cortex作為主名。這不僅更加澄清并且“精裝”了所使用的ARM架構(gòu),也避免了新手對(duì)架構(gòu)號(hào)和系列號(hào)的混淆。

      第五篇:arm對(duì)講機(jī)報(bào)告

      《嵌入式實(shí)訓(xùn)課》 課程設(shè)計(jì)報(bào)告

      設(shè)計(jì)題目: 基于ARM的網(wǎng)絡(luò)對(duì)講機(jī)

      專 業(yè) 電子信息科學(xué)與技術(shù) 班 級(jí) 091 學(xué) 號(hào) 200916022118 學(xué)生姓名 大石頭

      2012年 6 月 10 日

      摘要

      語(yǔ)音對(duì)講系統(tǒng)是現(xiàn)代智能化服務(wù)的一個(gè)重要組成部分,它對(duì)于提高社會(huì)高效率和方便還有安全監(jiān)控力度提高,在現(xiàn)代社會(huì)語(yǔ)音對(duì)講機(jī)在小區(qū)等一些工程中高效率的提高的人們方便和減輕了很多事情的工作量。本設(shè)計(jì)首先是用網(wǎng)線使用UDP協(xié)議將兩個(gè)ARM機(jī)連接起來(lái),通過(guò)麥克風(fēng)傳遞給dev/dsp聲卡的數(shù)據(jù)然后通過(guò)網(wǎng)線傳送到另外一臺(tái)ARM機(jī)的接收端通過(guò)dev/dsp聲卡播放來(lái)實(shí)現(xiàn)對(duì)講的功能。由這樣的思路來(lái)實(shí)現(xiàn)對(duì)講機(jī)的功能。

      目錄

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

      二、系統(tǒng)的總體設(shè)計(jì).................................................................................................4(一)功能描述.....................................................................................................4(二)系統(tǒng)基本功能圖..........................................................................................5

      三、相關(guān)技術(shù)綜述.....................................................................................................5(一)Linux操作系統(tǒng)...........................................................................................5 1.Linux的歷史...........................................................................................5 2.Linux具有以下一些特點(diǎn):......................................................................6(二)聲卡驅(qū)動(dòng).....................................................................................................7(三)(四)

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

      五、系統(tǒng)的軟件設(shè)計(jì)...............................................................................................19(一)總體設(shè)計(jì)流程圖........................................................................................19(二)(三)(四)聲卡部分...................................................................................................19 網(wǎng)絡(luò)連接部分............................................................................................22 總體部分...................................................................................................23

      六、系統(tǒng)測(cè)試..........................................................................................................24(一)Linux系統(tǒng)移植安裝..................................................................................24(二)(三)七、八、九、交叉編譯環(huán)境搭建.....................................................................................24 聲卡的初始化參數(shù).....................................................................................24 參考文獻(xiàn)..........................................................................................................24 總結(jié)與心得體會(huì)...............................................................................................25 致謝.................................................................................................................26

      一、前言

      對(duì)講機(jī)對(duì)大家來(lái)說(shuō)一點(diǎn)也不陌生?,F(xiàn)在小區(qū)和寫字樓很多場(chǎng)所的保安人員都佩戴有對(duì)講機(jī)。它給我們的日常生活帶來(lái)了便利。對(duì)講機(jī)的英文名稱是 two way radio,它是一種雙向移動(dòng)通信工具,在不需要任何網(wǎng)絡(luò)支持的情況下,就可以通話,沒(méi)有話費(fèi)產(chǎn)生,適用于相對(duì)固定且頻繁通過(guò)話的場(chǎng)合。對(duì)講機(jī)已經(jīng)有很長(zhǎng)的一段歷史了,大部分的對(duì)講機(jī)是基于模擬電路的集成芯片技術(shù)。功能比較單一,價(jià)格也不菲。今天我們?cè)O(shè)計(jì)的對(duì)講機(jī)是應(yīng)用了現(xiàn)在主流處理器arm的技術(shù)。

      首先,我們?cè)赼rm開發(fā)板燒入了linux系統(tǒng),在開發(fā)的時(shí)候無(wú)論是系統(tǒng)還是代碼,都增加了可移植性。另外便于擴(kuò)展我們目前沒(méi)考慮后期需要的模塊。比如,pc對(duì)各個(gè)對(duì)講機(jī)的數(shù)據(jù)監(jiān)控,lcd顯示等等。Arm的開發(fā)靈活的特點(diǎn)讓這些都變成了可能。另外,從經(jīng)濟(jì)方面來(lái)看,現(xiàn)在arm芯片的價(jià)格相對(duì)來(lái)說(shuō)也不高,在市場(chǎng)方面帶來(lái)價(jià)格上的優(yōu)勢(shì)。

      二、系統(tǒng)的總體設(shè)計(jì)

      (一)功能描述

      在6410開發(fā)板上寫入linux系統(tǒng)后,對(duì)dev/dsp聲卡進(jìn)行編寫程序。程序分為錄音,放音,網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)葞撞糠?。首先,第一塊arm(以后稱為arm1)在按鍵按下的情況下,麥克風(fēng)工作,此時(shí)對(duì)聲卡進(jìn)行讀寫,并將數(shù)據(jù)經(jīng)網(wǎng)路傳給另一塊arm(以后成為arm2,設(shè)計(jì)過(guò)程中用pc代替)。此時(shí)如果arm2的按鍵沒(méi)有按下的情況下將網(wǎng)絡(luò)傳過(guò)來(lái)的數(shù)據(jù)寫入聲卡,此時(shí)喇叭發(fā)出聲音。相對(duì)的過(guò)程同上依次重復(fù)下去

      4(二)系統(tǒng)基本功能圖

      三、相關(guān)技術(shù)綜述

      (一)Linux操作系統(tǒng)

      1.Linux的歷史

      Linux它起源于Unix。是一種可自由發(fā)布的、多用戶、多任務(wù)的優(yōu)秀操作系統(tǒng)。

      UNIX穩(wěn)定性高、可擴(kuò)展性強(qiáng),在金融、電信、能源等一些關(guān)鍵性部門得到廣泛的應(yīng)用。

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

      在芬蘭最大的FTP站點(diǎn)上,Linus建立了一個(gè)名為L(zhǎng)inux的目錄存放他的源文件,意思是“Linus的Minix”,于是,Linux就這樣被命名了。

      許多程序員獲得了Linux的源代碼。隨著他們不斷將原商用UNIX的特性和產(chǎn)品加入到Linux中來(lái),Linux不斷發(fā)展壯大,到現(xiàn)在為止,已成為具有全部UNIX特征的操作系統(tǒng)。

      2.Linux具有以下一些特點(diǎn):

      (1)兼容UNIX:Linux是UNIX的完整的實(shí)現(xiàn),它混合了BSD UNIX和System V這兩個(gè)UNIX版本的最優(yōu)良的特性。UNIX中的絕大多數(shù)命令都可以在Linux中找到、并有所加強(qiáng);其可靠性、穩(wěn)定性、以及強(qiáng)大的網(wǎng)絡(luò)功能也得到體現(xiàn)。

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

      根據(jù)GPL,用戶可以改變?nèi)魏卧创a,甚至可以銷售Linux。但有一個(gè)前提,如果以盈利為目的,則必須提供系統(tǒng)的源代碼,以便其他人也能進(jìn)一步的修改并銷售。

      Linux是由志愿者免費(fèi)開發(fā)和維護(hù)的,甚至Linux下的許多應(yīng)用軟件都是根據(jù)GPL發(fā)布的、免費(fèi)的自由軟件。用戶只需花費(fèi)下載費(fèi)用,完全可以搭建一套全免費(fèi)的、與商用系統(tǒng)性能相當(dāng)?shù)南到y(tǒng)。

      (3)強(qiáng)大的網(wǎng)絡(luò)功能: Linux的開發(fā)是通過(guò)Internet進(jìn)行的,支持網(wǎng)絡(luò)的功能在開發(fā)的早期就已經(jīng)加入了。

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

      Linux對(duì)應(yīng)用程序使用的內(nèi)存進(jìn)行了保護(hù),應(yīng)用程序無(wú)法訪問(wèn)系統(tǒng)分配的區(qū)域以外的其他內(nèi)存,因此,一個(gè)軟件的錯(cuò)誤操作不會(huì)造成整個(gè)系統(tǒng)的癱瘓(在Windows系統(tǒng)中經(jīng)常出現(xiàn)的)。

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

      (5)可移植性好:Linux幾乎可以運(yùn)行在任何的計(jì)算機(jī)系統(tǒng)之上。

      (二)聲卡驅(qū)動(dòng)

      聲卡驅(qū)動(dòng)程序提供的/dev/dsp 是用于數(shù)字采樣(sampling)和數(shù)字錄音(recording)的設(shè)備文件,它對(duì)于Linux下的音頻編程來(lái)講非常重要:向該設(shè)備寫數(shù)據(jù)即意味著激活聲卡上的D/A轉(zhuǎn)換器進(jìn)行放音,而向該設(shè)備讀數(shù)據(jù)則意味 著激活聲卡上的A/D 轉(zhuǎn)換器進(jìn)行錄音。目前許多聲卡都提供有多個(gè)數(shù)字采樣設(shè)備,它們?cè)贚inux下可以通過(guò)/dev/dsp1 等設(shè)備文件進(jìn)行訪問(wèn)。

      DSP是數(shù)字信號(hào)處理器(Digital Signal Processor)的簡(jiǎn)稱,它是用來(lái)進(jìn)行數(shù)字信號(hào)處理的特殊芯片,聲卡使用它來(lái)實(shí)現(xiàn)模擬信號(hào)和數(shù)字信號(hào)的轉(zhuǎn)換。聲卡中的DSP設(shè)備實(shí)際上包含兩個(gè)組成部分:在以只讀方式打開時(shí),能夠使用A/D 轉(zhuǎn)換器進(jìn)行聲音的輸入;而在以只寫方式打開時(shí),則能夠使用D/A轉(zhuǎn)換器進(jìn)行聲音的輸出。嚴(yán)格說(shuō)來(lái),Linux下的應(yīng)用程序要么以只讀方式打開/dev/dsp 輸入聲音,要么以只寫方式打開/dev/dsp 輸出聲音,但事實(shí)上某些聲卡驅(qū)動(dòng)程序仍允許以讀寫的方式打開/dev/dsp,以便同時(shí)進(jìn)行聲音的輸入和輸出,這對(duì)于某些應(yīng)用場(chǎng)合(如IP 電話)來(lái)講是非常關(guān)鍵的。

      在從DSP設(shè)備讀取數(shù)據(jù)時(shí),從聲卡輸入的模擬信號(hào)經(jīng)過(guò)A/D 轉(zhuǎn)換器變成數(shù)字采樣后的樣本(sample),保存在聲卡驅(qū)動(dòng)程序的內(nèi)核緩沖區(qū)中,當(dāng)應(yīng)用程序通過(guò)read 系統(tǒng)調(diào)用從聲卡讀取數(shù)據(jù)時(shí),保存在內(nèi)核緩沖區(qū)中的數(shù)字采樣結(jié)果將 被復(fù)制到應(yīng)用程序所指定的用戶緩沖區(qū)中。需要指出的是,聲卡采樣頻率是由內(nèi)核中的驅(qū)動(dòng)程序所決定的,而不取決于應(yīng)用程序從聲卡讀取數(shù)據(jù)的速度。如果應(yīng)用程序讀取數(shù)據(jù)的速度過(guò)慢,以致低于聲卡的采樣頻率,那么多余的數(shù)據(jù)將會(huì)被丟棄;如果讀取數(shù)據(jù)的速度過(guò)快,以致高于聲卡的采樣頻率,那么聲卡驅(qū)動(dòng)程序?qū)?huì)阻塞那些請(qǐng)求數(shù)據(jù)的應(yīng)用程序,直到新的數(shù)據(jù)到來(lái)為止。

      在向DSP設(shè)備寫入數(shù)據(jù)時(shí),數(shù)字信號(hào)會(huì)經(jīng)過(guò)D/A轉(zhuǎn)換器變成模擬信號(hào),然后產(chǎn)生出聲音。應(yīng)用程序?qū)懭霐?shù)據(jù)的速度

      同樣應(yīng)該與聲卡的采樣頻率相匹配,否則過(guò)慢的話會(huì)產(chǎn)生聲音暫停或者停頓的現(xiàn)象,過(guò)快的話又會(huì)被內(nèi)核中的聲

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

      無(wú)論是從聲卡讀取數(shù)據(jù),或是向聲卡寫入數(shù)據(jù),事實(shí)上都具有特定的格式(format),默認(rèn)為8 位無(wú)符號(hào)數(shù)據(jù)、單聲道、8KHz采樣率,如果默認(rèn)值無(wú)法達(dá)到要求,可以通過(guò)ioctl 系統(tǒng)調(diào)用來(lái)改變它們。通常說(shuō)來(lái),在應(yīng)用程序中打 開設(shè)備文件/dev/dsp 之后,接下去就應(yīng)該為其設(shè)置恰當(dāng)?shù)母袷?,然后才能從聲卡讀取或者寫入數(shù)據(jù)。

      (三)UDP協(xié)議

      UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)報(bào)分組、組裝和不能對(duì)數(shù)據(jù)包的排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。

      UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié) 8 議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。

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

      UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。

      (四)Socket套接字

      套接字(socket)是套接口描述字的簡(jiǎn)稱。和文件句柄相似,SOCKET提供了一種通訊機(jī)制,是linux的一種通訊方式。應(yīng)用程序創(chuàng)建了一個(gè)套接字后,就能夠獲得這種機(jī)制提供的網(wǎng)絡(luò)服務(wù)功能。對(duì)于服務(wù)器來(lái)說(shuō),它提供了監(jiān)聽(tīng)網(wǎng)絡(luò)的連接請(qǐng)求;對(duì)于客戶機(jī)來(lái)說(shuō),它可以連接到一個(gè)給定的主計(jì)算機(jī)和特定的端口上??蛻舳撕头?wù)器端可以通過(guò)套接字對(duì)象來(lái)發(fā)送和接收數(shù)據(jù)。套接字提供了分別基于連接的協(xié)議(TCP)等和無(wú)連接的協(xié)議(UDP)等,以滿足網(wǎng)絡(luò)連接的可靠性、穩(wěn)定性以及高速性的要求。

      四、系統(tǒng)的硬件設(shè)計(jì)

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

      隨著微電子技術(shù)的快速發(fā)展,ARM處理器經(jīng)歷了包括ARM7、ARM9在內(nèi)的多個(gè)發(fā)展歷程,而ARM11的成熟應(yīng)用必將為嵌入式的發(fā)展帶來(lái)新的活力,使更高端的產(chǎn)品應(yīng)用成為可能。

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

      ARM11為便攜式和無(wú)線應(yīng)用,提供了從未有過(guò)的高超性能,并且使我們主要關(guān)心的成本和功耗減到最小。ARM11的微架構(gòu)保證了系統(tǒng)性能可以從基本的350-500MHz范圍擴(kuò)展到最終的1GHz以上。其微架構(gòu)的高效率表現(xiàn),允許開發(fā)者根據(jù)不同的應(yīng)用來(lái)調(diào)節(jié)時(shí)鐘頻率和電源電壓,從而在性能和功耗之間達(dá)到最佳的折衷。例如,一個(gè)基于ARM11的微架構(gòu)的處理器在1.2V工作電壓下,使用0.13um工藝實(shí)現(xiàn),其功率將不會(huì)超過(guò)0.4mW/MHz。

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

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

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

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

      S3C6410 有一個(gè)優(yōu)化的接口連線到外部存儲(chǔ)器。存儲(chǔ)器系統(tǒng)具有雙重外部存儲(chǔ)器端口、DRAM 和 FLASH /ROM/ DRAM 端口。DRAM 的端口可以配置為支持移動(dòng) DDR,DDR,移動(dòng) SDRAM 和 SDRAM。FLASH/ROM/DRAM端口支持 NOR-FLASH,NAND-FLASH,ONENAND,CF,ROM 類型外部存儲(chǔ)器和移動(dòng) DDR,DDR,移動(dòng) SDRAM 和SDRAM。

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

      S3C6410 提供了豐富的內(nèi)部設(shè)備,下面我們從它的整體特性、多媒體加速特性、視頻接口、USB 特征、存儲(chǔ)器設(shè)備、系統(tǒng)外設(shè)以及它的系統(tǒng)管理等方面來(lái)詳細(xì)的介紹 S3C6410 處理器的特性

      (三)系統(tǒng)設(shè)計(jì)器件

      ? Samsung S3C6410處理器

      ? 256M字節(jié)NAND Flash(SLC)

      ? 12MHz、48MHz、27MHz、32.768KHz時(shí)鐘源;

      ? 1個(gè)100M網(wǎng)口,采用DM9000AE,帶連接和傳輸指示燈

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

      3.電源電路

      4.復(fù)位電路

      系統(tǒng)復(fù)位按鍵使用輕觸開關(guān),復(fù)位芯片選擇MAX811t,專業(yè)復(fù)位芯片可保證系統(tǒng)的穩(wěn)定可靠。

      復(fù)位芯片MAX811設(shè)計(jì)原理圖如下:

      (五)系統(tǒng)時(shí)鐘電路 主晶振(12MHZ)原理圖:

      網(wǎng)卡晶振原理圖:

      (六)系統(tǒng)存儲(chǔ)器電路

      使用了256M Bytes NAND FLASH,型號(hào)為K9F2G08U0B(另有MLC結(jié)構(gòu)2G Bytes NAND FLASH的K9GAG08U0D供用戶選擇),片選信號(hào)使用CSn2。NAND FLASH 存儲(chǔ)器主要用于存放內(nèi)核代碼、應(yīng)用程序、文件系統(tǒng)和數(shù)據(jù)資料。

      NAND FLASH設(shè)計(jì)原理圖:

      (七)IIS數(shù)字音頻電路

      音頻功能使用S3C6410處理器的AC97總線。外接WM9714音頻芯片,實(shí)現(xiàn)集成音頻輸出、Line in輸入和Mic輸入功能。音頻輸出和MIC輸入以及LINE IN均采用標(biāo)準(zhǔn)音頻插座。

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

      6.下圖是mic座原理圖:

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

      (八)網(wǎng)卡電路

      我們?cè)谙到y(tǒng)集成一個(gè)100M以太網(wǎng)接口,通過(guò)DM9000AE芯片來(lái)擴(kuò)展。在開發(fā)過(guò)程中,以太網(wǎng)接口可以用來(lái)連接PC機(jī)下載文件;在Linux的系統(tǒng)開發(fā)時(shí),可以用來(lái)掛載NFS網(wǎng)絡(luò)文件系統(tǒng)。使用時(shí),需通過(guò)交叉網(wǎng)線直接連接PC機(jī),也可以使用直連網(wǎng)線連接交換機(jī)或路由器。

      DM9000AE設(shè)計(jì)原理圖如下:

      五、系統(tǒng)的軟件設(shè)計(jì)

      (一)總體設(shè)計(jì)流程圖

      (二)聲卡部分

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

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

      if(fd < 0)

      {

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

      exit(1);

      }

      運(yùn)行在Linux內(nèi)核中的聲卡驅(qū)動(dòng)程序?qū)iT維護(hù)了一個(gè)緩沖區(qū),其大小會(huì)影響到放音和錄音時(shí)的效果,使用ioctl 系統(tǒng)調(diào)用可以對(duì)它的尺寸進(jìn)行恰當(dāng)?shù)脑O(shè)置。調(diào)節(jié)驅(qū)動(dòng)程序中緩沖區(qū)大小的操作不是必須的,如果沒(méi)有特殊的要求,一般采用默認(rèn)的緩沖區(qū)大小也就可以了。但需要注意的是,緩沖區(qū)大小的設(shè)置通常應(yīng)緊跟在設(shè)備文件打開之后,這是因?yàn)閷?duì)聲卡的其它操作有可能會(huì)導(dǎo)致驅(qū)動(dòng)程序無(wú)法再修改其緩沖區(qū)的大小。下面的代碼示范了怎樣設(shè)置聲卡驅(qū)動(dòng)程序中的內(nèi)核緩沖區(qū)的大小:

      #define LENGTH 3 /* 存儲(chǔ)秒數(shù) */ #define RATE 8000 /* 采樣頻率 */ #define SIZE 8 /* 量化位數(shù) */ #define CHANNELS 1 /* 聲道數(shù)目 */ /* 用于保存數(shù)字音頻數(shù)據(jù)的內(nèi)存緩沖區(qū) */ unsigned char msg[LENGTH*RATE*SIZE*CHANNELS/8];

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

      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”);

      采樣格式和采樣頻率是在進(jìn)行音頻編程時(shí)需要考慮的另一個(gè)問(wèn)題,聲卡支持的所有采樣格式可以在頭文件soundcard.h 中找到,而通過(guò)ioctl 系統(tǒng)調(diào)用則可以很方便地更改當(dāng)前所使用的采樣格式。下面的代碼示范了如何設(shè)置聲卡的量化位數(shù):

      /* 設(shè)置采樣時(shí)的量化位數(shù) */ 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”);

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

      /* 設(shè)置采樣時(shí)的采樣頻率 */ arg = RATE;

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

      if(status ==-1)

      perror(“SOUND_PCM_WRITE_WRITE ioctl failed”);

      (三)網(wǎng)絡(luò)連接部分 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);

      (四)總體部分 客戶端:

      從聲卡讀取聲音信號(hào)放到緩存中

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

      if(status!= sizeof(msg))

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

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

      服務(wù)端:

      從客戶端接收數(shù)據(jù):

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

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

      if(status!= sizeof(msg))

      perror(“wrote wrong number of bytes”);

      六、系統(tǒng)測(cè)試

      (一)Linux系統(tǒng)移植安裝

      我們?cè)诔晒υ囼?yàn)時(shí)使用了ubuntu10.4版本。之前曾經(jīng)嘗試過(guò)很多版本的linux,由于無(wú)法安裝dsp驅(qū)動(dòng)不得一次又一次的裝系統(tǒng),在這個(gè)階段花費(fèi)了很長(zhǎng)一段時(shí)間。

      (二)交叉編譯環(huán)境搭建

      由于在開發(fā)主機(jī)上安裝的交叉編譯器與arm里面燒寫的linux版本不對(duì)應(yīng),造成開發(fā)調(diào)試的程序無(wú)法正常運(yùn)行。經(jīng)過(guò)訪問(wèn)論壇找到合適版本的交叉編譯器。問(wèn)題得到了解決。

      (三)聲卡的初始化參數(shù)

      讀寫聲卡,要有特定的格式(format),默認(rèn)為8 位無(wú)符號(hào)數(shù)據(jù)、單聲道、8KHz采樣率。雖然默認(rèn)值可以達(dá)到我們pc機(jī)的要求,但是默認(rèn)值無(wú)法達(dá)到我們開發(fā)板的要求。在開發(fā)過(guò)程中,開發(fā)板部分噪聲特別大。嚴(yán)重影響產(chǎn)品效果。

      我們翻閱了資料,得知可以通過(guò)ioctl 系統(tǒng)調(diào)用來(lái)改變它們。在不斷的調(diào)試中,不斷地得到老師的幫助。我們最終得到了我們的理想音質(zhì)效果。

      七、參考文獻(xiàn)

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

      八、總結(jié)與心得體會(huì)

      這次設(shè)計(jì)有很重要的意義,而且任務(wù)很重,但在這次設(shè)計(jì)中也學(xué)到了很多以前課堂沒(méi)有的知識(shí)。雖然之前有學(xué)過(guò)有關(guān)于ARM方面的知識(shí),不過(guò)到實(shí)際用的時(shí) 25 候發(fā)現(xiàn)了很多問(wèn)題存在,不免有很大的壓力。

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

      在這次工程訓(xùn)練中學(xué)到了很多,更多的了解到了有關(guān)于ARM11方面的知識(shí);學(xué)會(huì)了獨(dú)立思考,獨(dú)立解決問(wèn)題;通過(guò)和同學(xué)交流,共同學(xué)習(xí),共同進(jìn)步;同時(shí)也了解到了怎樣更好的通過(guò)網(wǎng)絡(luò)查找自己需要的資料,在這次設(shè)計(jì)中由于時(shí)間原因,沒(méi)有實(shí)現(xiàn)同步發(fā)送。還有初始化不太準(zhǔn)確造成有噪聲

      九、致謝

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

      下載ARM學(xué)習(xí)方法word格式文檔
      下載ARM學(xué)習(xí)方法.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        ARM學(xué)習(xí)規(guī)劃(經(jīng)典).

        ARM 學(xué)習(xí)規(guī)劃 ARM+LINUX路線,主攻嵌入式 Linux 操作系統(tǒng)及其上應(yīng)用軟件開發(fā)目標(biāo): (1 掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(初步定為 arm9 (2 必須掌握一個(gè)嵌入式操作系統(tǒng) (......

        實(shí)習(xí)總結(jié)-嵌入式ARM

        實(shí)訓(xùn)總結(jié) 班級(jí) 卓越1301姓名*** 通過(guò)這段時(shí)間的學(xué)習(xí)使我學(xué)到了很多知識(shí),并且了解到ARM的應(yīng)用以及對(duì)開發(fā)板的應(yīng)用,為以后的學(xué)習(xí)奠定了一定的基礎(chǔ)。 嵌入式系統(tǒng)一般定義為以應(yīng)用......

        嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告

        南京郵電大學(xué)通信與信息工程學(xué)院 實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:實(shí)驗(yàn)一基于ADS開發(fā)環(huán)境的設(shè)計(jì) 實(shí)驗(yàn)二嵌入式Linux交叉開發(fā)環(huán)境的建立 實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)課程名稱嵌入式......

        ARM學(xué)習(xí)心得體會(huì)(5篇材料)

        ARM四天學(xué)習(xí)心得體會(huì) 1.懂得了如何使用IAR的軟件使用,使用前要先進(jìn)行環(huán)境的設(shè)置,具體見(jiàn)文檔IAR使用說(shuō)明。 2.第一次是學(xué)習(xí)點(diǎn)亮LED燈,在點(diǎn)亮LED燈中學(xué)習(xí)到如果要點(diǎn)亮LED燈必須學(xué)......

        ARM實(shí)習(xí)報(bào)告感想

        通過(guò)這次模具設(shè)計(jì),本人在多方面都有所提高。通過(guò)這次設(shè)計(jì),綜合運(yùn)用本專業(yè)所學(xué)課程的理論和實(shí)際知識(shí)進(jìn)行設(shè)計(jì),提高學(xué)生獨(dú)立工作能力,鞏固與擴(kuò)充了ARM等課程所學(xué)的內(nèi)容,掌握ARM設(shè)......

        ARM 2017年復(fù)習(xí)題總結(jié)

        ARM 2017年復(fù)習(xí)題總結(jié) 簡(jiǎn)答題 什么是嵌入式操作系統(tǒng)? 答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟/硬件可裁減,功能。可靠性,成本,體積,功耗要求嚴(yán)格的專用計(jì)算機(jī)系統(tǒng)。......

        ARM實(shí)訓(xùn)總結(jié)

        《嵌入式系統(tǒng)工程訓(xùn)練》實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康?、鞏固嵌入式系統(tǒng)硬件結(jié)構(gòu)的基本應(yīng)用2、鞏固嵌入式系統(tǒng)程序編制的基本方法3、了解嵌入式系統(tǒng)的工程設(shè)計(jì)要點(diǎn)4、了解嵌入式系統(tǒng)......

        學(xué)習(xí)ARM的心得體會(huì)

        arm四天學(xué)習(xí)心得體會(huì) 1.懂得了如何使用iar的軟件使用,使用前要先進(jìn)行環(huán)境的設(shè)置,具體見(jiàn)文檔iar使用說(shuō)明。 2.第一次是學(xué)習(xí)點(diǎn)亮led燈,在點(diǎn)亮led燈中學(xué)習(xí)到如果要點(diǎn)亮led燈必須......