3.1 固化簡介
如果需要板卡中程序掉電不丟失,則需要對程序進行固化,ZYNQ7000 SOC芯片可以從Flash啟動,也可以從SD卡啟動,上電后,ZYNQ根據模式管腳的設定,選用boot的方式。
核心模式開關:
啟動模式:
固化ZYNQ程序需要為這個程序做一個鏡像文件,該鏡像文件需要PL側的bit文件,PS側的elf文件,還需要一段代碼將bit文件和elf文件配置,這段代碼就是FSBL.elf。
因此制作一個鏡像文件需要三個文件:
(1)、.bit
(2)、.elf
(3)、FSBL.elf
3.2 SD卡啟動
從SD卡啟動需要將鏡像文件固化到SD卡,設置撥碼開關,使系統從SD模式啟動。那么每次斷電后,系統都會從SD卡啟動。
ZYNQ的啟動過程與大多數arm類似,啟動過程分為三個階段,階段0、階段1、階段2:
階段0:
傳統的bootROM過程,ZYNQ的ROM中固化了一段不可修改的程序,只要ZYNQ一上電,這段程序就會執行,它將對ZYNQ的NAND、SD等基本外設控制器進行初始化。把SD卡這類易失的存儲器件進行初始化后,就會把其中的程序拷貝到ZYNQ的OCM(On Chip Memory)。這個被拷貝到RAM上執行的程序就是要制作的文件——BOOT.bin。
階段1:
BOOT.bin加載到OCM上開始執行,BOOT.bin由FSBL.elf+工程.bit+工程.elf構成,階段1首先配置PS部分,PS部分完成初始化后,再配置PL部分,最后去加載階段2的代碼。
階段2:
可選,配合Linux啟動過程。
制作BOOT.bin文件:
對應於原理圖上的:
3.3 QSPI Flash固化
設置撥碼開關,將鏡像文件燒寫進FLASH,使系統從QSPI-FLASH模式啟動,那么每次斷電后,系統都會從FLASH啟動。
制作BOOT.bin文件:
對應於原理圖上的:
3.4 生成BOOT.bin文件
新建vivado工程,生成bitstream,導出到SDK,程序設計,然后!創建一個FSBL工程,在要固化的工程上右擊,選擇create boot Image,然后可以看到
然后選擇Create Image,即可在當前工程下bootimage目錄下看到boot.bin文件,將該BOOT.bin文件復制到SD卡,斷電情況下設置撥碼開關,之后上電,開機后系統從SD卡啟動,掉電后程序也不會消失。(放到SD卡的bin文件,文件名必須是BOOT.bin,否則不識別)