決定開始學(xué)習(xí)嵌入式后,最先做的事情就是要熟悉ARM指令及其偽指令偽操作。ARM指令的助記符其實(shí)都是其具體功能的單次縮寫,所以學(xué)習(xí)的過程中最好利用網(wǎng)絡(luò),從一些文獻(xiàn)或書籍中找到ARM指令助記符的全稱,這樣方便記憶。學(xué)完之后,我做了整理了一個(gè)有關(guān)這方面的筆記,有需要的朋友請(qǐng)郵件聯(lián)系:
[email protected]接下來的學(xué)習(xí)過程中,比較難以理解的是ARM的中斷過程和存儲(chǔ)系統(tǒng)。ARM中斷的實(shí)現(xiàn)有些書上看一兩遍也不見得能夠完全理解,當(dāng)然可能只對(duì)于
&nb
sp; 決定開始學(xué)習(xí)嵌入式后,最先做的事情就是要熟悉ARM指令及其偽指令偽操作。ARM指令的助記符其實(shí)都是其具體功能的單次縮寫,所以學(xué)習(xí)的過程中最好利用網(wǎng)絡(luò),從一些文獻(xiàn)或書籍中找到ARM指令助記符的全稱,這樣方便記憶。學(xué)完之后,我做了整理了一個(gè)有關(guān)這方面的筆記,有需要的朋友請(qǐng)郵件聯(lián)系:
[email protected] 接下來的學(xué)習(xí)過程中,比較難以理解的是ARM的中斷過程和存儲(chǔ)系統(tǒng)。ARM中斷的實(shí)現(xiàn)有些書上看一兩遍也不見得能夠完全理解,當(dāng)然可能只對(duì)于像我一樣跨專業(yè)的朋友來說存在這個(gè)問題。這次只談中斷。由于是初學(xué)者,難免會(huì)出錯(cuò),敬請(qǐng)各位指正。
當(dāng)一個(gè)程序正常執(zhí)行過程中,
CPU可能檢測(cè)到有某個(gè)中斷源發(fā)出中斷請(qǐng)求,這時(shí)ARM硬件實(shí)現(xiàn)了程序強(qiáng)制跳轉(zhuǎn),在這之前保存了相關(guān)信息,以便程序正常返回。如果是發(fā)生了Reset中斷,程序?qū)崿F(xiàn)系統(tǒng)初始化設(shè)置。
開始比較難以理解的是中斷產(chǎn)生后,程序都進(jìn)行了哪些操作。我就從跟蹤PC作為分析的主線。以發(fā)生FIQ中斷為例。(只以ROM起始地址為0為例,不為0的情況參照存儲(chǔ)地址映射)
最簡單的是中斷發(fā)生后,PC=0x08,在此地址處存放一個(gè)跳轉(zhuǎn)指令,跳轉(zhuǎn)到相關(guān)處理程序。當(dāng)然多數(shù)情況中斷處理程序可能比較復(fù)雜,并且要處理
多種中斷的情況下,采用一步映射兩步跳轉(zhuǎn)(我自己起的名字,不一定妥當(dāng))。如下圖所示: