一路上看着n多遍的官方文档和各路大神的文档,总算编译成功,把心酸记录一下,为以后自己的使用方便
先把官方文档挂上
http://www.wiki.xilinx.com/U-boot
http://www.wiki.xilinx.com/Build+kernel
http://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs
http://www.wiki.xilinx.com/Build+Device+Tree+Blob
环境为Ubuntu12.04
目标版 zedboard
目前system.bit文件尚未编译,用的是官方的版本。
目录
1 、交叉编译工具的安装
2、uboot的编译
3、NFS内核的编译
4、根文件系统的制作和修改
6、qt的编译
7、opencv的编译安装
1 、交叉编译工具的安装
首先安装交叉编译工具,xilinx-arm-gcc/g++
由于官方目前把工具撤了,换成了其他的东西,装那个肯定行,不过还是习惯直接安装
安装时会提示会提示需要bash,而Ubuntu为了提高速度,默认把shell改成了dash,那么需要先改回来(如果在centos下则不需要那么麻烦)
sudodpkg-reconfigure dash
然后选择否
sudo./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
好了,接下来是一个图形安装界面,肯定很熟悉啦
安装完之后,设置环境变量吧
当前用户在~/.bashrc下。但是后面的安装需要权限,所以会造成很多问题
我就是栽在这里很多时间啊
那么直接修改 /etc/profile
sudo vi/etc/profile
在最后添加上
exportPATH=/path/to/cross/compiler/bin:$PATH #注 前面 为你的安装路径
exportCROSS_COMPILE=arm-xilinx-linux-gnueabi-
重新启动机器,再试试 arm-按下tab键会不会自动补全?
然后写一个hello world ,编译放到板子里面运行,ok吧
交叉编译工具的安装到此结束
2、uboot的编译
u-boot用来引导linux内核,这个没什么好说的,
不过我遇到过一个问题,机器id不匹配,这不是重点,我竟然没有找到他在哪里传递的参数。。。。。
1下载u-boot源码
https://github.com/Digilent/u-boot-digilent
啃爹的是里面没有saveenv这个命令,搞得我每次都要手动输入一次。
u-boot-xlnx-master/include/configs/zynq-commom.h
下面有一些描述zedboard的参数
在u-boot的include/configs/zynq_common.h文件中决定了内核、文件系统和设备树编译后的文件名。如Kernel_image决定了u-boot引导zImage还是uImage。
make zynq_zed_config
make -j4 (多线程编译更快)
mv u-boot u-boot.elf (后面制作boot.bin需要)
至此,u-boot编译结束
3、NFS内核的编译
我们自己编译内核有那么几个原因,
第一别人的始终不是自己的,自己编译的才是自己的
最重要的是,竟然不支持NFS,不可忍