話不多說,進入今天的主題:生成zynq裸核啟動文件。

注意:如上圖所示,
Core0 工程建立時選擇ps7_cortexa9_0,
Core1 工程建立時選擇ps7_cortexa9_1
完成后如下圖所示:


2. 配置Core1即從核中的BSP文件


在下圖中畫圈處,配置:-DUSE_AMP=1


3. 配置Core0和Core1的DDR空間分配
通過修改lscript.ld文件中的內容,可以改變在存儲器中的執行位置, 因為ELF文件是加載到DDR中執行的,所以兩個DDR地址不能重合
Core0的配置 :畫圈處棧空間也要分配,防止溢出
Core1配置

4. 建立FSBL文件,并配置main()文件
配置main() 跟第三步中的DDR空間配置有關
在FSBL的src中找到main.c文件打開,在里面添加下面一段代碼,用于啟動CPU1:
#define sev() __asm__("sev")
#define CPU1STARTADR 0xFFFFFFF0 //Core1 DDR配置中的SIZE大小
#define CPU1STARTMEM 0x10000000 //Core1 DDR配置中的起始地址
void StartCpu1(void)
{
#if 1
Xil_Out32(CPU1STARTADR, CPU1STARTMEM);
dmb(); //waits until write has finished
sev();
#endif
}
將上面的代碼在main()中添加到:Load boot image的位置,將CPU1的啟動函數,放置于此位置,改動后的代碼段如下:
5. 生成mcs文件和燒寫mcs文件到QSPI Flash
單擊‘Core1’,選擇Xilinx Tools –> Create zynq boot image,選擇Add,選擇文件…/ Core1/Debug/ Core1.elf,點擊打開。然后選擇Core1.elf, Core0.elf在Core1.elf上面。然后在Output pach后面把boot.bin修改為Boot.mcs。然后點擊 Create Image
選擇文件生成存儲地址
選擇MCS
畫圈處是添加的文件
順序為:FSBL.elf .bit文件 Core0.elf Core1.elf
點擊Create Image 生成.mcs文件
6. 完成操作將.MCS文件燒寫進板子里
bin文件用來燒寫到SD卡,mcs文件用來燒寫到QSPI flash中
選擇Xilinx Tools –> Program Flash,在Image File后面選擇剛才生成的Boot.mcs文件,Offset為0x0,Flash Type為qsip_single。勾選Blank check after erase和Verify after flash。檢查開發板上電和連線狀況,然后點擊Program

編輯:hfy
-
存儲器
+關注
關注
39文章
7739瀏覽量
171699 -
DDR
+關注
關注
11文章
755瀏覽量
69147 -
Vivado
+關注
關注
19文章
857瀏覽量
71141
發布評論請先 登錄
從零開始馴服Linux(一):ZYNQ-Linux啟動文件構建全解析
關于zynq啟動的問題,求達人解答!
玩轉Zynq連載29——[ex51] 制作裸跑程序的啟動文件BOOT.bin
Zynq在非JTAG模式下的啟動配置流程
ZYNQ-7000如何生成從Flash和SD卡啟動的鏡像文件
生成zynq裸核啟動文件步驟解析
評論