話不多說,進(jìn)入今天的主題:生成zynq裸核啟動(dòng)文件。
注意:如上圖所示,
Core0 工程建立時(shí)選擇ps7_cortexa9_0,
Core1 工程建立時(shí)選擇ps7_cortexa9_1
完成后如下圖所示:
2. 配置Core1即從核中的BSP文件
在下圖中畫圈處,配置:-DUSE_AMP=1
3. 配置Core0和Core1的DDR空間分配
通過修改lscript.ld文件中的內(nèi)容,可以改變?cè)诖鎯?chǔ)器中的執(zhí)行位置, 因?yàn)镋LF文件是加載到DDR中執(zhí)行的,所以兩個(gè)DDR地址不能重合
Core0的配置 :畫圈處??臻g也要分配,防止溢出
Core1配置
4. 建立FSBL文件,并配置main()文件
配置main() 跟第三步中的DDR空間配置有關(guān)
在FSBL的src中找到main.c文件打開,在里面添加下面一段代碼,用于啟動(dòng)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的啟動(dòng)函數(shù),放置于此位置,改動(dòng)后的代碼段如下:
5. 生成mcs文件和燒寫mcs文件到QSPI Flash
單擊‘Core1’,選擇Xilinx Tools –> Create zynq boot image,選擇Add,選擇文件…/ Core1/Debug/ Core1.elf,點(diǎn)擊打開。然后選擇Core1.elf, Core0.elf在Core1.elf上面。然后在Output pach后面把boot.bin修改為Boot.mcs。然后點(diǎn)擊 Create Image
選擇文件生成存儲(chǔ)地址
選擇MCS
畫圈處是添加的文件
順序?yàn)椋篎SBL.elf .bit文件 Core0.elf Core1.elf
點(diǎn)擊Create Image 生成.mcs文件
6. 完成操作將.MCS文件燒寫進(jìn)板子里
bin文件用來燒寫到SD卡,mcs文件用來燒寫到QSPI flash中
選擇Xilinx Tools –> Program Flash,在Image File后面選擇剛才生成的Boot.mcs文件,Offset為0x0,F(xiàn)lash Type為qsip_single。勾選Blank check after erase和Verify after flash。檢查開發(fā)板上電和連線狀況,然后點(diǎn)擊Program
編輯:hfy
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7653瀏覽量
167422 -
DDR
+關(guān)注
關(guān)注
11文章
732瀏覽量
66831 -
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68785
發(fā)布評(píng)論請(qǐng)先 登錄
ZYNQ開發(fā)案例之ZYNQ的UART加載

從零開始馴服Linux(一):ZYNQ-Linux啟動(dòng)文件構(gòu)建全解析
關(guān)于zynq啟動(dòng)的問題,求達(dá)人解答!
玩轉(zhuǎn)Zynq連載29——[ex51] 制作裸跑程序的啟動(dòng)文件BOOT.bin
Zynq在非JTAG模式下的啟動(dòng)配置流程
IP核生成文件
ZYNQ-7000如何生成從Flash和SD卡啟動(dòng)的鏡像文件

ZYNQ-7000如何生成從Flash和SD卡啟動(dòng)的鏡像文件

評(píng)論