S3C2440學習二(基礎(chǔ)資源的使用)
①ARM有多少個通用寄存器,有什么用?(讓我們一個一個記錄)
通用寄存器可用于傳送和暫存數(shù)據(jù),也可參與算術(shù)邏輯運算,并保存運算結(jié)果。除此之外,它們還各自具有一些特殊功能。通用寄存器的長度取決于機器字長,匯編語言程序員必須熟悉每個寄存器的一般用途和特殊用途,只有這樣,才能在程序中做到正確、合理地使用它們。
16位cpu通用寄存器共有 8 個:AX,BX,CX,DX,BP,SP,SI,DI.
八個寄存器都可以作為普通的數(shù)據(jù)寄存器使用。
但有的有特殊的用途:AX為累加器,CX為計數(shù)器,BX,BP為基址寄存器,SI,DI為變址寄存器,BP還可以是基指針,SP為堆棧指針。
32位cpu通用寄存器共有 8 個: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多
16位cpu通用寄存器共有 8 個:AX,BX,CX,DX,BP,SP,SI,DI.
八個寄存器都可以作為普通的數(shù)據(jù)寄存器使用。
但有的有特殊的用途:AX為累加器,CX為計數(shù)器,BX,BP為基址寄存器,SI,DI為變址寄存器,BP還可以是基指針,SP為堆棧指針。
32位cpu通用寄存器共有 8 個: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多
ARM通用寄存器
通用寄存器(R0-R15)可分為三類:不分組寄存器R0~R7;分組寄存器R8~R14;程序計數(shù)器PC。
1)不分組寄存器R0~R7
不分組寄存器R0~R7在所有處理器模式下,它們每一個都訪問一樣的32位寄存器。它們是真正的通用寄存器,沒有體系結(jié)構(gòu)所隱含的特殊用途。
2)分組寄存器R8~R14
分組寄存器R8~R14對應(yīng)的物理寄存器取決于當前的處理器模式。若要訪問特定的物理寄存器而不依賴當前的處理器模式,則要使用規(guī)定的名字。寄存器R8~R12各有兩組物理寄存器:一組為FIQ模式,另一組為除了FIQ以外的所有模式。寄存器R8~R12沒有任何指定的特殊用途,只是在作快速中斷處理時使用。寄存器R13,R14各對應(yīng)6個分組的物理寄存器,1個用于用戶模式和系統(tǒng)模式,其它5個分別用于5種異常模式。寄存器R13通常用做堆棧指針,稱為SP;寄存器R14用作子程序鏈接寄存器,也稱為LR。
3)程序計數(shù)器PC
寄存器R15用做程序計數(shù)器(PC)。
②大概有多少資源模塊?
ARM處理器共有37個寄存器:1) 31個通用寄存器,包括程序計數(shù)器(PC)。這些寄存器都是32位的;2)6個狀態(tài)寄存器。這些寄存器也是32位的,但是只使用了其中的12位。
S3C2440的片內(nèi)資源大概可分13類:一,1個LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示器);二,SDRAM控制器;三,3個通道的UART;四,4個通道的DMA;五,4個具有PWM功能的計時器和1個內(nèi)部時鐘;六,觸摸屏接口;七,I2C總線接口;八,2個USB主機接口,1個USB設(shè)備接口;九,2個SPI接口;十,SD接口和MMC卡接口;十一,看門狗計數(shù)器;十二,117位通用I/O口和24位外部中斷源;十三,8通道10位AD控制器。
ARM9主要是一ARM920T為核心,進行上述外圍的擴張,使其顯示出強大的能力,主要是頻率上去了,能做的事情就多了,重點ARM920T的內(nèi)核穩(wěn)定。
③對于ARM的尋址是指的RAM嗎?對ROM如何尋址?
我理解的尋址是,CPU每部寄存器對立即數(shù)的處理,對內(nèi)部寄存器的處理,如果需要運算的就把中間結(jié)果或狀態(tài)放到RAM中,相當于打草稿,如果是需要使用數(shù)據(jù)就進入ROM調(diào)用,相當于ROM是資料庫,如果運算的結(jié)果重要就存放到RAM中相當于存檔。
其實尋址非常簡單,RAM和ROM或FLASH都是對應(yīng)不同的設(shè)備,有不同的驅(qū)動方式,還有就是有地址順序,采用常用的命令,寫入讀出到相應(yīng)的地址,一切就順理成章了。
④有時候用ADS1.2編譯程序會出錯,但是將編譯清楚后,重新編譯后,可能會報警,但不會出錯,這是預(yù)編譯和連接中的問題嗎?
據(jù)說是編譯中有個*.O文件,可執(zhí)行代碼的生存,是編譯后連接,大概編譯后生成*.O文件,然后連接處理行不通了,前面編譯大概是對每個文件每個文件的處理,得到許多中間文件,然后再系統(tǒng)性連接處理,說以從頭再來過可以解決這個編譯問題。
⑤程序中static的著用?
加static 是標明此函數(shù)為靜態(tài)函數(shù),即此函數(shù)只能在本文件中使用,不允許別的文件調(diào)用此函數(shù).函數(shù)后面的const 關(guān)鍵字表示,這個函數(shù)的返回值是個常量類型。這個常量類型是有限制的。 他的生存期間就是在這個類中。
⑥我們知道最終在下載到硬件的是二進制代碼,那么命令、數(shù)據(jù)、地址的區(qū)別和聯(lián)系是什么?
⑥我們知道最終在下載到硬件的是二進制代碼,那么命令、數(shù)據(jù)、地址的區(qū)別和聯(lián)系是什么?
對應(yīng)硬件來說,每一行代碼都是都有個存儲順序,可理解為按匯編的格式先裝入操作命令,再是地址或寄存器,再是數(shù)據(jù)。雖然命令、數(shù)據(jù)、地址編譯到最后就是二進制代碼,但是他們有順序,而且按照對應(yīng)的命令就能自動分離了。再深入研究芯片的設(shè)計就能深入掌握了。
⑦RAM,ROM和flash的區(qū)別?
可以把他們看做不同的芯片、不同的設(shè)備,都能通過IO讀寫數(shù)據(jù),他們都有各自的地址空間,但是RAM設(shè)計之初就是要求速度快,不用永久保留,而ROM要求永久保留(準確的是保留有效的時間,一般百十年就廢了),flash又稱為閃存,和ROM一個性質(zhì),主要是價格問題,做嵌入式不用想PC機要那么大,可以做小一點價格便宜。
⑧FIQ和IRQ的區(qū)別?
在ARM中,F(xiàn)IQ模式是特權(quán)模式中的一種,同時也屬于異常模式一類。用于高速數(shù)據(jù)傳輸或通道處理,在觸發(fā)快速中斷請求(FIQ)時進入。
FIQ和IRQ(外部中斷模式)之間有很大的區(qū)別。FIQ模式必須盡快處理,處理結(jié)束后離開這個模式;IRQ模式可以被FIQ模式中斷,但IRQ不能中斷FIQ模式;為使FIQ模式響應(yīng)更快,F(xiàn)IQ模式具有更多的影子(Shadow)寄存器。FIQ模式必須禁用中斷;如果一個中斷例程必須重新啟用中斷,應(yīng)使用IRQ模式而不是FIQ模式。
FIQ和IRQ(外部中斷模式)之間有很大的區(qū)別。FIQ模式必須盡快處理,處理結(jié)束后離開這個模式;IRQ模式可以被FIQ模式中斷,但IRQ不能中斷FIQ模式;為使FIQ模式響應(yīng)更快,F(xiàn)IQ模式具有更多的影子(Shadow)寄存器。FIQ模式必須禁用中斷;如果一個中斷例程必須重新啟用中斷,應(yīng)使用IRQ模式而不是FIQ模式。
評論