在一個SoC的系統(tǒng)結(jié)構(gòu)設(shè)計中,除了硬件結(jié)構(gòu)以外,軟件結(jié)構(gòu)的設(shè)計對整個SoC的性能有很大的影響。
盡管硬件的結(jié)構(gòu)設(shè)計無論對哪個公司來說都是一種挑戰(zhàn),卻不能忽略系統(tǒng)級上的挑戰(zhàn)。
因為一個SoC產(chǎn)品不只包括硬件,而是軟件和硬件的結(jié)合。在很多的SoC中,軟件設(shè)計的復(fù)雜度和開發(fā)周期都要超過整個硬件的設(shè)計。軟件設(shè)計在很大程度上決定了SoC中硬件電路的性能發(fā)揮。
1.數(shù)據(jù)流的路徑
在很多嵌入式系統(tǒng)中,數(shù)據(jù)流在硬件和軟件中的路徑?jīng)Q定了系統(tǒng)的效率和性能。
數(shù)據(jù)流的路徑通常是從數(shù)據(jù)位通過物理接口流入系統(tǒng)開始的, 并經(jīng)硬件設(shè)備輸入接口流入硬件設(shè)備輸入控制器 。軟件驅(qū)動程序?qū)?shù)據(jù)輸入操作系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),然后再送入應(yīng)用存儲器空間中。
應(yīng)用程序間的通信直接通過 共享的全局存儲器交換數(shù)據(jù) ,或者 通過操作系統(tǒng)以消息的形式傳送數(shù)據(jù) 。
在輸出端,應(yīng)用通常通過操作系統(tǒng)向設(shè)備驅(qū)動程序傳送數(shù)據(jù), 它將數(shù)據(jù)輸入一個硬件輸出控制器 , 然后通過操作系統(tǒng)向設(shè)備驅(qū)動程序傳送數(shù)據(jù) , 經(jīng)硬件設(shè)備輸出接口傳出 。
2.軟件環(huán)境
SoC芯片中的軟件環(huán)境包括應(yīng)用軟件的運行環(huán)境和應(yīng)用軟件的開發(fā)環(huán)境。開發(fā)環(huán)境包括應(yīng)用軟件源代碼、編譯器、連接器、開發(fā)界面和硬件調(diào)試接口等。
其中,軟件源代碼位于開發(fā)環(huán)境的最上層,而調(diào)試接口則是環(huán)境中的底層。對于一個SoC來說,如果其中的處理器采用MIPS、ARM或Tensilica的處理器時, SoC上應(yīng)用的開發(fā)者可以從提供商那里獲得開發(fā)環(huán)境,而不用自己去開發(fā) 。
這也是很多的就是解決方案,給你從芯片到帶著小系統(tǒng)的東西。
但即使標(biāo)準(zhǔn)的開發(fā)環(huán)境也從來都不是標(biāo)準(zhǔn)的。為了在新的系統(tǒng)中去實現(xiàn)包括更多新的功能,在每一個開發(fā)周期中,需要在開發(fā)環(huán)境中增加各種開發(fā)工具。
SoC中應(yīng)用軟件的運行環(huán)境主要由
- 應(yīng)用程序、
- 操作系統(tǒng)核心、
- 各種驅(qū)動、
- 芯片本身構(gòu)成。
圖4-13所示為軟件的運行環(huán)境及開發(fā)工具。(對于一些 不太需要任務(wù)管理、資源管理及進(jìn)程管理的應(yīng)用 ,SoC也往往不會采用操作系統(tǒng)。想起了當(dāng)時面試的時候面試官問我玩過一下操作系統(tǒng)沒,但當(dāng)時都是玩的裸機(jī)。唯一一個也是基于協(xié)議棧的東西。)
在應(yīng)用軟件運行環(huán)境的最上層是應(yīng)用程序。應(yīng)用程序?qū)崿F(xiàn)了系統(tǒng)的各種特定應(yīng)用,如音頻或視頻解碼等。應(yīng)用程序之間可以通過某種標(biāo)準(zhǔn)接口(如網(wǎng)絡(luò)協(xié)議)進(jìn)行通信。相同類型的應(yīng)用可以在這種方式下獲得好處。
在這種消息傳遞中能夠?qū)崿F(xiàn)可靠的接口,但會帶來性能的問題 。應(yīng)用程序之間的通信也可以通過操作系統(tǒng)核心以存儲器共享的方式通信來提高速度。比如某一應(yīng)用程序?qū)⒁粔K數(shù)據(jù)放到緩存中,并把指針傳遞給另一個應(yīng)用軟件,但以這樣的方式交換數(shù)據(jù)往往也會帶來某些問題。
在應(yīng)用程序的下一層是操作系統(tǒng)核心,負(fù)責(zé)任務(wù)的創(chuàng)建、任務(wù)的調(diào)度和存儲器管理等。
在操作系統(tǒng)的下一層由
- 各種I/O接口(如UART、USB、IDE、WLAN、LCD等)驅(qū)動、
- 硬件加速器驅(qū)動和
- 其他實現(xiàn)如異常處理、
- 中斷服務(wù)程序、
- 初始化、
- 復(fù)位及Bootloader等的系統(tǒng)軟件構(gòu)成。
3.軟硬件接口
在一個真實的SoC系統(tǒng)結(jié)構(gòu)設(shè)計中還必須考慮到軟硬件接口(Interface)。主要的軟硬件接口有:
- ①存儲空間映射(Memory Map),包括所有設(shè)備的可配置寄存器的地址映射;
- ②設(shè)備驅(qū)動;
- ③初始化、復(fù)位、Bootloader程序;
- ④中斷服務(wù)程序及中斷向量;
- ⑤I/O引腳的復(fù)用等。
這些是在系統(tǒng)結(jié)構(gòu)設(shè)計時必須定義好的,在硬件設(shè)計時必須按照定義做,這樣才能保障系統(tǒng)軟件正常工作。
1.存儲空間映射
通常情況下,SoC中的各個片上模塊及與之通信的片外設(shè)備,如Flash及Flash控制器的寄存器、RAM及存儲器控制模塊中的寄存器,以及各種外設(shè)等, 均采用統(tǒng)一地址空間進(jìn)行編址訪問,為每一個設(shè)備分配一定數(shù)量的地址空間的過程稱為存儲空間映射 。圖4-14所示為一款I(lǐng)BM的SoC的存儲空間映射的例子。
圖4-14 基于IBM的PLB和OPB總線協(xié)議的SoC的存儲空間映射實例
2.設(shè)備驅(qū)動
在SoC設(shè)計中,需要大量投資來開發(fā)設(shè)備驅(qū)動(I/O接口驅(qū)動、硬件加速器驅(qū)動),這是產(chǎn)品成功的關(guān)鍵。
設(shè)備驅(qū)動的作用是在操作系統(tǒng)內(nèi)核與I/O硬件設(shè)備之間建立連接。
其目的是,對于軟件設(shè)計者而言,這個接口屏蔽了各類設(shè)備的底層硬件細(xì)節(jié),使軟件設(shè)計者可以像處理普通文件一樣對硬件設(shè)備進(jìn)行打開、讀寫、關(guān)閉等操作。
設(shè)備驅(qū)動主要完成的工作包括:
操作系統(tǒng)提供商通常會提供常見設(shè)備的驅(qū)動包 。這些驅(qū)動程序可以作為參考設(shè)計,而實際上應(yīng)用開發(fā)者還是需要做出大量修改。參考設(shè)計畢竟只是參考,最后的產(chǎn)品中很少完全使用參考設(shè)計。與桌面系統(tǒng)不同,嵌入式系統(tǒng)與接口和應(yīng)用密切相關(guān),一個操作系統(tǒng)獲得成功很大程度上取決于各種最新驅(qū)動程序的可獲程度。
3.初始化、復(fù)位、Bootloader程序
SoC設(shè)計中的初始化程序主要負(fù)責(zé)整個SoC各個關(guān)鍵組件的初始化工作。
初始化
這些初始化工作主要包括:
- 初始化CPU內(nèi)部的一些特殊寄存器、
- 初始化Cache參數(shù)、
- 初始化存儲器管理單元MMU(Memory Management Unit)、
- 初始化其他SoC組件(如URAT、Timer等)、
- 初始化設(shè)置中斷向量表等,
- 并開始執(zhí)行應(yīng)用程序或操作系統(tǒng)。
復(fù)位主要是在上電時完成處理器、SoC芯片及整個系統(tǒng)的復(fù)位工作。
它使得CPU的指令指針指到某一個特定的存儲器地址,然后從這個地址取指并執(zhí)行一系列的復(fù)位中斷服務(wù)程序。
例如,一款I(lǐng)BM公司的PowerPC 405GP處理器在上電復(fù)位時,將從地址0XFFFFFFFC開始執(zhí)行相關(guān)的程序,而這段程序可能是在通過PCI連接的存儲器上。
復(fù)位
復(fù)位主要是在上電時完成處理器、SoC芯片及整個系統(tǒng)的復(fù)位工作。它使得CPU的指令指針指到某一個特定的存儲器地址,然后從這個地址取指并執(zhí)行一系列的復(fù)位中斷服務(wù)程序。
例如,一款I(lǐng)BM公司的PowerPC 405GP處理器在上電復(fù)位時,將從地址0XFFFFFFFC開始執(zhí)行相關(guān)的程序,而這段程序可能是在通過PCI連接的存儲器上。
Bootloader
Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一小段程序。
通過這部分程序,設(shè)計者可以初始化硬件設(shè)備、建立內(nèi)存空間的映射表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
Bootloader的主要運行任務(wù)就是將內(nèi)核映象加載到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即開始啟動操作系統(tǒng)。
Bootloader是基于特定硬件平臺來實現(xiàn)的,因此,幾乎不可能為所有的SoC建立一個通用的Bootloader。Bootloader不但依賴于處理器的體系結(jié)構(gòu),還依賴于SoC中各設(shè)備模塊的配置。
因此一般交付的時候芯片廠商會將芯片和Bootlloader一起交付,同時一些安全的啟動方案就在這個地方會出現(xiàn)。
4.中斷服務(wù)程序及中斷向量
當(dāng)處理器正在處理內(nèi)部數(shù)據(jù)時,外界發(fā)生了緊急情況,要求處理器暫停當(dāng)前的工作轉(zhuǎn)去處理這個緊急事件。
處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,這樣的過程稱為中斷,而對于緊急事件的處理程序稱為中斷服務(wù)程序。
各類中斷服務(wù)程序的入口地址均存放在中斷向量表中。
5.I/O引腳的復(fù)用
I/O引腳的數(shù)量將影響到芯片乃至系統(tǒng)板的面積。 通常為了減小面積會將兩個或兩個以上不在同一個時間使用的不同功能的I/O引腳進(jìn)行復(fù)用。
例如,用在測試時的掃描鏈信號引腳與正常使用時的UART模塊的引腳復(fù)用。
6.模型
為了能及時開發(fā)出目標(biāo)系統(tǒng)所需要的軟件,在SoC芯片能夠獲得之前,需要有一種SoC模型來開發(fā)和運行軟件。
以前, SoC模型通常是基于FPGA的 。隨著電子系統(tǒng)級設(shè)計的發(fā)展,一種虛擬的仿真模型出現(xiàn)了。仿真模型的速度雖然相對實際芯片要慢一些,但可以更早地展開軟件的開發(fā),而且隨著服務(wù)器等處理速度的提高,相對來說提高了仿真模型的速度。
這里也就是原型驗證的意義所在。
隨著SoC設(shè)計中越來越多地使用多核,軟件開發(fā)環(huán)境需要為應(yīng)用開發(fā)者提供新的編程模型。
比如,在每一個獨立的處理器上運行標(biāo)準(zhǔn)的操作系統(tǒng),這樣可以為應(yīng)用開發(fā)者提供相當(dāng)?shù)撵`活性。但應(yīng)用開發(fā)者要面臨著協(xié)同這些處理器中的所有任務(wù)的問題。
而更加普遍的做法或許是,為開發(fā)者提供一個多處理器多線程的開發(fā)模型,每一個線程映射到不同的獨立處理器上。
這種模型限制了對每個處理器的訪問,卻降低了在應(yīng)用層可能發(fā)生的同步問題。
這些編程模型只是為處理器提供通用的開發(fā)環(huán)境,而實際的芯片是一個更大并包括復(fù)雜通信的系統(tǒng),這樣的系統(tǒng)需要在開發(fā)環(huán)境中被建模。
軟件的復(fù)雜性正在不斷地增長,并且軟件通常能夠更好地處理復(fù)雜性的問題。軟件系統(tǒng)的功能和復(fù)雜性的進(jìn)一步發(fā)展也使得SoC設(shè)計方法學(xué)的極限得以擴(kuò)展。
-
控制器
+關(guān)注
關(guān)注
114文章
17100瀏覽量
184220 -
存儲器
+關(guān)注
關(guān)注
38文章
7649瀏覽量
167343 -
連接器
+關(guān)注
關(guān)注
99文章
15382瀏覽量
140451 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3682瀏覽量
131365 -
SoC系統(tǒng)
+關(guān)注
關(guān)注
0文章
52瀏覽量
10962
發(fā)布評論請先 登錄
操作系統(tǒng)結(jié)構(gòu)設(shè)計
淺談產(chǎn)品結(jié)構(gòu)設(shè)計特點
軟件無線電結(jié)構(gòu)設(shè)計的器件選擇方法
SOC系統(tǒng)的結(jié)構(gòu)設(shè)計
結(jié)構(gòu)設(shè)計中的鋼筋混凝土構(gòu)造
軸系結(jié)構(gòu)設(shè)計實驗

基于ARM的嵌入式系統(tǒng)硬件結(jié)構(gòu)設(shè)計
淺談產(chǎn)品結(jié)構(gòu)設(shè)計類別及產(chǎn)品結(jié)構(gòu)設(shè)計的重要性
DSP中MAC的微系統(tǒng)結(jié)構(gòu)設(shè)計

評論