ARM嵌入式系統(tǒng)基礎與開發(fā)教程

《ARM嵌入式系統(tǒng)基礎與開發(fā)教程》是2010年6月1日北京大學出版社出版的一本圖書,作者是丁文龍,李志軍。

本書全面、系統(tǒng)地介紹ARM7TDMI處理器的體系結構、編程模型、指令系統(tǒng),以及ADS1.2、Real View MDK、PROTEUS三個開發(fā)環(huán)境。同時,還以基于ARM7TDMI的應用處理器LPC2124為核心,詳細介紹了ARM嵌入式系統(tǒng)設計、相關接口技術、嵌入式軟件設計等內容。接口技術的內容涵蓋了GPIO、中斷、定時器、LIART、RTC、A/D、I2C、SPI、PWM,并列舉了大量實例。本書還介紹了μC/OS-Ⅱ軟件體系結構、文件結構及移植規(guī)劃等方面的內容。在第9章提供了一個綜合實例。

ARM嵌入式系統(tǒng)基礎與開發(fā)教程基本信息

書名 ARM嵌入式系統(tǒng)基礎與開發(fā)教程 作者 丁文龍,李志軍
ISBN  9787301173183 類別 計算機/網絡
定價 ¥36.00 出版社 北京大學出版社
出版時間 2010年6月1日 開本 16開

ARM嵌入式系統(tǒng)基礎與開發(fā)教程造價信息

市場價 信息價 詢價
材料名稱 規(guī)格/型號 市場價
(除稅)
工程建議價
(除稅)
行情 品牌 單位 稅率 供應商 報價日期
圖方便負壓污水收集系統(tǒng) 依據(jù)實際項目進行配置(含真空井、真空管道、動力源站) 查看價格 查看價格

圖方便

13% document.write(new Date(+new Date() - 24*60*60*1000).getFullYear()+'-'+(+new Date(+new Date() - 24*60*60*1000).getMonth()+1)+'-'+new Date(+new Date() - 24*60*60*1000).getDate());
裝配一體化污水處理設備 PKY-DIAB-600,Ф8000mm×7000mm,材質碳鋼防腐,處理規(guī)模600m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-1000,Ф10400mm×7000mm,材質碳鋼防腐,處理規(guī)模1000m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-2000,Ф14300mm×7000mm,材質碳鋼防腐,處理規(guī)模2000m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-3000,Ф18000mm×7000mm,材質碳鋼防腐,處理規(guī)模3000m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-10000,Ф32500mm×7000mm,材質碳鋼防腐,處理規(guī)模10000m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-600,Ф8000mm×7000mm,材質304不銹鋼,處理規(guī)模600m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設備 PKY-DIAB-2000,Ф14300mm×7000mm,材質304不銹鋼,處理規(guī)模2000m3/d 查看價格 查看價格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
材料名稱 規(guī)格/型號 除稅
信息價
含稅
信息價
行情 品牌 單位 稅率 地區(qū)/時間
開發(fā)系統(tǒng) MDS-55H 查看價格 查看價格

臺班 韶關市2010年7月信息價
GRG高級裝飾系統(tǒng) 厚15-20(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年3季度信息價
GRG高級裝飾系統(tǒng) 厚10-12(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年2季度信息價
GRG高級裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年2季度信息價
GRG高級裝飾系統(tǒng) 厚10-12(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年1季度信息價
GRG高級裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年1季度信息價
煙感系統(tǒng) 查看價格 查看價格

湛江市2005年2月信息價
GRG高級裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價格 查看價格

m2 湛江市2016年3季度信息價
材料名稱 規(guī)格/需求量 報價數(shù) 最新報價
(元)
供應商 報價地區(qū) 最新報價時間
HIS系統(tǒng)接口開發(fā) HIS系統(tǒng)接口開發(fā)|1套 1 查看價格 北京神州視翰科技股份有限公司南寧辦事處 全國   2022-02-28
嵌入式錄播系統(tǒng) 軟件內嵌于錄播系統(tǒng)主機,運行于嵌入式Linux操作系統(tǒng)環(huán)境,支持B/S管理.支持對課堂或培訓課堂錄制的控制和管理,具有錄制資源模式、錄制電源模式、錄制暫停、選擇錄制格式等功能.支持添加錄制片頭、添加|1套 3 查看價格 廣州市迪士普音響科技有限公司 全國   2019-09-03
空調系統(tǒng)接口開發(fā) 滿足空調系統(tǒng)接口開發(fā)|1套 1 查看價格 上海艾柯瓦貿易有限公司 廣東   2018-04-27
基礎應用支撐平臺 提供統(tǒng)一登錄平臺入口、權限管理系統(tǒng)、日志管理系統(tǒng)、用戶登錄統(tǒng)計等基礎功能.|1套 1 查看價格 廣州賽瑞電子有限公司 全國   2022-08-04
系統(tǒng)定制開發(fā) 開發(fā)工日(人日)|1m2 1 查看價格 廣東中建普聯(lián)科技股份有限公司 全國   2021-07-19
嵌入式硬盤錄像 嵌入式硬盤錄像8路|8247套 1 查看價格 廣州市帝星信息科技有限公司 廣東  廣州市 2015-05-14
嵌入式軟件 軟件運行在ARM芯片上,每15秒讀取一次水位數(shù)據(jù),自動判斷是否出現(xiàn)水淹沒報警;通過硬件中斷接收3路浮球水位報警探頭的開關變化信號,實時觸發(fā)三級水位報警.每15秒服務器通信一次,上報報警信息,每小時拍照一次上報現(xiàn)場照片.|31套 1 查看價格 河南云飛科技發(fā)展有限公司 全國   2022-05-26
嵌入式網關 1)Broadcom Bcm2837 芯片組,運行頻率 1.2 GHz2)64 位四核 ARM Cortex-A533)802.11 b/g/n 無線局域網4)藍牙 4.1(經典和低能耗)5)雙核|18臺 3 查看價格 北京智聯(lián)友道科技有限公司 廣東  深圳市 2018-05-16

ARM嵌入式系統(tǒng)基礎與開發(fā)教程常見問題

  • 怎樣才能學好ARM嵌入式系統(tǒng)啊

    嵌入式入門確實比較難。如果你有一定的基礎(指單片機,C語言還不錯的話),就可以開始學嵌入式了。想要學好嵌入式,C、C++肯定得扎實。如果還想深入驅動開發(fā)的話,那么你要會看匯編吧,當然電路原理圖也得會看...

  • arm嵌入式主板好不好

    您好      很高興回答你   的問題   質量性價比都還不錯   建議去實店購買  &...

  • 嵌入式系統(tǒng)的發(fā)展及應用

    縱觀嵌入式系統(tǒng)的發(fā)展歷程,大致經歷了以下四個階段: 無操作系統(tǒng)階段 嵌入式系統(tǒng)最初的應用是基于單片機的,大多以可編程控制器的形式出現(xiàn),具有監(jiān)測、伺服、設備指示等功能,通常應用于各類工業(yè)控制和飛機、等武...

ARM嵌入式系統(tǒng)基礎與開發(fā)教程文獻

ARM嵌入式系統(tǒng)開發(fā)綜述ARM開發(fā)工程師入門寶典 ARM嵌入式系統(tǒng)開發(fā)綜述ARM開發(fā)工程師入門寶典

格式:pdf

大小:1.2MB

頁數(shù): 28頁

評分: 4.4

獲取更多權威電子書 請登錄 www.eetchina.com ARM 嵌入式系統(tǒng)開發(fā)綜述 ARM 開發(fā)工程師入門寶典 獲取更多權威電子書 請登錄 www.eetchina.com 硬件工程師必讀攻略 ----如何通過仿真有效提高數(shù)?;旌显O計性能 (上 ) 2 / 28 前 言 嵌入式系統(tǒng)通常是以具體應用為中心, 以處理器為核心且面向實際應用的軟 硬件系統(tǒng),其硬件是整個嵌入式系統(tǒng)運行的基礎和平臺, 提供了軟件運行所需的 物理平臺和通信接口; 而嵌入式系統(tǒng)的軟件一般包括操作系統(tǒng)和應用軟件, 它們 是整個系統(tǒng)的控制核心, 提供人機交互的信息等。 所以,嵌入式系統(tǒng)的開發(fā)通常 包括硬件和軟件兩部分的開發(fā),硬件部分主要包括選擇合適的 MCU 或者 SOC 器件、存儲器類型、通訊接口及 I/O、電源及其他的輔助設備等;軟件部分主要 涉及 OS porting 和應用程序的開發(fā)等,與此同時,軟件中斷調試

立即下載
基于ARM嵌入式系統(tǒng)的通用LED圖文顯示系統(tǒng) 基于ARM嵌入式系統(tǒng)的通用LED圖文顯示系統(tǒng)

格式:pdf

大?。?span id="4z5bixj" class="single-tag-height">1.2MB

頁數(shù): 3頁

評分: 4.4

本文所設計的LED圖文顯示系統(tǒng)采用AM1808-456高速ARM內核芯片,引入了標準網絡接口,設置了大容量的FLASH存儲器,并采用了智能化的顯示區(qū)域控制算法,上位機采用VC++6.0進行設計,調用各種函數(shù)和第三方插件,實現(xiàn)文本,圖片、動畫,視頻等多種格式的信息顯示,使得LED顯示系統(tǒng)在通信、布線、群控、遠程控制、卡卡通用等特性得到很好的結合,實用性強。

立即下載

ARM9? 處理器系列為微控制器、DSP 和 Java 應用提供單 解決方案,從而減小芯片面積、降低復雜性和功耗,并加快產品上市速度 。下面以ARM926EJ-S系列為例,詳細說明。

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

對于學硬件的人而言,必須先對硬件的基本使用方法有感性的認識,更必須深刻認識該硬件的控制方式,如果一開始就學linux系統(tǒng)、學移植那么只會馬上就陷入一個很深的漩渦。我在剛剛開始學ARM的時候是選擇ARM7(主要是當時ARM9還很貴),學ARM7的時候還是保持著學51單片機的思維,使用ADS 去編程,第一個實驗就是控制 led。學過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復雜的系統(tǒng)最終都會落實到這些最底層的硬件控制,因此對這些硬件的控制有了感性的認識就好很多了 學習單片機的編程的同時要好好理解這個硬件的構架、控制原理,這些我稱他為理解硬件。所謂的理解硬件就是說,理解這個硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進行控制的。比如說,s3c2410中有AD轉換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設備的運轉?還有,norflash內部的每一個單元在這個芯片的內存中都有一個相應的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關系?他們是一樣的嗎?而與 norflash相對應的nandflash內部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內存空間上進行使用?或者簡單地說應該怎么用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里面的代碼是什么意思?不要這個可以嗎?諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學習將有很大的幫助,如果跳過這一步,我相信越往后學越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。

第二,使用linux系統(tǒng)進行一些基本的實驗。

在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有意義的,也是為進一步的學習積累感性認識,你能想象一個從沒有使用過linux系統(tǒng)的人能學好linux的編程嗎?好好按照手冊上的例程做一做里面的實驗,雖然有點娃娃學走路,有點弱智,但是我想很多高手都會經歷這個過程。 在這方面我們深藍科技沒有計劃提供相應的例程,主要是開發(fā)板的提供商會提供很豐富的例程,我們不做重復工作,只提供他們沒有的、最有價值的東西給大家。

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

所謂完整的linux系統(tǒng)包括哪些部分呢? 三部分:bootloader、linux kernel(linux內核)、rootfile(根文件系統(tǒng))。 那么這3部分是怎么相互協(xié)作來構成這個系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞清楚這個問題你對整個系統(tǒng)的運行就很清楚了,對于下一步制作這個linux系統(tǒng)就打下了另一個重要的根基。介紹這方面的資料網上可以挖掘到幾噸,自己好好研究吧。

第四,開始做系統(tǒng)移植。

上面說到完整的linux有3部分,而且你也知道了他們之間的關系和作用,那么現(xiàn)在你要做的便是自己動手學會制作這些東西。 當然我不可能叫你編寫這些代碼,這不實現(xiàn)。事實上這個3者都能在網下載到相應的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統(tǒng)上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進行移植的過程中你要學的東西很多,要懂的相關知識也很多,等你完成了這個過程你會發(fā)現(xiàn)你已經算是一個初出茅廬的高手了。 在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內核的分析與編程》,這是一本針對linux-2.6.11內核的書,說得很深,建議先提高自己的C語言編程水平再去看。 至于每個部分的移植網上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經驗的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會告訴你怎么解決,這時就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過我相信能給你一點建議,也許有助你解決問題。 這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標準的源代碼包,然后進行修改,最終運行在板子上。 盜用阿基米德的一句話:“給我一根網線,我能將linux搞定”。

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

移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產品,做項目,這些都要進行驅動程序的開發(fā)。Linux的驅動程序可以說是五花八門,linux2.4和 linux2.6的編寫有相當大的區(qū)別,就是同為linux2.6但是不同版本間的驅動程序也有區(qū)別,因此編寫linux的驅動程序變都不是那么容易的事情,對于最新版本的驅動程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個不算很新的版本內核,這樣到時學驅動的編程就有足夠的資料了。 這部分的推薦書籍可以參考另一篇文章《推薦幾本學習嵌入式linux的書籍》。 第六,研究應用程序的編寫。 做作品做項目除了編寫驅動程序,最后還要編寫應用程序。現(xiàn)在的趨勢是圖形應用程序的開發(fā),而圖形應用程序中用得最多的還是qt/e函數(shù)庫。我一直就使用這個函數(shù)庫來開發(fā)自己的應用程序,不過我希望你能使用國產的MiniGUI函數(shù)庫。盜用周杰倫的廣告詞就是“支持國產,支持MiniGUI”。 MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應該說是相當不錯的,我曾使用過來開發(fā)ARM7的程序。記住,問題是學習的最好機會

---

有同學反映,我們視頻一上來就講干貨,希望適當普及一下相關概念,這篇就是。

ARM處理器解析

ARM9、ARM11是哈佛5級流水線結構,所以性能要高一點。ARM9和ARM11大多帶內存管理器,跑操作系統(tǒng)好一點,ARM7適合裸奔。我們慣稱的 ARM9系列中又存在ARM9與ARM9E兩個系列,其中ARM9 屬于ARM v4T架構,典型處理器如ARM9TDMI和ARM922T;

而ARM9E屬于ARM v5TE架構,典型處理器如ARM926EJ和ARM946E。因為后者的芯片數(shù)量和應用更為廣泛,所以我們提到ARM9的時候更多地是特指ARM9E系列處理器(主要就是ARM926EJ和ARM946E這兩款處理器)。

下面關于ARM9的介紹也是更多地集中于ARM9E。

2

ARM7處理器和ARM9E處理器的流水線差別

對嵌入式系統(tǒng)設計者來說,硬件通常是第一考慮的因素。針對處理器來說,流水線則是硬件差別的最明顯標志,不同的流水線設計會產生一系列硬件差異。

讓我們來比較一下ARM7和ARM9E的流水線,ARM9E從ARM7的3級流水線增加到了5級,ARM9E的流水線中容納了更多的邏輯操作,但是每一級的邏輯操作卻變得更為簡單。

比如原來 ARM7的第三級流水,需要先內部讀取寄存器、然后進行相關的邏輯和算術運算,接著處理結果回寫,完成的動作非常復雜;

而在ARM9E的5級流水中,寄存器讀取、邏輯運算、結果回寫分散在不同的流水當中,使得每一級流水處理的動作非常簡潔。這就使得處理器的主頻可以大幅度地提高。因為每一級流水都對應 CPU的一個時鐘周期,如果一級流水中的邏輯過于復雜,使得執(zhí)行時間居高不下,必然導致所需的時鐘周期變長,造成CPU的主頻不能提升。所以流水線的拉長,有利于CPU主頻的提高。

在常用的芯片生產工藝下,ARM7一般運行在100MHz左右,而ARM9E則至少在200MHz以上。

3

ARM9E處理器的存儲器子系統(tǒng)

像ARM926EJ 和ARM946E這兩個最常見的ARM9E處理器中,都帶有一套存儲器子系統(tǒng),以提高系統(tǒng)性能和支持大型操作系統(tǒng)。如圖2所示,一個存儲器子系統(tǒng)包含一個 MMU(存儲器管理單元)或MPU(存儲器保護單元)、高速緩存(Cache)和寫緩沖(Write Buffer);CPU通過該子系統(tǒng)與系統(tǒng)存儲器系統(tǒng)相連。

高速緩存和寫緩存的引入是基于如下事實,即處理器速度遠遠高于存儲器訪問速度;如果存儲器訪問成為系統(tǒng)性能的瓶頸,則處理器再快也是浪費,因為處理器需要耗費大量的時間在等待存儲器上面。

高速緩存正是用來解決這個問題,它可以存儲最近常用的代碼和數(shù)據(jù),以最快的速度提供給CPU處理(CPU訪問Cache不需要等待)。

4

復雜處理器內部的存儲器子系統(tǒng)

MMU則是用來支持存儲器管理的硬件單元,滿足現(xiàn)代平臺操作系統(tǒng)內存管理的需要;它主要包括兩個功能:一是支持虛擬/物理地址映射,二是提供不同存儲器地址空間的保護機制。

一個簡單的例子可以幫助我們理解MMU的功能,在一個操作系統(tǒng)下,程序開發(fā)人員都是在操作系統(tǒng)給定的API和編程模型下開發(fā)程序;操作系統(tǒng)通常只開放一個確定的存儲器地址空間給用戶。這樣就帶來 一個直接的問題,所有的應用程序都使用了相同的存儲器地址空間,如果這些程序同時啟動的話(在現(xiàn)在的多任務系統(tǒng)中這是非常常見的),就會產生存儲器訪問沖 突。那操作系統(tǒng)是如何來避免這個問題的呢?

操作系統(tǒng)會利用MMU硬件單元完成存儲器訪問虛擬地址到物理地址的轉換。所謂虛擬地址就是程序員在程序中使用的邏輯地址,而物理地址則是真實存儲器單元的空間地址。MMU通過一定的規(guī)則, 可以把相同的虛擬地址映射到不同的物理地址上去。這樣,即使有多個使用相同虛擬地址的程序進程啟動,也可以通過MMU調度把它們映射到不同的物理地址上 去,不會造成系統(tǒng)錯誤。

5

MMU的功能和作用

MMU 處理地址映射功能之外,還能給不同的地址空間設置不同的訪問屬性。比如操作系統(tǒng)把自己的內核程序地址空間設置為用戶模式下不可訪問,這樣的話用戶應用程序就無法訪問到該空間,從而保證操作系統(tǒng)內核的安全性。

MPU與MMU的區(qū)別在于它只有給地址空間設置訪問屬性的功能而沒有地址映射功能。Cache以及MMU等硬件單元的引入,給系統(tǒng)程序員的編程模型帶來了許多全新的變化。

除了需要掌握基本的概念和使用方法之外,下面幾個針對系統(tǒng)優(yōu)化的點既有趣又重要:

1.系統(tǒng)實時性考慮因素

為保存地址映射規(guī)則的頁表(Page Table)非常龐大,通常MMU中只是存儲器了常用的一小段頁表內容,大部分頁表內容都存儲于主存儲器里面;當調用新的地址映射規(guī)則時,MMU可能需要讀取主存儲器來更新頁表。

這在某些情況下會造成系統(tǒng)實時性的丟失。比如當需要執(zhí)行一段關鍵的程序代碼時,如果不巧這段代碼使用的地址空間不在當前MMU的頁表處理范圍里面,則MMU首先需要更新頁表,然后完成地址映射,接著才能相應存儲器訪問;

整個地址譯碼過程非常長,給實時性帶來非常大的不利影響。所以一般來說帶MMU和Cache的系統(tǒng)在實時性上不如一些簡單的處理器;不過也有一些辦法能夠幫助提高這些系統(tǒng)的實時效率。

一個簡單的辦法是在需要的時候關閉MMU和Cache,這樣就變成一個簡單處理器了,可以馬上提高系統(tǒng)實時性。當然很多情況下這不可行;

在ARM的MMU和 Cache設計中,有一個鎖定的功能,就是說你可以指定某一塊頁表在MMU中不會被更新掉,某一段代碼或數(shù)據(jù)可以在Cache中鎖定而不會被刷新掉;程序員可以利用這個功能來支持那些實時性要求最高的代碼,保證這些代碼始終能夠得到最快的響應和支持。

2.系統(tǒng)軟件優(yōu)化

在嵌入式系統(tǒng)開發(fā)中,很多系統(tǒng)軟件優(yōu)化的方法都是相同和通用的,多數(shù)情況下這種規(guī)則也適用于ARM9E架構上。如果你已經是一個ARM7的編程高手,那么恭喜你,以前你掌握的優(yōu)化方法完全可以用在新的ARM9E平臺上,但是會有一些新的特性需要你加倍注意。最重要的便是Cache的作用,Cache本身并不 帶來編程模型和接口的變化,但是如果我們考察Cache的行為,就能夠發(fā)現(xiàn)對于軟件優(yōu)化,Cache是有比較大的影響的。

Cache在物理上就是一塊高速SRAM,ARM9E的Cache組織寬度(cache line)都是4個word(也就是32個字節(jié));Cache的行為受系統(tǒng)控制器控制而不是程序員,系統(tǒng)控制器會把最近訪問存儲器地址附近的內容復制到Cache中去,這樣,當CPU訪問下一個存儲器單元的時候(這個訪問既可能是取指,也可能是數(shù)據(jù)),可能這個存儲器單元的內容已經在Cache里了,所以CPU不需要真的到主存儲器上去讀取內容,而直接讀取Cache高速緩存上面的內容就可以了,從而加快了訪問的速度。

從Cache的工作原理我們可以看 到,其實Cache的調度是基于概率的,CPU要訪問的數(shù)據(jù)既可能在Cache中已經存在(Cache hit),也可能沒有存在(Cache miss)。在Cache miss的情況下,CPU訪問存儲器的速度會比沒有Cache的情況更壞,因為CPU除了要從存儲器訪問數(shù)據(jù)以外,還需要處理Cache hit或miss的判斷,以及Cache內容的刷新等動作。

只有當Cache hit帶來的好處超過Cache miss帶來的犧牲的時候,系統(tǒng)的整體性能才能得到提高,所以Cache的命中率成為一個非常重要的優(yōu)化指標。

根據(jù)Cache行為的特點,我們可以直觀地得到提高Cache命中率的一些方法,如盡可能把功能相關的代碼和數(shù)據(jù)放置在一起,減少跳轉次數(shù);跳轉經常會引起 Cache miss。保持合適的函數(shù)大小,不要書寫太多過小的函數(shù)體,因為線性的程序執(zhí)行流程是最為Cache友好的。

循環(huán)體最好放置在4個word對齊的地址,這 樣就能保證循環(huán)體在Cache中是行對齊的,并且占用最少的Cache行數(shù),使得被多次調用的循環(huán)體得到更好的執(zhí)行效率。

6

性能和效率的提升

前面介紹了ARM9E相比于ARM7性能上的提高,這不僅表現(xiàn)在ARM9E有更快的主頻、更多的硬件特性上面,還體現(xiàn)在某些指令的執(zhí)行效率上面。執(zhí)行效率我 們可以用CPU的時鐘周期數(shù)(Cycle)來衡量;

運行同一段程序,ARM9E的處理器可以比ARM7節(jié)省大約30%左右的時鐘周期。

效率的提高主要來自于ARM9E對于Load-Store指令執(zhí)行效率的增強。我們知道在RISC架構的處理器中,程序中大約有30%的指令是Load- Store指令,這些指令的效率對系統(tǒng)效率的貢獻是最明顯的。

ARM9E中有兩個因素幫助提高Load-Store指令的效率:

1)ARM9內核是哈佛架構,擁有獨立的指令和數(shù)據(jù)總線;相對應,ARM7內核的指令和數(shù)據(jù)總線復用的馮諾依曼架構。

2)ARM9的5級流水線設計把存儲器訪問和寄存器寫回放在不同的流水上面。

兩者結合,使得在指令流的執(zhí)行過程中每個CPU時鐘周期都可以完成一個Load或Store指令。

下面的表格比較了ARM7和ARM9處理器之間的Load -Store指令。

從中可以看出所有的Store指令ARM9比ARM7省1個周期,Load指令可以省2個周期(在沒有互鎖的情況下,編譯工具能夠通過 編譯優(yōu)化消除大多數(shù)的互鎖可能)。

綜合各種因素,ARM9E處理器擁有非常強大的性能。但是在實際的系統(tǒng)設計中,設計人員并不總是把處理器性能開到最大,理想情況是把處理器和系統(tǒng)運行頻率降低,使得性能剛好能滿足應用需求; 達到節(jié)省功耗和成本的目的。

在評估系統(tǒng)能夠提供的處理器能力過程中,DMIPS指標被很多人采用; 同時它也被廣泛應用于不同處理器間的性能比較。

但是用DMIPS來衡量處理器性能存在很大的缺陷。 DMIPS并非字面上每秒百萬條指令的意思,它是一個測量CPU運行一個叫Dhrystone的測試程序時表現(xiàn)出來的相對性能高低的一個單位(很多場合人們也習慣用MIPS作為這個性能指標的單位)。因為基于程序的測試容易受到惡意優(yōu)化的干擾,并且DMIPS指標值的發(fā)布不受任何機構的監(jiān)督,所以使用DMIPS進行評估時要慎重。

例如對Dhrystone測試程序進行不同的編譯處理,在同一個處理器上運行也可以得出差別很大的結果。

DMIPS另外一個缺點是不能測量處理器的數(shù)字信號處理能力和Cache/MMU子系統(tǒng)的性能。因為Dhrystone測試程序不包含DSP表達式,只包含一些整型運算和字符串處理,并且測試程序偏小,幾乎可以完整地放在Cache里面運行而無需與外部存儲器進行交互。這樣就難以反映處理器在一個真實系統(tǒng)中的真正性 能。

一種值得鼓勵的評估方法是站在系統(tǒng)的角度看問題,而不僅僅拘泥于CPU本身;而系統(tǒng)性能評估最好的測試向量就是用戶應用程序或相近的測試程序,這是用戶所需的最真實的結果。

7

ARM9E處理器的DSP運算能力

伴隨應用程序的多樣化和復雜化,諸如多媒體、音視頻功能在嵌入式系統(tǒng)里面也是全面開花。這些應用需要相當?shù)腄SP處理能力;如果是在傳統(tǒng)的RISC架構上實 現(xiàn)這些算法,所需的資源(頻率和存儲器等)會非常不經濟。

ARM9E處理器一個非常重要的優(yōu)勢就是擁有輕量級的DSP處理能力,以非常小的成本(CPU增 加功能需要增加硬件)換來了非常實用的DSP性能。

因為CPU的DSP能力并不直接反映在像DMIPS這樣的評測指標中,同時像以前的ARM7處理器中也沒有類似的概念;所以這一點對所有使用ARM9E處理器進行開發(fā)的人來說,都是需要注意的一個要點。

ARM9E的DSP擴展指令,主要包括三個類型:

1)單周期的16x16和32x16 MAC操作,因為數(shù)字信號處理中甚少32位寬的操作數(shù),在32位寄存器中可以對操作數(shù)分段運算顯得非常有用。

2)對原有的算術運算指令增加了飽和處理擴展,所謂飽和運算,就是當運算結果大于一個上限或小于一個下限時,結果就等于上限或是下限;

飽和處理在音頻數(shù)據(jù)和視頻像素處理中普遍使用,現(xiàn)在一條單周期飽和運算指令就能夠完成普通RISC指令“運算-判斷-取值”這一系列操作。

3)前導零(CLZ)運算指令,提高了歸一化和浮點運算以及除法操作的性能。

以流行的MP3解碼程序為例。整個解碼過程中前端的三個步驟是運算量最大的,包括比特流的讀入(解包)、霍夫曼譯碼還有反量化采樣(逆變換)。

ARM9E的 DSP指令正好可以高效地完成這些運算。以44.1 KHz@128 kbps碼率的MP3音樂文件為例,ARM7TDMI需要占用20MHz以上的資源,

而ARM926EJ則只要小于10MHz的資源在從ARM7到ARM9的平臺轉變過程中,有一件事情是非常值得慶幸的,即ARM9E能夠完全地向后兼容ARM7上的軟件;并且開發(fā)人員面對的編程模型和架構基礎也保持一致。

但是畢竟ARM9E中增加了很多新的特性,為了充分利用這些新的資源,把系統(tǒng)性能優(yōu)化好,需要我們對ARM9E做更多深入地了解。

---end--

6月中旬來了,有同學詢問我們的淘寶店鋪是否搞降價活動,這里統(tǒng)一回復:產品定價已經很親民,我們不打價格戰(zhàn),和往年一樣,不參加618大促,目前只有現(xiàn)金獎勵活動(點擊下面標題了解詳情):

【有獎活動】完成課后作業(yè):裸機測試界面, 贏取獎金2000元人民幣,

按要求完成最高可獲得2000元現(xiàn)金獎勵~,適合時間充裕還可以賺外快補貼生活費的在校生,何樂而不為?

41人加群,據(jù)小編了解目前已有好幾個人正在寫代碼...你還在等什么?

免責聲明:本文系網絡轉載,有改動,版權歸原作者所有。如涉及作品版權問題,請與我們聯(lián)系,我們將根據(jù)您提供的版權證明材料確認版權并支付稿酬或者刪除內容。

ARM嵌入式系統(tǒng)基礎與開發(fā)教程相關推薦
  • 相關百科
  • 相關知識
  • 相關專欄