ARM複習要點

2022-12-27 19:54:03 字數 3190 閱讀 2659

1.嵌入式系統定義及特點,舉例

2.嵌入式處理器分類

三種作業系統:

b.嵌入式作業系統基本概念:

c.使用實時作業系統主要有以下幾個因素:

d.常見的嵌入式作業系統:

b.複雜指令集計算機(cisc)結構特性:{}

體系結構的特點:

系列廣泛應用於多**和嵌入式裝置,包括internet裝置、網路和數據機裝置,以及移動**、pda等無線裝置;arm9系列主要應用於引擎管理、儀器儀表、安全系統和機頂盒等領域;arm10系列可以用於**遊戲機和高效能印表機等場合

支援高密度16位的thumb指令集 d:支援片上除錯 m:支援64位乘法 i:

支援embededice觀察硬體 s:arm7tdmi的可綜合(synthesizable)版本(軟核),對應用工程師來說其程式設計模型與arm7tdmi一致}

5.儲存器的字與半字

6.流水線

處理器功能模組組成

處理器狀態

arm 處理器模式

[計算機結構說明:「馮·諾依曼」 結構:把**作為一種特殊的資料來操作,指令匯流排和資料匯流排及其儲存區域是統一的;

「哈佛」結構:指令匯流排和資料匯流排及其儲存區是分開、獨立的]

9.了解r0-r7(低暫存器)的作用:

暫存器cpsr為程式狀態暫存器,在異常模式中,另外乙個暫存器「備份程式狀態暫存器/程式狀態儲存暫存器(spsr)」可以被訪問。每種異常都有自己的spsr,在因為異常事件而進入異常時它儲存cpsr的當前值,異常退出時可通過它恢復cpsr

體系的儲存結構,51微控制器的儲存結構

11.大端模式與小端模式(big-endian和little-endian)

一、大端和小端的問題:對於整型、長整型等資料型別,big endian 認為第乙個位元組是最高位位元組(按照從低位址到高位址的順序存放資料的高位位元組到低位位元組);而 little endian 則相反,它認為第乙個位元組是最低位位元組(按照從低位址到高位址的順序存放資料的低位位元組到高位位元組)。

例如,假設從記憶體位址 0x0000 開始有以下資料:

0x00000x0001 0x0002 0x0003

0x120x340xab0xcd

如果我們去讀取乙個位址為 0x0000 的四個位元組變數,若位元組序為big-endian,則讀出結果為0x1234abcd;

若位元組序位little-endian,則讀出結果為0xcdab3412。

如果我們將0x1234abcd 寫入到以 0x0000 開始的記憶體中,則little endian 和 big endian 模式的存放結果如下:

位址 0x0000 0x0001 0x0002 0x0003

big-endian 0x120x340xab0xcd

little-endian 0xcd0xab0x340x12

一般來說,x86 系列 cpu 都是 little-endian 的位元組序,powerpc 通常是 big endian,還有的cpu

能通過跳線來設定 cpu 工作於 little endian 還是 big endian 模式。

對於0x12345678的儲存:

小端模式:(從低位元組到高位元組)

地位位址 0x78 0x56 0x34 0x12 高位位址

大端模式:(從高位元組到低位元組)

地位位址 0x12 0x34 0x56 0x78 高位位址

main()

字元'0'對應的十六進製制是0x30,請問程式輸出是多少?

主要考察的目的是大端和小端的問題。

對於intel架構的cpu,是小端模式,如果出現跨多個自己的資料型別,如int,long等,低位址儲存資料的低位,高位址儲存資料的高位。

位址從@0開始,那麼sz在記憶體的儲存為

@0 @1 @2 @3 @4 @5 @6 @7 @8 @9

0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39

當你把char*強制型別轉化成int*後,因為int佔四個位元組,那麼p指向@0,並且*p占有的位址是@0@1@2@3,列印的時候先進行++p操作,那麼p指向@4,此時*p占有的位址是@4@5@6@7,根據上面地位址存地位,高位址存高位的解釋,那麼

*p應該等於0x37363534

int a=0x12345678;

char *p=(char*)(&a);

printf("%x\n",*(p+1));

例如對於0x12345678,大部分unix機器和網路是這樣0x12,0x34,0x56,0x78儲存的,這種方式成為big-endian

intel處理器列如0x78 0x56 0x34 0x12這樣來儲存的,成為小尾little-endian

題目中的p指向0x78,加1後指向0x56

二、大端小端轉換方法:

big-endian轉換成little-endian如下:

#define bigtolittle16(auint16)(a) & 0xff00) >> 8) |

\ (((uint16)(a) & 0x00ff) << 8))

#define bigtolittle32(auint32)(a) & 0xff000000) >>

24) | \

(((uint32)(a) & 0x00ff0000) >> 8) | \

(((uint32)(a) & 0x0000ff00) << 8) | \

(((uint32)(a) & 0x000000ff) << 24))

三、大端小端檢測方法:

如何檢查處理器是big-endian還是little-endian?

c程式:

int i=1;

char *p=(char *)&i;

if(*p==1)

printf("little endian");

else

printf("big endian")

大小端儲存問題,如果小端方式中(i佔至少兩個位元組的長度)則i所分配的記憶體最小位址那個位元組中就存著1,其他位元組是0.大端的話則1在i的最高位址位元組處存放,char是乙個位元組,所以強制將char型量p指向i則p指向的一定是i的最低位址,那麼就可以判斷p中的值是不是1來確定是不是小端。

聯合體union的存放順序是所有成員都從低位址開始存放,利用該特性就可以輕鬆地獲得了cpu對記憶體採用little-endian還是big-endian模式讀寫。

ARM複習總結

arm複習重點概括 對嵌入式系統的定義多種多樣,但沒有一種定義是全面的。下面給出兩種比較合理定義 1 從技術的角度定義 以應用為中心 以計算機技術為基礎 軟體硬體可裁剪 適應應用系統對功能 可靠性 成本 體積 功耗嚴格要求的專用計算機系統。2 從系統的角度定義 嵌入式系統是設計完成複雜功能的硬體和軟...

基於ARM的嵌入式系統程式開發要點

異常處理機制的設計 異常或中斷是使用者程式中最基本的一種執行流程或形態,這部分對arm架構下異常處理程式的編寫作乙個全面的介紹。arm一共有7種型別的異常,按優先從高到低排列如下 reset data abort fiqirqprefetch abort swiundefined instructi...

什麼叫arm架構?ARM的技術實現

什麼叫arm架構 arm架構過去稱作高階精簡指令集機器 advancedriscmachine,更早稱作 acornriscmachine 是乙個32位精簡指令集 risc 處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,arm處理器非常適用於移動通訊領域,符合其主要設計目標為低耗電的...