話不多說,進入今天的主題:生成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
-
存儲器
+關注
關注
38文章
7633瀏覽量
166385 -
DDR
+關注
關注
11文章
731瀏覽量
66368 -
Vivado
+關注
關注
19文章
828瀏覽量
68206
發布評論請先 登錄
從零開始馴服Linux(一):ZYNQ-Linux啟動文件構建全解析
關于zynq啟動的問題,求達人解答!
玩轉Zynq連載29——[ex51] 制作裸跑程序的啟動文件BOOT.bin
Zynq在非JTAG模式下的啟動配置流程
ZYNQ-7000如何生成從Flash和SD卡啟動的鏡像文件

評論