1.3 SoC
SoC(片上系統)是指將計算機或其他電子系統集成到單一芯片的集成電路。SoC的集成規模很大,一般達到幾百萬門到幾千萬門,相對比較靈活,它可以將ARM架構的處理器與一些專用的外圍芯片集成到一起,組成一個系統。
從狹義角度講,SoC是信息系統核心的芯片集成,是將系統的關鍵部件集成在一塊芯片上;從廣義角度講,SoC是一個微小型系統,如果說中央處理器(CPU)是大腦,那么SoC就是包括大腦、心臟、眼睛和手等的系統。
SoC集成了很多設備最關鍵的部件,如CPU、GPU、內存,也就是說,它由很多部件封裝組成。例如,通常我們所說的高通驍龍888、麒麟950、三星的Exynos 4412等都是系統部件封裝后的總稱,然而各企業封裝的內容不盡相同。
圖1-29所示是一個典型的基于ARM架構的經典SoC的架構。

圖1-29 基于ARM架構的經典SoC的架構
一個基于ARM架構的經典SoC架構通常包含以下主要部件。
(1) ARM處理器核。
(2) 時鐘和復位控制器。
(3) 中斷控制器。
(4) ARM外圍設備。
(5) GPIO:通用輸入輸出。
(6) DMA Port:直接存儲器訪問端口。
(7)外部內存接口。
(8)片上RAM。
(9) AHB、APB總線。
ARM處理器核只有兩種中斷輸入,分別為nIRQ、nFIQ,基于中斷的外設數以百計,由中斷控制器來管理這些中斷。在外設內部,各組件通過芯片上的互聯總線相互連接,對于大多數基于ARM架構的設備,這就是標準的 AMBA互聯。
AMBA(高級微控制器總線體系結構)指定了兩個總線,分別為AHB(高級高性能總線)和APB(高級外設總線)。APB通常用于連接所有外設,AHB則用于連接存儲器和其他并發高速設備。
現有的ARM處理器,如Hisi-3507、Exynos 4412等都是SoC,尤其是應用處理器,它集成了許多外設,為執行復雜的任務提供了強大的支持。
SoC無法單獨運行操作系統,還需要借助大量的外設最終才能形成一個完整的系統。圖1-30所示為三星公司生產的Exynos 4412處理器,大部分復雜的硬件模塊已經集成到了這個SoC中,它利用32nm HKMG(高K金屬柵極技術)制程,支持雙通道LPDDR,主頻由266MHz提升至400MHz,整體性能比同時期的雙核處理器提升了60%,圖像處理能力提升了50%。

圖1-30 Exynos 4412處理器
和三星公司相同,其他和ARM公司合作的企業通常會把CPU和各類外設的IP核集成到一起,然后按照圖紙去流片(像流水線一樣,通過一系列工藝制造芯片),生產出來的芯片不僅包含CPU,還包含其他控制器,形成了一個完整的SoC。
各大廠商得到ARM公司的授權,獲得ARM處理器的源程序,然后購買或設計一些外設,它們組成一個SoC,最后去流片。不同的SoC架構不同(即CPU如何和IP核聯系起來,有的以總線為核心,有的以DDR為核心)。可是,無論任何企業如何改進自己的SoC,都不會更改CPU,ARM處理器就好好地待在那里。
學習ARM就必須深刻了解SoC架構,當我們得到一個新的SoC的數據,首先要查看SoC的RAM、時鐘頻率、外設的控制器、各個外設控制器的操作原理、各個外設對GPIO引腳的復用情況、各個控制器的地址、中斷控制器如何管理眾多中斷源等信息。官方提供的用戶手冊是我們學習ARM、編寫驅動程序的基石,該手冊內容比較多,我們并不需要每一章都掌握,用到哪個部分,我們就去學習即可。
2012年初,三星公司正式推出了自家的首款四核移動處理器—Exynos 4412。下面我們以該處理器為例,來講解這幾個概念。
(1)三星公司的Exynos 4412是一款基于Cortex-A9處理器的SoC。
(2) Exynos 4412包含了4個Cortex-A9的處理器(核)。
(3) Cortex-A9是基于ARMv7-A架構(指令集)的。
基于Exynos 4412的FS4412開發板硬件結構如圖1-31所示,其包含如下部分。
(1) 4個Cortex-A9處理器。
(2) 1MB的 L2 Cache。
(3) GIC:通用中斷控制器。
(4) 中斷控制器。
(5) NEON:ARM處理器的擴展結構,用于加速音/視頻的編/解碼,優化用戶界面。
(6) RAM控制器、DRAM控制器、NAND Flash控制器、SROM控制器等各種存儲設備的控制器。
(7) USB、I2C、SPI等總線接口。
(8) RTC:實時時鐘。
(9)看門狗。
(10)聲音子系統。
(11) IIS:集成語音接口。
(12)電源管理部件。
(13)一些外設元器件(LED、按鍵、傳感器、內存條、網卡等)。
(14)外接顯示器、鼠標、鍵盤、攝像頭、音響等。

圖1-31 FS4412開發板硬件結構