zedboard--zynq开发和启动(三)
0赞哈哈,期待的板子到了,终于可以开始玩了,Zynq开发,zynq的开发有四种方式,纯PL开发,纯PS开发(helloworld),PS+PL(无操作系统,跑裸跑程序),PS+PL(跑操作系统)。
1.纯PL开发,这个和一般的xilinx的FPGA没有很大的区别。
2.纯PS开发,
典型的就是helloworld工程,这个看到了网友的有两种方式。注:这两个方式后面都有相应的实验。
一种是传统的arm的方式,这个可以参考懒兔子博客。
还一种就是xilinx方法,这个是生成一个elf文件,这个elf文件包括了硬件配置信息(xmp),和裸跑程序(c文件)。
3.PS+PL(不跑操作系统)开发,这个可以参考懒兔子博客二,三笔记,生成的elf文件包括了硬件配置信息(xmp),还有裸跑程序(c文件),另外还有一个.bit文件可以看出和纯PS开发的区别了。
4.PS+PL(跑操作系统)开发,这个就需要BOOT.BIN,设备树,linux内核镜像,文件系统了。
其中BOOT.BIN是由3部分组成的(boot.elf,.bit,.fsbl.elf),boot.elf这个是由交叉编译环境产生的,相当于ssbl吧,.bit文件是PL使用产生,fsbl.elf这个就是fsbl吧。
Zynq启动过程简介
1.在器件上电运行后,处理器自动开始Stage-0 Boot,也就是执行片内BootROM中的代码
2.BootROM会初始化CPU和一些外设,以便读取下一个启动阶段所需的程序代码,FSBL(First Stage Bootloader)。
不过这又有一个问题了----之前说到,Zynq支持多种启动设备,BootROM怎么知道从哪个启动设备里去加载FSBL?这就得靠几个特殊的MIO引脚来选择了:
BootROM会去读取MIO[2..8],从而确定启动设备,将选定设备的头192Kbyte内容,也就是FSBL,复制到OCM(On Chip Memory)中,并将控制器交给FSBL。
3,FSBL启动时可以使用整块256Kb的OCM,当FSBL开始运行后,器件就正式由咱自己控制了。Xilinx提供了一份FSBL代码,如果没什么特殊要求,可以直接使用。
按照手册说明,FSBL应该完成以下几件事。
1). 使用XPS提供的代码,继续初始化PS
2). 将bitstream写入PL(配置FPGA),不过这一步也可以以后再做
3). 将接下来启动用的Second Stage Bootloader(SSBL,一般就是U-Boot一类的东西),或者裸奔程序,复制到内存中
4). 跳到SSBL运行去
4,接下来的步骤就没啥特别了,Uboot开始运行,初始化好Linux启动环境,然后开始运行Linux系统。
注明:由于自己zedboard还没有开始玩,现在的理解和以后的理解可能又不一样。很多理解粗浅而鄙陋,恳请大家指正,希望大家一起学习进步。