之前章節(jié)中涉及到PS端的裸機程序都是在CPU0上運行的,弄的差點就忘了ZYNQ是擁有兩個A9硬核的強勁芯片,所以我們必須要學會怎么讓兩個CPU核心同時運行,不然就和之前開發(fā)單片機有什么區(qū)別呢?本章我們就來探索如何實現(xiàn)雙核的AMP啟動(PS:博主以前是開發(fā)單片機和FPGA過來的)。
ZYNQ雙核啟動方式簡介
非對稱多處理器啟動(AMP啟動)
這個模式啟動可以用語使用多個CPU核的系統(tǒng)上,比如像ZYNQ這樣的多核芯片上,在這種模式下,每個CPU核可以運行自己的操作系統(tǒng),比如可以CPU0跑裸機而CPU1跑FreeRTOS系統(tǒng),再比如CPU0跑FreeRTOS系統(tǒng)而CPU1跑LINUX系統(tǒng);而CPU之間的通訊是通過共享內(nèi)存的方式進行的。
對稱多處理器啟動(SMP啟動)
在該啟動模式下所有的CPU必須是完全相同的構(gòu)架,并且所有CPU必須運行單個操作系統(tǒng)一起運行,這個操作系統(tǒng)把進程任務分派到各個CPU上,并且加以協(xié)調(diào)。和AMP一樣,CPU之間是通過共享內(nèi)存來做通信,以及任務執(zhí)行的協(xié)調(diào)。所以SMP的啟動方式不適合在裸機以及RTOS環(huán)境下實現(xiàn)。
兩種啟動方式的比較
下圖描述了AMP和SMP的不同,以及他們在ZYNQ平臺上的對應關(guān)系:其性能的不同如下所示:
AMP啟動的實現(xiàn)
我們本節(jié)工程是基于 ZYNQ進階之路7 章節(jié)的內(nèi)容實現(xiàn)的,在ZYNQ進階之路7 章節(jié)中我們輸出了兩路PWM波實現(xiàn)呼吸燈的功能,在本章節(jié)中我們分別使用CPU0和CPU1控制兩個LED等實現(xiàn)兩個呼吸燈的功能,我們再通過邏輯在PL端增加兩個端口輸出PWM控制LED,這兩個LED實現(xiàn)和前面兩個LED同步呼吸的功能。首先打開 ZYNQ進階之路7 中的工程如下所示:新建verliog文件輸入以下代碼,代碼中的50M時鐘我們使用PL端的50M晶振提供,所以和PS端屬于異步時鐘,因為PS端提供給PL端的時鐘也為50M,所以這里我們對其進行簡單的跨時鐘域處理,多周期同步,對兩個PWM信號進行打兩個時鐘節(jié)拍的方式實現(xiàn)同步,這種方式能解決一些簡單的異步時鐘域問題:將PWM.v文件加入Diagram窗口中:
將信號線引出到指定接線上:對引腳進行綁定:然后生成硬件bit文件,導出硬件,打開SDK進行軟件編程:然后分別創(chuàng)建CPU0和CPU1的兩個工程,在下圖中選擇:創(chuàng)建后如下圖所示,其中1為CPU0的工程,2為CPU2的工程:在CPU0的工程中輸入如下代碼:在CPU1工程中輸入如下代碼:修改CPU0的DDR3基地址:修改CPU1的DDR3基地址(注意兩個CPU的地址不能發(fā)生沖突):右鍵點擊CPU1工程,選擇BSP setting選項:在此處添加如下附加信息:然后就可以將兩個工程編譯后,在run config中設(shè)置如下選項:然后點擊run即可將程序下載到芯片中了,這是可以看到4個LED一兩個一對的方式實現(xiàn)呼吸燈功能了。在下一章節(jié)我們將講解如何將雙核程序固化到SPI flash中。
-
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211746 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6822瀏覽量
123331 -
Amp
+關(guān)注
關(guān)注
0文章
81瀏覽量
47160
原文標題:ZYNQ進階之路--AMP模式 雙核同時運行
文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論