ARM裸機 S5PV210簡析

2021-10-12 14:37:51 字數 3555 閱讀 7384

armv7架構是在armv6架構的基礎上誕生的。該架構採用了thumb-2技術,thumb-2技術是在arm的thumb**壓縮技術的基礎上發展起來的,並且保持了對現存arm解決方案的完整的**相容性。thumb-2技術比純32位**少使用 31%的記憶體,減小了系統開銷。同時能夠提供比已有的基於thumb技術的解決方案高出38%的效能。

armv7架構還採用了neon技術,將dsp和**處理能力提高了近4倍,並支援改良的浮點運算,滿足下一代3d圖形、遊戲物理應用以及傳統嵌入式控制應用的需求。

此外,armv7還支援改良的執行環境,以迎合不斷增加的jit(just in time)和dac(dynamicadaptive compilation)技術的使用。

arm 微處理器可支援多達 16 個協處理器,用於各種協處理操作,在程式執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略 arm 處理器和其他協處理器的指令。arm 的協處理器指令主要用於 arm 處理器初始化 arm 協處理器的資料處理操作,以及在arm 處理器的暫存器和協處理器的暫存器之間傳送資料,和在 arm 協處理器的暫存器和儲存器之間傳送資料。

1、使用者模式(usr):用於正常執行程式;

2、快速中斷模式(fiq):用於高速資料傳輸;

3、外部中斷模式(irq):用於通常的中斷處理;

4、管理模式(svc):作業系統使用的保護模式;

5、資料訪問終止模式(abt):當資料或指令預取終止時進入該模式,可用於虛擬儲存以及儲存保護;

6、系統模式(sys):執行具有特權的作業系統任務;

7、未定義指令中止模式(und):當未定義的指令執行時進入該模式,可用於支援硬體;

8、 監控模式(mon)也稱(被動)保護模式(sec):可在安全和非安全模式切換

流水線技術是一種將每條指令分解為多步,並讓各步操作重疊,從而實現幾條指令並行處理的技術。程式中的指令仍是一條條順序執行,但可以預先取若干條指令,並在當前指令尚未執行完時,提前啟動後續指令的另一些操作步驟。這樣顯然可加速一段程式的執行過程。

超級流水線以增加流水線級數的方法來縮短機器週期,相同的時間內超級流水線執行了更多的機器指令。

一般而言,cpu執行一條指令需要經過以下階段:取指->解碼->位址生成->取運算元->執行->寫回,每個階段都要消耗乙個時鐘週期,同時每個階段的計算結果在週期結束以前都要傳送到階段之間的鎖存器上,以供下乙個階段使用。所以,每個時鐘週期所消耗的時間就是由以上幾個階段中的耗時最長的那個決定的。假設耗時最長的階段耗時為s秒,那麼時鐘頻率就只能設計到1/s赫茲(這裡不考慮階段間訊號傳遞的時間和鎖存器的反應時間)。

超標量(superscalar)是指在cpu中有一條以上的流水線,並且每時鐘週期內可以完成一條以上的指令,這種設計就叫超標量技術。 其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在乙個機器週期內完成乙個甚至多個操作,其實質是以時間換取空間。

在arm儲存系統中,使用mmu實現虛擬位址到實際實體地址的對映。

mmu的實現過程,實際上就是乙個查表對映的過程。

mmu的對映分為兩種,一級頁表的變換和二級頁表變換。兩者的不同之處就是所實現的變換位址空間大小不同。一級頁表變換支援1m大小的儲存空間的對映,而二級可以支援64kb、4kb和1kb大小位址空間的對映。

要實現從虛擬位址到實體地址的對映,必然會遇到乙個問題,如何找到這個頁表。對於表的查詢,要知道這個表的基位址和偏移位址,在具有mmu功能的處理器中,整合了乙個被稱為cp15的協處理器,該協處理器的c2暫存器中用於儲存頁表的基位址.

詳細版:

s5pv210架構圖如下:

s5pv210採用了arm cortextm-a8核心,arm v7指令集,主頻可達1ghz,64/32位內部匯流排結構,32/32kb的資料/指令一級快取,512kb的二級快取。

s5pv210內部有96kb的iram和64kb的irom。

主要實現時鐘以及外設等的初始化。

24 bit tft lcd controller support 1024x768(xga) resolution

camera inte***ce 支援最大12m(8192x8192) 介面8-bit itu 601/656和mpdi/csi

4 uarts

24-channel dma

4-timers with pwm

3-ch 24-bit i2s bus for audio-codec

3-ch iic bus up to 400kbit/s

2-ch hs-spi

usb host 2.0

usb otg 2.0 480mbps

4-ch sd/sdio/hs-mmc inte***ce

10-ch 12-bit multiplexed adc

1-ch ac-97 audio codec inte***ce

3-ch pcm serial audio inte***ce

hdmi&tv-out (pal/ntsc)

14x8 keypad inte***ce

237 gpio

ata inte***ce

s5pv210位址空間分布圖(儲存器位址對映)如下:

0x0000 0000 - 0x1fff ffff : 引導區

其中:0x0000 0000 - 0x0000 ffffirom(64k)不能寫(三星公司已經將**燒錄進去),用於初始化系統時鐘,設定看門狗,初始化堆和棧,載入bl1。

0x2000 0000 - 0x2fff ffff :dram0:記憶體通道0(0.5g)

0x4000 0000 - 0x4fff ffff :dram1:記憶體通道1(1g) (uboot在此處開始執行)

可供使用記憶體擴充套件為:1.5g(gec210開發板只用了512m)

0x8000 0000 - 0xafff ffff:bank(0—5):均為128m

不能同時使用(引腳不夠用,只有27個)

bank:塊 匯流排型裝置定址

0xb000 0000 - 0xbfff ffff : 256mb nand快閃儲存器

0xc000 0000 - 0xcfff ffff : 256mb ***_sram output buffer

0xd000 0000 - 0xd000 ffff 64kb irom

0xd002 0000 - 0xd003 7fff 96kb iram

0xd800 0000 - 0xdfff ffff 128mb dmz rom

0xe000 0000 -0xffff ffff:特殊功能暫存器

S5PV210 裸機中斷

這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...

我的S5pv210裸機程式設計

今天是2015年0910,用的是九鼎公司的s5pv210。開始動手的第一天。第一步 把通過看i210開發板硬體手冊中,關於撥碼開關的設定,選擇usb啟動的模式,設定為1 x1xx即可使用。第二步 安裝usb線的驅動,由於驅動在win7 64位中沒有簽名所以需要破解才能安裝驅動。先使用安裝檔案中的破解...

s5pv210裸機串列埠無響應

define gpc0con volatile unsigned int 0xe0200060 define gpc0dat volatile unsigned int 0xe0200064 define gpa0con volatile unsigned int 0xe0200000 define...