国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于直接中斷觸發(fā)的OMAP-L138雙核通信設(shè)計(jì)

2018-11-13 06:30葛科勇傅正財(cái)
現(xiàn)代電子技術(shù) 2018年21期
關(guān)鍵詞:共享內(nèi)存開(kāi)發(fā)板雙核

葛科勇,陳 堅(jiān),傅正財(cái)

(上海交通大學(xué) 電氣工程系 電力傳輸與功率變換控制教育部重點(diǎn)實(shí)驗(yàn)室,上海 200030)

0 引 言

隨著電子信息技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于生產(chǎn)生活的方方面面[1]。同時(shí),人們對(duì)嵌入式系統(tǒng)的性能要求也日趨提高。ARM和DSP是如今應(yīng)用最廣泛的兩種嵌入式處理器,它們有著不同的工作特性,因而也被應(yīng)用于不同的領(lǐng)域。DSP芯片由于其強(qiáng)大的數(shù)據(jù)處理能力和高運(yùn)行速度,多被應(yīng)用于對(duì)實(shí)時(shí)性要求較高的各類(lèi)數(shù)據(jù)處理任務(wù)。與DSP相對(duì),采用精簡(jiǎn)指令集計(jì)算機(jī)結(jié)構(gòu)(Reduced Instruction Set Computer,RISC)的ARM芯片實(shí)時(shí)處理性能較弱,但因其交互性強(qiáng)、功耗低、價(jià)格低廉以及擴(kuò)展功能豐富等特點(diǎn),更加適用于控制類(lèi)的電子產(chǎn)品[2]。為了充分利用這兩種處理器的優(yōu)點(diǎn)以完成復(fù)雜的工作,TI公司于2009年推出了OMAP-L138 DSP與ARM的雙核嵌入式微處理器。該處理器的推出在極大地簡(jiǎn)化了電路設(shè)計(jì)復(fù)雜度的同時(shí)也對(duì)軟件開(kāi)發(fā)提出了更高的要求。嵌入式開(kāi)發(fā)者在分別進(jìn)行DSP與ARM應(yīng)用程序開(kāi)發(fā)的同時(shí),也需考慮如何實(shí)現(xiàn)兩個(gè)處理器之間的信號(hào)與數(shù)據(jù)交流。在大多數(shù)已發(fā)表的文獻(xiàn)中,雙核之間的通信設(shè)計(jì)是通過(guò)TI公司提供的SYSLINK或DSPLINK組件的進(jìn)程間通信工具(Inter-Processor Communication,IPC)實(shí)現(xiàn)的[3-4]。該方法需在DSP處理器運(yùn)行DSP/BIOS或SYS/BIOS實(shí)時(shí)操作系統(tǒng),適用于邏輯復(fù)雜、進(jìn)程龐大的雙核通信任務(wù)。但這無(wú)形中也增加了軟件開(kāi)發(fā)難度,同時(shí)頻繁地調(diào)用IPC函數(shù)也占用了一定的CPU資源,降低了通信效率。針對(duì)邏輯相對(duì)簡(jiǎn)單、數(shù)據(jù)交互量較大的雙核通信任務(wù),本文設(shè)計(jì)一種基于直接中斷觸發(fā)的雙核通信方法。在該方法中ARM內(nèi)核運(yùn)行Linux操作系統(tǒng),通過(guò)SYSLINK驅(qū)動(dòng)中的slaveloader工具啟動(dòng)DSP內(nèi)核并加載ARM與DSP端應(yīng)用程序。雙核間通信不再依賴(lài)IPC,DSP端可以裸機(jī)運(yùn)行,雙核之間可以通過(guò)中斷直接觸發(fā)的方式進(jìn)行異步事件通知,極大地簡(jiǎn)化了程序設(shè)計(jì)的難度,提高了通信效率。

1 OMAP-L138處理器概述

OMAP-L138是TI公司推出的達(dá)芬奇架構(gòu)嵌入式應(yīng)用處理器,該處理器采用DSP與ARM結(jié)合的非對(duì)稱(chēng)多核結(jié)構(gòu),兼具DSP和精簡(jiǎn)指令集計(jì)算機(jī)(RISC)技術(shù)的特點(diǎn)[5]。圖1為OMAP-L138的功能框圖。

圖1 OMAP-L138功能框圖Fig.1 Function diagram of OMAP-L138

DSP子系統(tǒng)包含一塊高性能的TMS320C674x DSP內(nèi)核芯片以及相應(yīng)的內(nèi)部?jī)?chǔ)存器(L1P,L1D和L2)。DSP子系統(tǒng)主要負(fù)責(zé)大批量的數(shù)據(jù)處理任務(wù)(如音頻處理)。ARM子系統(tǒng)由一塊32位RISC處理器ARM926EJ-S及相應(yīng)內(nèi)存空間組成,主要負(fù)責(zé)整個(gè)OMAP-L138系統(tǒng)的控制工作,如系統(tǒng)初始化、系統(tǒng)配置、電源管理、用戶(hù)接口以及與上位機(jī)的通信工作。除了片上資源,OMAPL138還有大量外設(shè)和外部?jī)?chǔ)存器供DSP與ARM子系統(tǒng)訪(fǎng)問(wèn)。

2 OMAP-L138雙核通信構(gòu)架

與一般的嵌入式處理器不同,OMAP-L138處理器為雙核通信提供了特殊的硬件支持,這些硬件支持是所有雙核通信設(shè)計(jì)的基礎(chǔ)。首先,OMAP-L138的內(nèi)存與外設(shè)采用統(tǒng)一編址,除了少部分內(nèi)存僅DSP或ARM可以單獨(dú)訪(fǎng)問(wèn),其余內(nèi)存及外設(shè)是兩者共享的。同時(shí),OMAP-L138雖然沒(méi)有為雙核通信提供指定的控制指令,但為此預(yù)留了用于雙核相互控制的中斷寄存器[6]。

2.1 中斷資源

如圖2所示,OMAP-L138在SYSCFG系統(tǒng)配置模塊中的存儲(chǔ)器映射寄存器(Memory Map Register,MMR)中分配5個(gè)CHIPINT中斷位,用于DSP和ARM之間的信號(hào)交流。DSP可以通過(guò)其中的4位SYSCFG_CHIPIN[0~3]通知ARM,ARM也可以通過(guò)SYSCFG_CHIPIN[2~3]通知DSP。另外系統(tǒng)設(shè)置1位SYSCFG_CHIPIN[4]用來(lái)觸發(fā)DSP不可屏蔽中斷(None Masked Interrupt,NMI)。對(duì)中斷寄存器的某一位置1操作將產(chǎn)生一個(gè)事件(event),該事件會(huì)被傳遞到相應(yīng)的中斷控制器(Interrupt Controller,INTC)。中斷控制器將事件映射到相應(yīng)CPU的中斷輸入,CPU接收到中斷后可以進(jìn)行相應(yīng)的中斷處理[7]。

2.2 共享內(nèi)存

表1為OMAP-L138內(nèi)存的訪(fǎng)問(wèn)權(quán)限設(shè)置。從表1中可以看出,OMAP-L138一共有3處存儲(chǔ)空間是DSP與ARM內(nèi)核共享的:256 KB的DSP L2 RAM,128 KB的內(nèi)部共享內(nèi)存以及256 MB的DDR外部共享空間[8]。這三種共享空間可以在不同場(chǎng)合下使用。256 KB的DSP L2 RAM可以用于A(yíng)RM直接讀寫(xiě)DSP RAM的雙核通信方式[9],128 KB的內(nèi)部共享空間可用于較小數(shù)據(jù)量的雙核通信,當(dāng)數(shù)據(jù)量較大時(shí)可以使用256 MB的DDR外部?jī)?chǔ)存。

表1 OMAP-L138內(nèi)存訪(fǎng)問(wèn)權(quán)限Table 1 Memory access permission of OMAP-L138

3 雙核通信設(shè)計(jì)

如引言中所提到在已發(fā)表的文獻(xiàn)中,OMAP-L138的雙核通信都要依賴(lài)于SYSLINK或DSPLINK通信組件。這樣的通信方式需要在DSP處理器上運(yùn)行SYS/BIOS(或較早版本稱(chēng)為DSP/BIOS)操作系統(tǒng)。DSP運(yùn)行操作系統(tǒng)在提高程序模塊化和并行性的同時(shí),也在一定程度上占用了DSP的CPU,影響了DSP的數(shù)據(jù)處理速度。另外,在事件通知和內(nèi)存讀取時(shí),頻繁調(diào)用IPC函數(shù)會(huì)降低通信效率,造成一些不必要的開(kāi)銷(xiāo)。因此本設(shè)計(jì)提出一種應(yīng)用于DSP裸機(jī)運(yùn)行情況下的雙核通信方式。該方式適用于數(shù)據(jù)量較大、邏輯簡(jiǎn)單的ARM與DSP間的核間通信任務(wù),即DSP與ARM將需要交互的數(shù)據(jù)寫(xiě)入共享內(nèi)存,再通知對(duì)方讀取。在該任務(wù)中,所要傳遞的消息是單義的,即“數(shù)據(jù)寫(xiě)入完成,可以讀取”,因此消息的傳遞可以直接使用觸發(fā)中斷的方式。

3.1 軟件開(kāi)發(fā)環(huán)境

ARM核心處理器運(yùn)行嵌入式Linux操作系統(tǒng)。由于A(yíng)RM嵌入式處理器資源有限,無(wú)法完成龐大的Linux操作系統(tǒng)開(kāi)發(fā)任務(wù),所以嵌入式Linux的軟件開(kāi)發(fā)都是在一種交叉開(kāi)發(fā)環(huán)境下完成的[10]。交叉開(kāi)發(fā)環(huán)境由主機(jī)(host)和嵌入式開(kāi)發(fā)板(target)構(gòu)成。在軟件開(kāi)發(fā)過(guò)程中,引導(dǎo)程序(Bootloader)、開(kāi)發(fā)板嵌入式Linux內(nèi)核、文件系統(tǒng)以及應(yīng)用程序都在主機(jī)上進(jìn)行開(kāi)發(fā)和編譯,再燒寫(xiě)到開(kāi)發(fā)板運(yùn)行。

本文設(shè)計(jì)中所用的主機(jī)Linux系統(tǒng)為Ubuntu 12.04,嵌入式Linux內(nèi)核為L(zhǎng)inux 3.3.0,系統(tǒng)引導(dǎo)程序?yàn)閁Boot(Universal Boot Loader),文件系統(tǒng)為根文件系統(tǒng)Rootfs(Root Filesystem)。內(nèi)核文件、文件系統(tǒng)和U-Boot文件在使用交叉編譯工具編譯后生成對(duì)應(yīng)的鏡像文件。這些鏡像文件可以通過(guò)Linux串口工具minicom燒寫(xiě)到開(kāi)發(fā)板NAND FLASH中。

DSP軟件開(kāi)發(fā)工具為T(mén)I公司提供的集成開(kāi)發(fā)環(huán)境CCS(Code Composer Studio)及 StarterWare DSP 軟件開(kāi)發(fā)包。StarterWare是TI公司提供的用于嵌入式裸機(jī)開(kāi)發(fā)的免費(fèi)軟件開(kāi)發(fā)包。該開(kāi)發(fā)包提供了用于TI平臺(tái)下DSP與ARM開(kāi)發(fā)的庫(kù)文件、封裝函數(shù)以及運(yùn)用例程[7]。通過(guò)調(diào)用這些函數(shù),可以大大減輕開(kāi)發(fā)難度。

3.2 開(kāi)發(fā)板啟動(dòng)與程序加載

本設(shè)計(jì)采用U-Boot引導(dǎo)ARM嵌入式Linux系統(tǒng)啟動(dòng),slaveloader引導(dǎo)DSP處理器啟動(dòng)的啟動(dòng)方式。該過(guò)程可以劃分為U-Boot加載、內(nèi)核引導(dǎo)、內(nèi)核初始化和應(yīng)用程序加載4個(gè)階段,如圖3所示。

第一階段為RBL(ROM Boot Loader)加載 U-Boot。RBL為T(mén)I公司固化在芯片ROM中的引導(dǎo)程序。OMAPL138上電時(shí)首先運(yùn)行RBL程序。當(dāng)開(kāi)發(fā)板設(shè)置為NAND FLASH啟動(dòng)時(shí),開(kāi)發(fā)板上電后RBL會(huì)自動(dòng)運(yùn)行位于NAND FLASH起始位置的UBL(User Boot Loader)程序。UBL從NAND FLASH中讀取提前燒寫(xiě)的U-Boot鏡像文件并將其拷貝至RAM中運(yùn)行。

圖3 OMAP-L138雙核啟動(dòng)過(guò)程Fig.3 Dual-core start-up process of OMAP-L138

第二階段為U-Boot引導(dǎo)Linux內(nèi)核。U-Boot在完成部分初始化后開(kāi)始解壓Linux內(nèi)核鏡像,內(nèi)核解壓完成并校驗(yàn)通過(guò)后,U-Boot將引導(dǎo)Linux內(nèi)核運(yùn)行。

第三階段為內(nèi)核初始化系統(tǒng)。Linux系統(tǒng)開(kāi)始運(yùn)行后先進(jìn)行一系列初始化工作,包括系統(tǒng)初始化、設(shè)備驅(qū)動(dòng)初始化以及根文件系統(tǒng)初始化。

第四階段為應(yīng)用程序加載。系統(tǒng)初始化完成后,Linux系統(tǒng)啟動(dòng)DSP處理器并加載運(yùn)行DSP和ARM的應(yīng)用程序。

由于DSP裸機(jī)運(yùn)行,DSP由ARM啟動(dòng)加載。DSP的啟動(dòng)使用SYSLINK中的slaveloader工具。slaveloader是TI公司提供的用來(lái)加載、啟動(dòng)和停止DSP處理器的DSP管理工具[3]。DSP的啟動(dòng)與應(yīng)用程序的加載由Linux腳本程序完成,腳本內(nèi)容如下:

3.3 ARM觸發(fā)DSP中斷

在雙核通信設(shè)計(jì)中設(shè)置中斷寄存器位SYSCFG_CHIPIN[2]與 SYSCFG_CHIPIN[3]為DSP 中 斷專(zhuān)用,因此ARM端可以通過(guò)對(duì)SYSCFG_CHIPIN[2]或[3]相應(yīng)位進(jìn)行置1操作,實(shí)現(xiàn)對(duì)DSP中斷的觸發(fā)。由于A(yíng)RM運(yùn)行的Linux系統(tǒng)采用虛擬內(nèi)存管理,寄存器的讀寫(xiě)首先需要將SYSCFG_CHIPIN寄存器物理地址映射到Linux用戶(hù)空間,然后再對(duì)用戶(hù)空間內(nèi)所對(duì)應(yīng)虛擬地址進(jìn)行置1操作。

DSP響應(yīng)ARM觸發(fā)的中斷則通過(guò)調(diào)用StarterWare軟件包中的DSP中斷控制函數(shù)實(shí)現(xiàn)。可以通過(guò)調(diào)用表2中API函數(shù)實(shí)現(xiàn)DSP的中斷控制。

表2 StarterWare DSP中斷控制函數(shù)Table 2 DSP interrupt control functions in StarterWare

3.4 DSP觸發(fā)ARM中斷

與ARM觸發(fā)DSP中斷類(lèi)似,DSP觸發(fā)ARM中斷可以直接對(duì)相應(yīng)寄存器位置1。為了直接捕獲DSP觸發(fā)的中斷,本設(shè)計(jì)編寫(xiě)了ARMLinux中斷響應(yīng)驅(qū)動(dòng)程序。該驅(qū)動(dòng)將對(duì)應(yīng)的中斷寄存器位注冊(cè)為外部輸入設(shè)備,通過(guò)對(duì)該設(shè)備的監(jiān)聽(tīng)來(lái)獲取中斷信息。中斷響應(yīng)的原理如圖4所示,當(dāng)ARM中斷被觸發(fā),即SYSCFG_CHIPIN[0]或[1]為1時(shí),該驅(qū)動(dòng)會(huì)向輸入子系統(tǒng)報(bào)告。輸入子系統(tǒng)隨即通知相對(duì)應(yīng)的事件管理器。事件管理器接收到通知后,將驅(qū)動(dòng)提交的輸入事件復(fù)制到相應(yīng)的緩沖區(qū)。ARM程序可以通過(guò)輸入設(shè)備的設(shè)備文件讀取事件的值。通過(guò)判斷讀取的值即可確定中斷源。

讀取與判斷的代碼實(shí)現(xiàn)如下:

3.5 共享內(nèi)存讀寫(xiě)

當(dāng)DSP或ARM捕獲到中斷后,就可以在中斷服務(wù)函數(shù)中進(jìn)行共享內(nèi)存的讀寫(xiě)。DSP讀寫(xiě)內(nèi)存使用直接指針轉(zhuǎn)換的方式。DSP程序直接對(duì)所要操作的共享內(nèi)存起始地址進(jìn)行指針轉(zhuǎn)換,再通過(guò)指針操作訪(fǎng)問(wèn)內(nèi)存中的數(shù)據(jù)。ARM讀寫(xiě)共享內(nèi)存時(shí),首先需要將共享內(nèi)存映射到應(yīng)用程序空間,然后才能通過(guò)指針訪(fǎng)問(wèn)內(nèi)存中的數(shù)據(jù)。

4 OMAP-L138雙核通信測(cè)試

利用廣州創(chuàng)龍公司提供的OMAP-L138測(cè)試開(kāi)發(fā)板TL138 Easy EVM設(shè)計(jì)前述介紹的基于直接中斷觸發(fā)的雙核通信程序。為了測(cè)試直接中斷觸發(fā)通信方式的效率,分別使用IPC與直接中斷觸發(fā)的方式完成一個(gè)FFT計(jì)算任務(wù),并對(duì)運(yùn)行時(shí)間與CPU占用情況進(jìn)行比較。

測(cè)試程序中ARM與DSP共同完成對(duì)給定時(shí)域數(shù)據(jù)的FFT計(jì)算。其中ARM負(fù)責(zé)與上位機(jī)進(jìn)行通信,下載時(shí)域數(shù)據(jù)以及上傳計(jì)算生成的頻域數(shù)據(jù)。DSP通過(guò)調(diào)用StarterWare工具包中的API函數(shù)完成FFT計(jì)算。

對(duì)比程序的設(shè)計(jì)中除了雙核通信部分,其他任務(wù)在兩種方法中實(shí)現(xiàn)代碼相同。表3為使用直接中斷觸發(fā)方式與使用IPC方式完成該任務(wù)的花費(fèi)時(shí)間與占用CPU情況。由表3中數(shù)據(jù)可知,本文提出的直接中斷觸發(fā)雙核通信方式用時(shí)更短,CPU占用率更低。

表3 直接中斷與IPC通信方式運(yùn)行結(jié)果比較Table 3 Comparison of running results of direct interrupt mode and IPC mode

5 結(jié) 論

本文通過(guò)直接中斷觸發(fā)的方式實(shí)現(xiàn)了OMAP-L138開(kāi)發(fā)板ARM與DSP處理器間的雙核通信,并通過(guò)測(cè)試程序完成了對(duì)通信方式的驗(yàn)證。測(cè)試結(jié)果顯示,該方式可以滿(mǎn)足雙核通信的要求,且比IPC組件方式實(shí)現(xiàn)簡(jiǎn)單,CPU占用更少,通信效率更高。

猜你喜歡
共享內(nèi)存開(kāi)發(fā)板雙核
全球金融“F20”在此召開(kāi)!橫瀝進(jìn)入“雙核”時(shí)代
通過(guò)QT實(shí)現(xiàn)進(jìn)程間的通信
基于Linux內(nèi)核的文件服務(wù)器模型的研究與構(gòu)建
基于PCI總線(xiàn)的多處理器協(xié)同機(jī)制研究
Microchip最新推出兩款PIC32 Curiosity開(kāi)發(fā)板
淺析單片機(jī)開(kāi)發(fā)板的設(shè)計(jì)與制作
新型夾心雙核配和物[Zn2(ABTC)(phen)2(H2O)6·2H2O]的合成及其熒光性能
Mouser為您呈上開(kāi)發(fā)關(guān)鍵之STMicroelectronics Nucleo開(kāi)發(fā)板
Arduino和Atmel發(fā)布Arduino Zero開(kāi)發(fā)板
三螺旋N-N橋連的雙核Co(Ⅲ)配合物的合成、結(jié)構(gòu)和性質(zhì)