一天一阔阔儿ZYNQ的linux移植完整版(Linux环境搭建以及内核编译)

虚拟机UBUNTU12.04 64bit 701N 芯片是7020clg400

XILINX的交叉编译器安装

主要就是安装出现的一些问题,方法总结:

主要涉及的问题是,ubuntu12.04 64位系统,不能再采用sudo apt-get install ia32-libs命令,这样我们得到的问题是:

下列软件包有未满足的依赖关系:
 ia32-libs : 依赖: ia32-libs-multiarch
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

网上也没有找到合适的方法。

解决办法:

$ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386       (第一步库安装)

我本意是运行adb的。运行adb时,发现缺乏libncurses5库,自己动手,丰衣足食,比葫芦画瓢,

$sudo apt-get install libncurses5:i386

在64位下,gcc默认编译代码位64位的,但是,如果你想编译位的,可以用gcc -m32选项,来设置。

不过,不幸的是,会出现错误,说找不到 /usr/include/features.h文件什么的。google一下,发现用这种方法:

$sudo apt-get install g++-multilib

运行上面三个兼容库,便能解决高版本64位系统的兼容以及依赖问题。希望大家加油努力尝试,有什么问题请在下面留言。

二、Uboot编译

由于系统限制,依赖和版本问题,由此出现一些问题需要解决,下面全部给出

cd uboot(文件夹)

make zynq_zybo_config配置文件

报错:我的电脑 上的关于交叉编译工具的环境变量是 arm-xilinx-linux-gcc
经过一番折腾,最后在make命令后边指定了交叉编译工具,
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- 切记,最后不要加gcc,那个不用管。
好吧,终于解决了,可是编了半路,有一个问题,
In file included from tools/aisimage.c:10:0:
include/image.h:920:27: fatal error: openssl/evp.h: 没有那个文件或目录
# include <openssl/evp.h>
^
compilation terminated.
scripts/Makefile.host:111: recipe for target 'tools/aisimage.o' failed
make[1]: *** [tools/aisimage.o] Error 1
Makefile:1194: recipe for target 'tools' failed

make: *** [tools] Error 2 

这个是openssl的依赖的问题,运行命令sudo apt-get install libssl-dev 即可解决。
好吧再来一次,这回貌似没有什么问题,好长时间过去了,我还盲目兴奋了一会儿,突然又有一个问题:
./scripts/dtc-version.sh: 行 17: dtc: 未找到命令
./scripts/dtc-version.sh: 行 18: dtc: 未找到命令
*** Your dtc is too old, please upgrade to dtc 1.4 or newer
Makefile:1353: recipe for target 'checkdtc' failed
make: *** [checkdtc] Error 1


好吧,,dtc是device-tree-compiler的缩写,即设备树编译器,说明系统中没有安装这个编译器
安装不就行了:
sudo apt-get install device-tree-compiler

这次一次性编译到底了。

由于我用的ubuntu12.04所以会继续报错

根据uboot编译打印信息:


dtc: invalid option -- 'i'
Usage:

dtc [options] <input file>

报错信息后面省略。。。。

也就是DTC版本不对,大家可以用$dtc -v命令查看自己的版本,我看需要DTC1.4所以我下载对应的安装。

32位:https://launchpad.net/ubuntu/xenial/i386/device-tree-compiler/1.4.0+dfsg-2

64位:https://launchpad.net/ubuntu/xenial/amd64/device-tree-compiler/1.4.0+dfsg-2

请大家注意下载。

下载.dep文件,进行目录内使用dpkg -i device-tree-compiler_1.4.0+dfsg-2_i386.deb 进行安装。


root@ubuntu:/home/ws/zc702# dpkg -i device-tree-compiler_1.4.0+dfsg-2_i386.deb 
(Reading database ... 126283 files and directories currently installed.)
Preparing to replace device-tree-compiler 1.3.0-2 (using device-tree-compiler_1.4.0+dfsg-2_i386.deb) ...
Unpacking replacement device-tree-compiler ...
Setting up device-tree-compiler (1.4.0+dfsg-2) ...
Processing triggers for doc-base ...
Processing 2 changed doc-base files...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
root@ubuntu:/home/ws/zc702# dtc -v
Version: DTC 1.4.0


安装后查看dtc版本为1.4.0,OK  到此生成出来uboot.img,恭喜大家

三、内核编译

内核编译命令:

zt@zt-virtual-machine:~/ZYNQ/User_file/V2017.4/linux-xlnx-xlnx_rebase_v4.9_2017.4$make    ARCH=arm CROSS_COMPILE=/home/zt/ZYNQ/User_file/CodeSourcery/bin/arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage

报错:"mkimage" command not found - U-Boot images will not be built

make[1]: *** [arch/arm/boot/uImage] 错误 1

make: *** [uImage] 错误 2

解决:按照以往经验,我们需要安装依赖包:

sudo apt-get install uboot-mkimage

在我的ubuntu16.04 64bit上无法进行安装,因此我们用方法二:

将uboot路径下的tools文件夹,设置到环境/etc/bash.bashrc下面:

export PATH=/home/paddyzhang/zynq_701n_linux/packages/u-boot-xlnx-xilinx-v2017.4/tools:$PATH

这是我的路径,可以根据你们自己的路径进行设置。

这样我们的内核编译结束。

四、我们生成自己需要的设备树文件。

命令:./scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb /arch/arm/boot/dts/zynq_zybo.dts

这样可以生成dtb文件。但是我的虚拟机linux上会报错:

paddyzhang@paddyzhang-virtual-machine:/mnt/hgfs/F/board_file/701N/linux/dts$ dtc -I dts -O dtb -o system02.dtb zynq-zybo.dts 
Error: zynq-zybo.dts:15.1-9 syntax error

FATAL ERROR: Unable to parse input tree

解决办法:根据我测试和对比发现是include文件有点问题需要处理下:

 将这个文件自己处理为这样再生成。我们也根据自己的要求和需要来定制设备树,来适应我们的工程,我的理解为这样。所以设备树先生成一个,如果PL工程更改了,我们自己在设备树添加节点应该就OK了。

这是Zynq的Linux一直全部过程,今天2018/07/03.后面持续更新zynq的Linux下软硬件开发。打球去~~~~~~大笑

后面有什么问题,大家留言,我继续优化不足


  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值