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三个模块搞一搞。


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