一、基础概念:
1、Zynq Linux启动流程:
步骤 | Step1 | Step2 | Step3 | Step4 | Step5 |
Zynq | BootROM | FSBL | U-boot | Kernel | BootFS |
说明 | 芯片内部固化启动程序,主要用于初始化芯片。 | Zynq这类异构类ARM特有的部分。用于管理PL部分的程序下载,对DDR芯片进行初始化,确定下一步应该执行的程序源自QSPI,NOR,JTAG,SD。 | Linux系统引导程序,用于启动后续的linux内核,挂载文件系统,运行APP程序等。遵循GPL条款的开放源码项目。 | Linux系统内核,统一版本,内核的开发管理在 Linux 基金会。在内核之上加载各自的文件系统,形成不同的发行版本,比如ubuntu debian等。 | Linux文件系统,不同的发行版本不同。 |
备注 | 详见图1 | First Stage Bootloader | Universal Boot Loader | Boot File System |
图1 BootROM的主要功能
【1】读取配置引脚电平,确定BOOT MODE,也就是确定程序从哪种接口进行读取执行。
【2】初始化PLL,使能或者不使能。
【3】初始化APU
【4】ROM CRC检查
【5】初始化BOOT MODE对应接口的引脚IO,如QSPI,NOR,SD,NAND等。
【6】下载并等待PL部分的程序加载完成。
【7】开始搜索BootROM Header,如果搜索到了一个合法的header,就会基于这个header加载FSBL
【8】被加载的FSBL可能是在存储器里直接运行或者是被加载到了DDR中运行。
【9】FSBL加载完毕后BootROM完成任务,由FSBL接管接下来的工作。
二、开发流程
【1】通过Vivado创建Zynq工程,得到硬件描述文件*.hdf。
【2】在Linux中运行source <petalinux安装路径>/setting.sh脚本,设置Petalinux的运行环境。
【3】在Linux中运行petalinux-creat -t project命令,创建petalinux工程。
【4】在Linux中运行