文章目录
1 zynq启动流程
在没有外部JTAG的情况下,PS和PL都要依靠PS来完成芯片的初始化配置
配置控制模块分成两部分
- 启动存储区(BootROM):ARM和上电启动时执行的静态存储区
- 芯片配置单元:控制JTAG debug
所以zynq的启动分成两种:BootROM主动启动和JTAG被动启动
1.1 BootROM
不使用JTAG的情况下,ARM从BootROM中开始执行代码。PS所有模块中,CPU总是最先启动的。
BootROM中的代码负责加载stage1的启动镜像,当BootROM将控制权交给stage1以后,用户代码掌握整个系统的控制权,想要重新执行BootROM只能重启
1.2 FSBL(first stage boot loader)
FSBL是BootROM之后启动的引导程序,FSBL完成的工作有
FSBL阶段PL的配置不是必须的可以不配置PL部分
对于zynq平台而言,PL的bit文件、SSBL、裸跑的应用程序、linux内核都必须组织成flash分区镜像
1.3 SSBL
如果是裸跑的程序,那么可以省略,对于操作系统而言,是为操作系统进行初始化工作的
对于zynq平台的linux系统而言,U-BOOT就是SSBL,是linux社区一个开源的引导文件
2 Linux启动过程
选自http://blog.sina.com.cn/s/blog_b35897360102x5jg.html
嵌入式Linux从软件层面考虑分成四个部分
- 引导文件(BootLoader):U-boot,SSBL阶段
完成linux内核初始化内存,初始化外设,为内核拷贝设备树镜像文件到内存中
之后U-boot姜系统控制权交给Linux内核 - linux内核
初始化、驱动设备的初始化和挂载 - 文件系统:文件系统对一个存储设备上的数据和元数据进行组织的机制,文件系统不仅包含着文件的数据还包含着文件系统的结构
- 应用程序
3 linux移植
设置交叉编译工具,得到三个东西
- BootLoader:boot.bin=FSBL.elf+PL部分的bit+uboot.elf
- linux内核:zImage+dtb
zImage是压缩的Image
和设备树device tree blob(U-Boot用来传递参数给Linux内核参数的一种文件形式) - 文件系统:ramdisk或Linaro
3.1 概念区分
https://www.cnblogs.com/linhaostudy/p/6735697.html
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。
uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。
其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数
平时调试用uImage,不用去管调整了哪些东西;zImage则是一切OK后直接烧0X0。开机就运行。
https://blog.csdn.net/xiabodan/article/details/46861139里有一句话:
Now we need to put BOOT.bin, devicetree.dtb, and uImage onto the FAT32 boot partition.
4 petalinux使用
来自https://blog.csdn.net/u013793399/article/details/53054734
https://blog.csdn.net/xiang_shao344/article/details/83144126
4.1 创建工程
- 利用BSP生成一个工程
petalinux-create -t project -s ~/Desktop/BSP/zc706.bsp
-t 表示的是 type,类型是project,-s 表示 source,源是你的BSP文件 - 自定义工程
petalinux-create -t project --template zynq --name test_proj
template属性可以选择zynq,zynqMP,microblaze
4.2 硬件配置(利用BSP生成一个工程可跳过)
指定hdf文件
petalinux-config --get-hw-description=~/Desktop
注意参数是存有hdf文件的路径,而不是文件本身
貌似不用改什么
4.3生成镜像
petalinux-build
在"/images/linux" 目录下生成对应各平台的petalinux系统镜像文件:
4.3.1 如果要生成uImage,如果需要的话
petalinux-package --image -c kernel --format uImage
4.3.2 生成引导镜像
petalinux-package --boot --fpga xxx.bit --u-boot
生成引导镜像文件:BOOT.bin