EBAZ4205矿板petalinux开发 LINUX工程

EBAZ4205矿板的教程目前大部分都停留在hello world以及点灯阶段,对于Linux系统的移植网上的其他教程一般是自己用linux的相关源码进行编译生成,对初入门的新手比较不友好。而参考网络上目前较多的petalinux教程,由于EBAZ4205的野生属性,因此直接照搬使用时在启动阶段有些会出现u-boot无法加载kernel的情况,或者加载kernel不完全,出现数据覆盖产生错误。这里记录一下我自己的研究的一些结果。由于本人也是刚入门,因此有问题的地方还请各位大佬指正。

 

########注意:本文使用VIVADO 2019.02 完成!Petalinux 使用同步的2019.02 版本!###########

 

首先第一步hello world 工程的建立可以参考hhuysqt大佬的文章:https://hhuysqt.github.io/zynq1/(需要梯子查看)

大佬的第二篇linux移植是基于源码的移植,有兴趣的可以查看。我使用的是petalinux移植,与大佬的移植相比要傻瓜操作的多。

 

按照hhuysqt的介绍完成第一步建立后按照Xilinx的petalinux手册UG1144介绍,你需要额外添加一个TTC模块,且这个模块不应该被使用。添加完成后ARM区域使用的模块如图所示

 

编译后导出硬件,这里和hello world 工程部分一致。

然后建立linux虚拟机,我使用的是ubuntu 18.04.2版本,petalinux2019.02最高的推荐版本是此版本,使用ubuntu 18.04.4版本也可以安装,但有大佬指出其有不可预测的bug存在。Ubuntu20版本直接无法安装。

在linux虚拟机中,由于我目前不需要修改开发,因此虚拟机中只安装了petalinux,安装过程参考UG1144手册很容易便能完成。

下一步是将导出的硬件描述.xsa文件移入linux工作目录中。

1.  ubuntu中先在命令行中使用 source 命令加载petalinux环境。如  source /opt/petalinux/settings.sh 

2.  使用指令petalinux-create 创建工作区域,如 petalinux-create --type project --template zynq --name test3

3.  cd 打开创建的petalinux工作区域

4.  加载.xsa的硬件描述,注意此处为.xsa文件目录,不直接指向.xsa文件,如 petalinux-config --get-hw-description=./

5.  加载后会弹出控制窗口,此处由于EBAZ4205的特点需要设置加载位置,该设置由u-boot configuration下的netboot offset处理。这里改设置为0x08000000,默认是0x10000000。(0x08000000可以修改为其他值,这里是我的工程设置在这里就够了,它影响uboot中kernel的加载位置,以不会超区同时不会覆盖其他文件数据为准)

 

6.  然后在AUTO hardware setting下修改image storage 的储存位置。由于hello world 中包含NAND因此uboot会默认将环境变量储存在NAND中,这里修改到sd卡上(这里主要是不修改的话好像它就不能加载正确的环境值而全部使用的是petalinux默认的环境值,而默认的加载点0x10000000会报image.ub被覆盖的错)

7.  然后直接petalinux-build 就可以了,这里要注意修改后需要使用   petalinux-build -x mrproper -f
命令去清除之前编译的缓存,不然有时不会更新编译你的修改,这一点很奇怪。

8.  编译好后使用打包命令打包,如:petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga system_wrapper.bit --u-boot --force (指令的具体参数可以看UG1157)\

9.  打开工程下images下的linux文件夹可以看见boot.bin image.ub ,他们两个拷贝到FAT32格式化的SD卡就可以了(注意,在petalinux2020的版本中,增加了一个boot.scr文件,在2020版本中你需要拷贝boot.bin image.ub boot.scr 这三个文件到SD卡)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章