1. 程式人生 > >zynq7 雙核處理器的最簡單例子

zynq7 雙核處理器的最簡單例子

今天終於有時間做這個事情。

首先從官方下載XAPP1079看看。

官方的X1079是基於XPS和SDK。並且也牽扯到了PL部分。

我們循序漸進,只實現兩個處理器分別跑,沒有聯絡,沒有通訊和對話。

實驗就先實現CPU0通過串列埠輸出字串,而CPU1則獨立控制MIO7的LED進行閃爍。

因為不牽扯PL部分的配置和邏輯編寫了,我們接下來面臨三大部分要處理:

1, 編寫FSBL。這裡的FSBL跟我們以往單處理器的FSBL沒有多大差別,做了初始化處理器的工作,之後就拷貝檔案,拷貝檔案之後就執行使用者程式。

2,編寫CPU0的應用程式,這裡注意CPU1是由CPU0啟動,CPU1啟動的時候的PC指標設定的地址再0XFFFFFFF0這個地址裡,這個地址是OCM的最高地址的32BIT。

CPU0執行 *(unsigned int *)0xfffffff0 = CPU1_PC,設定CPU1啟動地址之後就開始執行SEV彙編指令,啟用CPU1開始執行。

3,CPU1需要執行的應用程式,也要編寫一下,因為這裡不涉及PL,不涉及中斷,不涉及與CPU0的互斥和同步,所以寫CPU1的應用程式很隨意。

我們按步就班來進行操作:

STEP1: 編寫FSBL。我們這裡之前的視訊22就是使用BOOTGEN將核心,以及RAMDISC都生成一個單獨檔案。那時候我們指定了檔案存放在處理器儲存器的實體地址,這裡我們也,但是我們這裡我們要搬移的是兩個ELF檔案,ELF檔案本身就有目的地址的資訊,FSBL也會根據這個目的地址進行搬運。我們唯一關心的是在兩個ELF搬運完畢後,如何讓FSBL停止搬運。看程式碼:

<繼續進行中。。。。>

SYSCLK.TAOBAO.COM