寫(xiě)的是Zynq 7000系列的,arm有兩個(gè)核。主要有AMP和SMP兩種方式,SMP是兩個(gè)核運(yùn)行一個(gè)操作系統(tǒng),跑LINUX的話,使能SMP,資源會(huì)自動(dòng)分配給兩個(gè)核運(yùn)行。AMP是兩個(gè)核獨(dú)立運(yùn)行,每個(gè)核可以運(yùn)行操作系統(tǒng)也可以裸機(jī)運(yùn)行。
兩個(gè)CPU的啟動(dòng)方式是CPU0先運(yùn)行,然后根據(jù)需要啟動(dòng)CPU1。
ZYNQ會(huì)先運(yùn)行一個(gè)fsbl程序,再運(yùn)行應(yīng)用程序。因此啟動(dòng)CPU1的工作可以在fsbl中做,也可以在應(yīng)用程序中做。
1 在FSBL中啟動(dòng)CPU1
FSBL程序可以在VITIS這個(gè)軟件中生成。
在FSBL中添加以下程序來(lái)啟動(dòng)CPU1
Xil_Out32(0XFFFFFFF0, CPU1程序地址);
dmb();
sev(); //喚醒 CPU1
此段程序加在FSBL程序的HandoffAddress = LoadBootImage()之后,LoadBootImage()的作用的是將程序拷貝到ddr中,先將程序拷貝到ddr中,程序才能跳轉(zhuǎn)運(yùn)行。
1.1 CPU0運(yùn)行裸機(jī)程序
fsbl啟動(dòng)兩個(gè)CPU的應(yīng)用程序
1.2 CPU0運(yùn)行操作系統(tǒng)(Linux)
uboot就是CPU0的應(yīng)用程序
2 應(yīng)用程序啟動(dòng)CPU1
2.1 CPU0運(yùn)行裸機(jī)程序
在CPU0的應(yīng)用程序中喚醒CPU1,程序一樣,如下:
Xil_Out32(0XFFFFFFF0, CPU1程序地址);
dmb();
sev(); //喚醒 CPU1
2.2 CPU0運(yùn)行操作系統(tǒng)(Linux)
可以在UBOOT中喚醒CPU1,也可以在運(yùn)行內(nèi)核后喚醒CPU1。
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208717 -
SMP
+關(guān)注
關(guān)注
0文章
71瀏覽量
19614 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6684瀏覽量
123140 -
Amp
+關(guān)注
關(guān)注
0文章
81瀏覽量
47110 -
Zynq
+關(guān)注
關(guān)注
9文章
607瀏覽量
47101
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論