新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 裸機(jī)AMP(非對(duì)稱多進(jìn)程處理模式)

裸機(jī)AMP(非對(duì)稱多進(jìn)程處理模式)

作者: 時(shí)間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

在上一篇博客中,我們已經(jīng)將 啟動(dòng)并運(yùn)行起來,在(非對(duì)稱多進(jìn)程處理)模式下使用了兩個(gè)ARM Cortex-A9 MPCore處理器,然而因?yàn)樯弦黄┛鸵呀?jīng)相當(dāng)長(zhǎng)了,我沒有詳細(xì)的介紹軟件方面的工程細(xì)節(jié)。

本文引用地址:http://www.butianyuan.cn/article/201710/365673.htm

其實(shí) 在兩個(gè)處理器上運(yùn)行的軟件工程也非常的簡(jiǎn)單。這里我將為你們展示通過OCM(片上存儲(chǔ)器件)實(shí)現(xiàn) 的兩個(gè)處理器之間的通信。然而,現(xiàn)在的軟件工程非常的簡(jiǎn)單,因此我們可以從這個(gè)基礎(chǔ)工程開始,繼續(xù)完善。

上周我們完成的例子中的軟件工程主要完成以下幾個(gè)任務(wù):

Core 0 是主設(shè)備,它可以激活Core 1。它也利用了片上的UART串口以固定的延遲向一個(gè)終端輸出打印信息。這個(gè)延遲不適用定時(shí)計(jì)數(shù)器等,盡管在這里使用私有的定時(shí)計(jì)數(shù)器很容易,我將在后面的博客中介紹同時(shí)使用兩個(gè)私有的定時(shí)計(jì)數(shù)器。

一旦Core 0 啟動(dòng)起來,Core 1初始化它的私有資源,輸出切換信號(hào),控制位于MicroZed I/O擴(kuò)展板上的八個(gè)LED燈亮滅,這里我們需要使用Core 1私有的定時(shí)計(jì)數(shù)器和通過GIC使能中斷,實(shí)現(xiàn)以上功能。

這些應(yīng)用程序之間是沒有聯(lián)系的,它們并不分享資源。然而,接下來我們想讓這些應(yīng)用程序之間能夠通信,分享資源。

運(yùn)行在 Core 0上的應(yīng)用程序是非常簡(jiǎn)單的。它主要實(shí)現(xiàn)的是激活運(yùn)行在Core 1上的應(yīng)用程序,然后在一個(gè)無限循環(huán)中通過UART 0輸出打印出一段簡(jiǎn)單的信息。

然而,我們計(jì)劃使用Core 1的中斷控制器,所以第一步我們必須配置GIC(通用中斷控制器),將下圖所示的代碼加入到Core 0的應(yīng)用程序的源代碼文件中:

Core 1的應(yīng)用程序代碼可能要更加復(fù)雜一些,因?yàn)槲覀円?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/Zynq">Zynq 的PL(可編程邏輯)部分調(diào)用GPIO模塊,用于驅(qū)動(dòng)控制MicroZed I/O擴(kuò)展板上的LED燈。同賽靈思其他的接口一樣,standalone OS使用一句 #include “xgpio.h”代碼就提供了gpio接口的驅(qū)動(dòng)信息,這個(gè)文件與我們之前驅(qū)動(dòng)PS部分的MIO/EMIO GPIO接口所使用的xgpio_ps.h文件有一些小的不同,在這個(gè)例程中我想為大家展示如何在Zynq SoC的PL部分使用GPIO接口。

為了確保我們能夠看出LED燈的亮滅狀態(tài)的切換,我們將使用Core 1私有的定時(shí)器,這與我們之前使用Core 0定時(shí)器是一樣的。

在 Core 1的程序開始執(zhí)行它的主程序之前,我們需要禁止片上存儲(chǔ)(OCM)的緩存功能,初始化GPIO接口,初始化私有的定時(shí)器,和配置中斷控制器,這樣私有的定時(shí)器中斷才能夠被用來控制LED燈亮滅狀態(tài)的切換。我們將使用Zynq SoC應(yīng)用程序和禁止緩存的異常機(jī)制完成這些功能。

現(xiàn)在我們可以開始編寫相當(dāng)簡(jiǎn)單的中斷服務(wù)程序,當(dāng)私有的定時(shí)器計(jì)時(shí)結(jié)束然后重新計(jì)時(shí)時(shí),這些中斷服務(wù)程序就能夠控制LED燈的亮滅。這個(gè)處理過程會(huì)一直進(jìn)行,我選擇使用十六進(jìn)制的AA和55交替轉(zhuǎn)變賦值給LED燈,控制LED燈的亮滅狀態(tài)。這個(gè)選擇將會(huì)是所有的LED燈“流動(dòng)起來”,與所有LED燈的全亮或者全滅狀態(tài)是有一些區(qū)別的。

下圖是程序執(zhí)行的結(jié)果,通過Core 0輸出到終端對(duì)話框窗口:



關(guān)鍵詞: AMP Zynq SoC

評(píng)論


相關(guān)推薦

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

關(guān)閉