Petalinux BSP設計中的問題及注意事項

相比從Xilinx官方網站上下載的u-boot源碼包、linux源碼包、設備樹文件夾製作BSP的方式,Petalinux工具直接製作BSP有很大的改動。

1、之前應用程序是採用交叉編譯鏈Xilinx ARM GNU/Linux Toolchain,使用Petalinux工具製作的BSP運行應用程序需要使用交叉編譯鏈Xilinx ARM v7 GNU/Linux Toolchain

雖然差別不大,但是如果不進行改變會導致運行應用程序提示No such file or directory 的錯誤。

2、之前沒有測試過pthread_exit()函數的運行情況,不過我模糊記得是可以運行,沒有問題的。後面有時間再驗證一下。但是使用Petalinux工具製作的BSP竟然說需要安裝額外的庫(也就是libgcc_s.so.1),查了一下,發現/lib與/usr/lib下果然都沒有這個庫。但是需要注意的是以這個名稱命名的庫版本衆多。不是隨便哪個就可以用的。我是到Xilinx SDK安裝目錄下搜索這個庫,發現也不止一個,但是顯然我很需要的是D:\Xilinx\SDK\2016.4\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\lib下面的那個。把他拷貝到新BSP的文件系統的/lib目錄下就可以了。

 

3、抱歉,我不是一個對技術感興趣的人,對於科研項目中遇到的問題我總是用一些野路子去解決,有時候雖然解決了,但是自己也不知道原因何在,這叫做不知其所以然。就像2中所提到的,其實根本不正規。我們應該使用petalinux-config -c rootfs命令來配置linux文件系統中到底需要哪些庫,我看了一下,居然有sqlite的庫,這樣很多庫我們都不需要單獨移植了,省了很多事,只需要在配置的時候將他們打上“*”號,編譯進文件系統。就像libgcc_s.so.1這個庫也有選項,我是選上了libgcc-xilinx和libgcc-xilinx-dev兩個庫,並且爲了保險起見,我還修改了/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/configs目錄下的rootfs_config文件(後來經我驗證,其實不需要修改),搜索和pthread相關的配置設置爲“=y”,表示也編譯進文件系統。

 

4、關於petalinux使用操作指南(UG1144),我不得不說裏面有一些錯誤。但這次不是因爲它本身的錯誤,我想讓linux不輸入密碼自動登錄,也就是PetaLinux Auto Login,參考UG1144,步驟都是對的,可編譯一開始總是報錯,錯在EXTRA_IMAGE_FEATURES=”debug-tweaks”這條命令。原因是我是直接在PDF文件中將這條指令複製到了配置文件,其實應該手動輸入,因爲直接複製過去會有一些你看不到的編碼錯誤。就像我們有時候使用IDE編寫程序,經常會有一些空格造成編譯失敗,差不多一個道理。

我是添加在文檔末的一個位置:

# Extra settings from environment:
MACHINE = "zynq-generic"
EXTRA_IMAGE_FEATURES="debug-tweaks"
UNINATIVE_CHECKSUM[x86_64] = '73acee29ce60a6c6385717d570e9f2b4f1aae7bb8fefddff8c0498161a1a8960'
include conf/plnxtool.conf

 

5、關於petalinux u-boot啓動的時候BOOTP boardcast時間太長的問題,我一開始不知道居然可以直接用CTRL+C中斷。後來我還是在u-boot配置中,也就是一開始使用petalinux-config命令的時候,將u-boot的IP地址設置爲不自動獲取,使用默認的192.168.0.10.(不要設置MAC地址隨機獲得,編譯容易出錯,我不知道什麼原因。我目前是在設備樹中指定MAC地址,這樣會導致導致使用該BSP的所有主板的MAC地址相同,但暫時對我沒有什麼影響。)其他的選項都不需要修改。

 

 

6、目前看來像我這樣已經做出一個版本的BSP,後面如果想要重新複用,在此基礎上修改,主要涉及到/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user目錄下所有用戶自己的配置。主要需要注意的是/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user/recipes-kernel/linux目錄下linux-xlnx_%.bbappend文件中補丁文件的路徑和linux內核配置文件的路徑。默認是沒有補丁文件路徑的,需要自己添加。(如果補丁文件以及內核配置項可以複用最好,直接複製過來,什麼都不需要更改。)

注意:/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user/recipes-apps下的應用工程需要新建,否則不會寫入文件系統的編譯配置。新建之後可以隨意替換應用程序主文件夾下所有文件。

 

7、還有重要的一點就是設備樹的修改。最好能夠找到設備樹的修改規則,找到對應開發板的官方樣例設備樹文件,進行對照修改。需要選擇官方Peatlinux BSP工程,如果沒有DTS文件,需要自己反編譯DTB文件。

 

一些petalinux指令:

//新建petalinux工程
petalinux-create --type project --template zynq --name <PROJECT_NAME>
cd <plnx-proj-root>
petalinux-config --get-hw-description=<path-which-contains-hardwaredescription-file>

//創建petalinux Application
cd <plnx-proj-root>
petalinux-create -t apps --name lteconnect --enable
petalinux-create -t apps --name startup --enable

//local-mac-address = [00 0a 35 00 1e 53];

生成BOOT.BIN文件
petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot

 

快速重啓petalinux系統的指令爲reboot -nf。如果沒有加上-n的選項,有時候會重啓失敗。

 

 

Petalinux 中可以使用的時間服務器:(可以在petalinux BSP編譯的時候配置文件系統的編譯設置項,將ntpdate功能編譯進去,默認只有rdate)

rdate -s -p time.nist.gov

rdate -s -p time.nist.gov

(-p和-s一起使用時只有-p生效,所以在進行實際時間設置的時候只使用-s選項)

 

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