zynq的双核裸机程序如果要烧写到FLASH里启动,其实和单核的烧写步骤差不多,只是多了一个在CPU0启动CPU1的过程。具体内容如下。
1. 创建FSBL工程,选择官方的FSBL例程即可,一般来说可以不用修改直接用。
2. 创建CPU0工程,CPU选择ps7_cortexa9_0 , 在主函数中添加下列代码以便启动CPU1
void start_CPU1(unsigned int PC ){
//Disable cache on OCM
Xil_SetTlbAttributes(0xFFFF0000,0x14de2);
// S=b1 TEX=b100 AP=b11, Domain=b1111, C=b0, B=b0
*(volatile unsigned int *) (0xfffffff0) = PC ;
dmb();
__asm__("sev");
}
参数PC为CPU1的程序起始地址,COU0和CPU1的存储地址要间隔开。
3. 创建CPU1工程, CPU选择ps7_cortexa9_1.
4. 生成烧写文件BOOT.BIN或BOOT.mcs , bin文件用来烧写到SD卡,mcs文件用来烧写到QSPI flash中 , 这里生成MCS文件, 可以选择SDx里的Create Boot Image 选项生成,也可以使用其他的生成工具。
5 . 将生成好的BOOT.mcs文件通过 program flsh烧写到你的板卡里。