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卡)

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