先說一下我學習arm的目的。目前為止,我的工作不涉及到寫arm底層指令,學習arm的原因主要還是想藉著它複習一下微機原理。並且,從它火熱程度來看,在漫長的職業生涯中,我想總會遇到它的。
這裡以arm7tdmi(-s)這款低端核為學習目標,如果後面有需求或者有興趣 ,再深入學習其它核。
今天先對arm有些了解。
arm是advanced risc machines的縮寫,是微處理器的一家知名企業。他的業務及其適用的領域什麼的就不多說。
arm核並不是晶元,它與其它部件入ram、rom片內外設組合在一起才構成現實的的晶元。arm處理器的結構簡單,這使得它的核心很小,成本低,功耗低,但是效能高。
它整合了非常典型的risc結構特性:
(1)乙個大的、統一的暫存器堆。
(2)資料處理的操作只針對暫存器的內容,而不直接對儲存器進行操作。
(3)簡單的定址模式,所有載入/儲存的位址都只由暫存器的內容和指令域決定。
(4)統一和固定長度的指令域,簡化了指令的解碼。
此外,arm體系結構還提供:
(1)每條資料處理指令都對alu和移位暫存器進行控制,以實現對alu和移位暫存器的最大限度的利用。
(2)位址自動增加和自動減少的定址模式實現了程式迴圈的優化。
(3)多暫存器載入和儲存指令實現了很大的資料吞吐量。
(4)所有指令的條件執行實現了最快速的**執行。
arm6是arm體系結構中最早使用32位位址空間程式設計模式的,但是它使用的電路技術使它很難在低於5v的電壓下穩定工作(為什麼咱就不知道了),arm7彌補了這一不足,並在很短你的時間內增加了64位乘法指令(multiplier),支援片上除錯(debug),高密度16位的thumb指令和嵌入式ice觀察點,所以稱為arm7tdmi。
至於arm7tdmi(-s)和arm7tdmi有什麼區別呢?咱也不懂,大部分都說:arm7tdmi-s 是 arm7tdmi 的可綜合(synthesizable)版本(軟核),對應用工程師來說,除非晶元生產廠商對 arm7tdmi-s 進行了裁減,否則 arm7tdmi-s 與 arm7tdmi 沒有太大的區,其程式設計模型與 arm7tdmi 一致。
arm7tdmi(-s)處理器使用了馮·諾伊曼結構。只有載入、儲存和交換指令可以對儲存器中的資料進行訪問。資料可以是8位位元組、16位半字或者32位字。字必須分配占有4位元組,而半字必須 分配占用2位元組。
今天對arm7tdmi(-s)的介紹就先到這裡,下面是對一些生疏項的解釋。
alu:算術邏輯單元(arithmetic and logic unit) 是能實現多組算術運算和邏輯運算的組合邏輯電路。
ice:嵌入式ice(in circuit emulator),支援片上斷點和調試點。arm7tdmi核心包含乙個稱為嵌入式ice-rt的邏輯單元,用於提供片內除錯支援,它包含乙個除錯通訊通道(debug communication channel,dcc),在主機偵錯程式和目標之間傳送資訊,嵌入式ice-rt通過jtag測試訪問介面進行控制。至於i和d的區別,還沒弄明白。
thumb指令:後續會講。
馮·諾伊曼結構:美籍匈牙利數學家馮·諾伊曼於2023年提出儲存程式原理,把程式本身當作資料來對待,程式和該程式處理的資料用同樣的方式儲存。 馮·諾依曼體系結構馮·諾伊曼理論的要點是:計算機的數制採用二進位制;計算機應該按照程式順序執行。人們把馮·諾伊曼的這個理論稱為馮·諾伊曼體系結構。
從skyeye學習arm( 工具篇)
在前面的一篇文章中,我們介紹了如何利用skyeye啟動最簡單的arm程式 今天,我們可以從頭開始介紹如何搭建相關的環境。因為是skyeye的 所以主要的工具其實不多,主要就是skyeye的編譯,arm交叉編譯工具的獲取,gdb工具的編譯。1 skyeye工具的編譯 skyeye其實就是我們 的環境,...
ARM彙編 從內嵌彙編開始
對於基於arm的risc處理器,gnu c編譯器提供了在c 中內嵌彙編的功能。這種特性提供了c 沒有的功能,比如手動優化軟體關鍵部分的 使用相關的處理器指令。asm volatile hlt asm 表示後面的 為內嵌彙編,asm 是 asm 的別名。volatile 表示編譯器不要優化 後面的指令...
選擇ARM處理器,ARM7還是Cortex M3
選擇arm處理器,arm7還是cortex m3 2009 02 13 19 02 要使用低成本的32位處理器,開發人員面臨兩種選擇,基於cortex m3核心或者arm7tdmi核心的處理器。如何做出選擇?選擇標準又是什麼?本文主要介紹了arm cortex m3核心微控制器區別於arm7的一些特...