新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3C2440學(xué)習(xí)二(基礎(chǔ)資源的使用)

S3C2440學(xué)習(xí)二(基礎(chǔ)資源的使用)

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
雖然有種流水賬的感覺,但是這是學(xué)習(xí)的必經(jīng)之路,等我滲透ARM三次后,我再全面處理問題,給出最簡潔最直接的答案吧。
①ARM有多少個(gè)通用寄存器,有什么用?(讓我們一個(gè)一個(gè)記錄)

通用寄存器

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



關(guān)鍵詞: S3C2440基礎(chǔ)資

評(píng)論


技術(shù)專區(qū)

關(guān)閉