用于引导U-Boot
用于引导Linux Kernel
petalinux工具可以构建2和3还有内核
BOOT.BIN包括fsbl,bitstream,用户程序(uboot)
image.ub包括了kernel(devicetree DTB和rootfs通过设置可选包不包含在ub内)
主要是分析下FSBL工程的main函数
调用ps7_init函数
主要是对PS端配置信息进行初始化 *** 作,包括MIO,PLL,CLK and DDR
我们在vivado软件中可以通过图形化的方式对ZYNQ PS端外设进行相关配置,那么这些配置信息会写入到hdf文件,SDK(或petalinux)会对hdf文件进行解析并生成对应的寄存器配置表,然后FSBL工程中会通过ps7_init函数将寄存器配置表写入到对应的寄存器中,完成对MIO/PLL/CLK/DDR等外设的硬件配置。
先调用Xil_DCacheFlush函数完成刷DCache缓存的 *** 作,然后再调用Xil_DCacheDisable禁用DCache缓存。
调用RegisterHandlers函数
调用DDRInitCheck函数
调用InitPcap函数
处理器配置访问端口
这个寄存器记录ZYNQ的启动方式(QSPI、SD、NAND、Nor、JTAG)
可以通过MIO3 MIO4 MIO5这三个引脚去配置ZYNQ的启动方式
ZYNQ上电复位的时候,会将这三个引脚的电平状态保存在BOOT_MODE寄存器当中。
每一种启动方式会有不同的处理方式。
第一、先初始化对应的flash设备
第二、再将MoveImage函数指针指向Flash设备的读写函数实体
调用LoadBootImage函数
FSBL的主要工作是启动U-Boot(终极目标),也要将bitstream文件加载到PL端。
找到U-Boot、bitstream
在读取U-Boot拷贝DDR中对应的加载地址,读取bitstream加载到PL端
调用FsblHandoff(HandoffAddress)
启动完U-Boot之后,FSBL的使命的就完成了。
你好!*** 作环境:ubuntu10.04lts X64_64bit,PlanAhead/XPS14.1
Zynq-700 EPP CTT
MT41K128M16HA-15E datasheet
1、建立完PSbase system后,可以配置了,下面开始DDR3的设置,在XPS下 *** 作。
2、在Zynq的tab下点击“memeryinterface”出现PS7 DDR Configuration 窗口,
为ZEDboard板卡上使用DDR3作为外部存储器,所以“Enable DDR Controller”要选上。然后就是“DDR ControllerConfiguration”中的参数选择了:
Memory Type:ZEDboard使用的是DDR3
Memory Part:使用的DDR3芯片型号为MT41J128M16HA-15E,
3、在ZedBoard 的硬件用户手册上说使用了MT41K128M16HA-15E型号的DDR3颗粒,与原理图有所不同,其实Micron的这2种颗粒都是DDR3的,不过MT41J仅是1.5V的,而MT41K是可以使用1.35V电压的,当然也兼容1.5V。
Effective DRAM Bus With:ZedBoard使用了2片MT41J128M16HA-15E,单片总线宽度为16bit,故此处选择32bit。
4、Operating Freq(MHZ) :接口时钟,根据ZedBoard的硬件用户手册,为533MHz,实际填写的是533.333313MHz,这是由于PLL分频不能正好分出整数值。该DDR3型号后面的-15E说明该芯片最大标准数率为1333Mbps,因此最大的接口频率就是667MHz。
Operating Temperature:DDR3器件的工作温度,默认就是0-85摄氏度,不用改了
在Traning/Board Detail栏中,将Write level 、Read gate、Read data 3个选项打钩,根据硬件用户手册的说明,这可以让DDR3性能处于最佳状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)