Ubuntu12.04 LTS ZYBO Linux Kernel編譯

這兩天斷斷續續終於跑通了zybo(其實就是zynq)linux內核的編譯。起因是什麼呢?主要是爲了精簡FPGA PL的邏輯,這裏想把HDMI部分邏輯去掉,EDK工程搞定之後,也生成了對應的fsbl.elf,但是發現系統啓動不起來(在進入文件系統這裏卡住)。雖然不能確定問題出在哪,但是我的判斷是linux device tree有問題,因爲我用的還是帶hdmi的.dtb文件。那麼就需要重新編譯dtb文件,dtb的源代碼dts文件是會修改的,但是要將dts源代碼編譯爲dtb執行文件需要一個編譯器,這個編譯器有standalone的,但是一般都是用linux內核源代碼裏面./script/dtc裏面自帶的編譯器。我嘗試在./script/dtc裏面make編譯dtc執行文件,發現有關聯庫不存在的問題,這個因爲對於linux make瞭解不多,所以想想還是按照digilent手冊Embedded Linux® Hands-on Tutorial for the ZYBO裏面講的一步步來吧,先編譯內核。

編譯內核首先要下載內核源代碼,這裏用了

git clone https://github.com/DigilentInc/Linux-Digilent-Dev.git

由於網絡原因,本來想在github上下載zip文件然後解壓,發現大小不一樣,很奇怪,最後還是用了git。

之後就是在Linux-Digilent-Dev目錄下編譯內核:

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-  xilinx_zynq_defconfig
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- 

此時問題就來了,總報錯CROSS_COMPILE=arm_xilinx_linux_gnuebi-出錯。這時候google了一下發現需要安裝xilinx的軟件Vivado或者ISE,而且必須包含SDK,因爲這個cross compile就在SDK的gnu目錄下,雖然我也不大懂這個交叉編譯。一切準備好之後還需要http://www.wiki.xilinx.com/Install+Xilinx+Tools看到的兩句:

$ export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
$ source /opt/Xilinx/Vivado/2014.4/settings32.sh

然後再在Linux-Digilent-Dev目錄下執行編譯指令即可完成編譯。


然後在就可以編譯devicetree執行文件了:

Linux-Digilent-Dev$ ./script/dtc/dtc -I dts -O dtb -o ./devicetree.dtb digilent-zybo.dts

替換了原有的linux devicetree文件之後,再啓動,rootfs可以正常掛載,果然這個問題,那麼至此一個可定製文件系統的最小zynq系統就完成了,下面看一下zynq的資源運用情況,可以看到邏輯爲零。下面就是寫邏輯,做驅動了。目前的想法是把音頻I2S,XADC,DSP三個模塊搞一搞。


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