linux下vivado编译卡死,vivado+zedboard之Linux编译
本文将介绍如何利用上节搭建好的交叉编译环境编译嵌入式Linux所需的文件,包括u-boot、uImage(内核)、uramdisk.image.gz(文件系统)和devicetree.dtb(设备树)。
原料:
u-boot-xlnx.git
linux-xlnx.git
device-tree-xlnx-xilinx-v2014.4.zip
编译
1. U-Boot
~$ mkdir ZYNQ
~$ cd ZYNQ/
~/ZYNQ$ mkdir buildxil2014.4
~/ZYNQ$ cd buildxil2014.4/
~/ZYNQ/buildxil2014.4$ git clone https://github.com/Xilinx/u-boot-xlnx.git //或者先下载好,直接copy、解压
cd u-boot-xlnx
在编译之前,先进行配置,配置文件在u-boot-xlnx/include/configs下,打开zynq_common.h可查看信息。包括所需要的几个文件的名称等
make zynq_zed_config
make
cp u-boot u-boot.elf
如果需要安装python:
sudo apt-get --reinstall install python-minimal
在u-boot-xlnx/include/configs下,查看zynq_common.h,zynq_zed.h(优先),决定了内核等文件的名称。
本例使用zynq_zed_config:
“ethaddr=00:0a:35:00:01:22\0” \
“kernel_image=uImage\0” \
“kernel_load_address=0x2080000\0” \
“ramdisk_image=uramdisk.image.gz\0” \
“ramdisk_load_address=0x4000000\0” \
“devicetree_image=devicetree.dtb\0” \
“devicetree_load_address=0x2000000\0” \
“bitstream_image=system.bit.bin\0” \
“boot_image=BOOT.bin\0” \
2. uImage
使用配置文件:xilinx_zynq_defconfig(arch/arm/configs)
cd ~/ZYNQ/buildxil2014.4
git clone https://github.com/Xilinx/linux-xlnx.git //或直接copy下载好的linux-xlnx-xilinx-v2014.4.tar.gz
cd ~/ZYNQ/buildxil2014.4/u-boot-xlnx-xilinx-v2014.4/ //需要先安装u-boot-tools
sudo apt-get install u-boot-tools
cd ~/ZYNQ/buildxil2014.4/linux-xlnx-xilinx-v2014.4
make ARCH=arm xilinx_zynq_defconfig
make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage
cp arch/arm/boot/uImage
3. uramdisk.image.gz文件系统
这里不进行编译了,直接使用官网的:http://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs
或:
wget http://www.wiki.xilinx.com/file/view/arm_ramdisk.image.gz/41943558/arm_ramdisk.image.gz
修改根文件系统
cp arm_ramdisk.image.gz ramdisk.image.gz
gunzip ramdisk.image.gz
mkdir file_tmp
sudo mount ramdisk.image -o loop ./file_tmp/
这样可以在file_tmp目录中对文件系统进行修改,修改完成之后umount并重新压缩即可
sudo umount file_tmp/
gzip ramdisk.image
//添加u-boot头部
sudo apt-get install u-boot-tools
mkimage -A arm -T ramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz
如果需要进行修改,可以先将uramdisk.image.gz解压为uramdisk.image,再挂载到指定目录
4. devicetree.dtb
建议:
建立一个devicetree目录,将/scripts/dtc/dtc工具copy过来,每次使用时在其下建立工程目录;
将所需要的dts,dtsi文件copy到其下的工程目录下;
然后对工程目录打开终端:../dtc -I dts -O dtb -o devicetree.dtb system.dts即可;
如果只有ARM,没有使用PL部分:
在linux-xlnx/arch/arm/boot/dts/下,找到zynq-zed.dts及相关dtsi文件,copy到上述devicetree/xil2014.4/下:
../dtc -I dts -O dtb -o devicetree.dtb zynq-zed.dts
为PL配置devicetree
自己写的PL程序对于ARM来说相当于是新的外设,在xil提供的Linux内核中的dts是没有的,需要自己制作匹配的dts文件。SDK提供了根据在vivado中的硬件设计文件来生成设备树的工具。也可以自己手工编写或作出调整。
使用SDK制作和PL相匹配的devicetree。
SDK设置
下载device-tree-xlnx-xilinx-v2014.4.tar.gz,解压将device-tree-xlnx-xilinx-v2014.4文件夹。
添加至:bsp repo=D:\Xilinx\SDK\2014.1\data\embeddedsw\lib\bsp下,
使用SDK添加下载好的目录:SDK Menu: Xilinx Tools > Repositories > New… (bsp repo) > OK
注:由于device-tree-xlnx-xilinx-v2014.4.tar.gz,但是有win下路径\的问题;重新在https://github.com/Xilinx/device-tree-xlnx下载,device-tree-xlnx-xilinx-v2014.4.zip(clone in desktop),解决
SDK使用
新建:SDK Menu: File > New > Board Support Package > Board Support Package OS: device-tree > Finish
在弹出的的对话框中修改参数;比如bootargs内核的命令行参数,内核启动时传给内核,可设置为:console=ttyPS0,115200 root=/dev/ram rw earlyprintk
编译完成后在工程的\HW\Lab2-LedIP\Lab2-LedIP.sdk\device_tree_bsp_0下可以找到system.dts文件
将所有的dts,dtsi文件copy到虚拟机下的buildxil2014.4/linux-xlnx-xilinx-v2014.4下,使用dtc工具生成devicetree.dtb
../dtc -I dts -O dtb -o devicetree.dtb system.dts
注:这种方法在测试的时候有效,可以使用;但是在做HDMI的时候不能用了,没搞明白怎么回事。只有手工编写dts文件了。
小结
至此,已经编译了xil2014.4-Linux所需的文件了。当然现在还不能启动Linux,还需要制作BOOT.bin文件。这些方法适用于其他硬件,需要确定合适的配置文件。 在实际操作的过程中,由于工具版本、源代码出处及版本等问题,折腾了很多次才选择这种方法,而且经过后续验证有效。在参考陆佳华的书、前辈博客、各种论坛的过程中,遇到过xilinx、xup、zedboard、digilent、AD等出的源码或者编译好的文件,有的是面向ISE的(比如ISE、Vivado的设备树定义不一样,甚至vivado2014.1和2014.4都不完全一样),在参考资料和手头源码加个人关于这块不甚了解的情况下,经历了N次痛苦的过程。 由于时间问题,个中细节就不再详述了,看错误信息、查论坛一般可以解决。
linux下vivado编译卡死,vivado+zedboard之Linux编译相关推荐
- Windows/Linux下引用jar包,并用javac/java编译运行
Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...
- 手把手教你如下在Linux下如何写一个C语言代码,编译并运行
文章目录 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 创建 helloworld.c 编译C文件 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 ...
- FAT12文件系统镜像查看工具linux下的实现(nasm、g++联合编译
FAT12文件系统镜像查看工具linux下的实现(nasm.g++联合编译) 简介 构思简介 附加链接 最终实现截图 代码 Makefile代码 my_print.asm代码 main.cpp代码 简 ...
- linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...
linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...
- 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]
赞助商链接 本文"linux下抓取Vcd的视频文件[Linux安全]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判 ...
- linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案
linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 参考文章: (1)linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 (2) ...
- linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...
对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...
- linux下如何使用configure/make/make install命令编译安装卸载程序
源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).安装成功的源码就是所谓的可执行文件,在你不需要的时候,也是可以删除/卸载(remove/u ...
- linux下安装codeblocks及写完程序之后编译成功但无法运行的原因
一:在软件中心输入codeblocks,然后点击安装,等着装完就行了. 再按ctrl+alt+t 打开终端 输入 sudo apt-get install gcc 而后再输入sudo apt-get ...
- 解决linux下图形界面卡死不能操作的问题
由于linux系统bug很多,所以有时候用着用这就会发生图形界面卡死不能操作的情况 具体解决方法如下 1.按住ctrl+alt+f2 然后进入了一个黑色的shell界面 注:linux下共有六个虚拟控 ...
最新文章
- autojs微博_js实现微博发布小功能
- MongoDB之在mac上设置环境变量
- MOON.ORM 3.5 MYSQL的配置及使用方法(最新版免费下载使用.欢迎加盟)
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
- vfp:数据库中表间关系的参照完整性
- RuntimeError: Python is not installed as a framework 错误解决方案
- css入门自学笔记1
- [android 游戏源码]-体育游戏-疯狂足球源码
- android移动商城源码,o2o移动社区Android端app开源源码
- uniapp 跳转公众号获其他小程序
- 倒看北斗星---念霍去病
- KubernetesAPI审计日志方案
- 浙江大学计算机专业博导大牛,重磅!官方公布的“最强人脉高校”,校友全是大牛!...
- SumGNN部署实验lmdb.ReadonlyError: mdb_dbi_open: Permission denied
- webhook是什么_敏锐度调度,Webhook和使整个业务按计划进行
- “国防七子”经费暴增,清华足足362亿元,甩第二名101亿 |全国高校2022预算大公开...
- AutoCAD2016硬件加速不识别GTX970M独立显卡的解决方法
- 2017华为校招硬件逻辑工程师
- 华氏温度转化为摄氏温度
- 利用AFL进行模糊测试
热门文章
- HTML+JS好例子集锦
- S-function入门及案例详解(1)——S-function基础介绍及基本案例
- 斑马打印机-RFID打印机 ZT411R最全攻略,从0上手 通过【JAVA生成ZPL指令+ts24.lib+ip:端口】的方式调用打印,无须安装驱动
- 电商系统架构全链路解析
- python:base64与图片的互转
- c语言中开方,C++_详细解析C语言中的开方实现,关于C语言中的开方计算,首先 - phpStudy...
- 360签名工具 linux,360签名工具-360apk签名工具(qihoo360 apk signer)下载 v1.0官方版--pc6下载站...
- 中小学电教信息计算机管理员职责,中小学电教教师岗位职责
- ENVI实验教程(2)遥感图像预处理—辐射校正
- K60学习笔记(二)——FTM多功能定时器模块