在配置完(一)里面的信息之后,你是不是有种迫不及待的心情向在windows下编写一个程序。和windows不同的是在linux中不需要专门在装一个类似vc之类的应用软件了。在系统中已经有现成的了。
一、编写helloworld应用程序
rainysky习惯,也是为了方便,在opt建立了几个文件夹,opt/zedboard/code,并且cd /opt/zedboard/code 里面将自己的代码放到里面,方便管理。
利用vim helloworld.c 编写文件,相信大家都比较熟悉吧,里面的内容如下:
在linux下编译.c文件时采用gcc **.c –o *** ,使用./来执行程序,为了与之后的程序相区别,生成的可执行文件为helloworld_pc,代码以及运行结果如下
交叉编译环境的建立
在pc机上运行了helloworld之后,肯定想在zedboard板卡上运行程序吧,rainysky也有这样一种期待,但pc的可执行程序不能直接在arm板卡上运行,原因可以大概解释如下吧:pc机上采用的是x86体系结构,而arm采用的就是arn结构的啦,两个可以执行的二进制代码不一样,所以可执行文件不能混着用了,要是使用还是有办法的,那就是交叉编译,交叉编译的目的就是在主机上生成目标机(zedboard)能执行的文件。啰嗦了这么多,是不是觉得很烦呢,也觉得交叉编译功能很强大,不好弄。其实zedboard已经将交叉编译的文件给我们了,只需要执行几个简单的指令就可以了。
在《嵌入式系统软硬件协同设计实战指南--基于xilinx zynq》这本书附带的光盘里,也将交叉编译的安装文件附在里面了,在目录chapter 9\src\9.3 single board computer中,不知道你还记得在第一篇里设置了pc机和虚拟机的共享目录,这时候就可以显示出它方便的功能了,直接复制到目录(rainysky在/opt/zedboard/)下就行了,
和执行上一小节的helloworld一样,用 ./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 安装文件,很坑爹的出现一个错误,如下:
百度 google了一下,在终端里输入如下命令 dpkg-reconfigure dash,并且在弹出的对话框里选择 ,就可以啦(原因大概是:ubuntu的 shell 默认安装的是 dash,而不是 bash,dash 比 bash 更轻,更快。但 bash 却更常用。如果一些命令、脚本等总不能正常执行,有可能是 dash 的原因。比如编译 android 源代码的时候,如果使用 dash,则有可能编译出错,或者编译的系统不能启动。),可以安装的时候,就一路默认下去吧,不过这个时候最好注意下文件安装到哪个地方了。
这个时候你就可以找到类似于gcc一样的交叉编译工具了,
交叉工具是不是很多,但要是直接在终端里面输入arm-xilinx-linux-gnueabi-gcc会提示找不到。这个类似于windows,需要设置环境变量,在ubuntu中,环境变量的文件是 /etc/bash.bashrc,修改这个文件就行了(命令vim /etc/bash.bashrc),增加的内容是
export arch=arm
export cross_compile=arm-xilinx-linux-gnueabi-
export path=/root/codesourcery/sourcery_codebench_lite_for_xilinx_gnu_linux/bin/:$path
此时保存文件,并且关闭终端,重新打开一个终端 输入arm-xilinx 按几下tab键是不是显示出来了可爱的交叉编译链。到此说明交叉编译链安装完成
交叉编译helloworld
交叉编译链安装成功了,就可以交叉编译c文件了,进入到/opt/zedboard/code/文件夹下面,使用arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_zed,来生成在zed板卡上能执行的文件,并用file命令验证一下
如上图可以看到helloworld_zed是在arm架构中运行的程序,helloworld_pc是在x86结构下可执行的。此后在板卡上运行下就ok啦。。。。。。。。。。
为了讨好中国市场 苹果在新版ios11系统中加入了这几个功能
人工智能技术发展需要面临哪些难关
01:MC3377x电池单元控制器的介绍
NZXT发布3款全新ATX PSU电源,售价837元人民币起
C语言设计学习,教你如何将LCD菜单对象化
rainysky陪你一起在zedboard上移植qt+opencv(二)
报告:75%消费者希望用电视完成购物
超逼真的星战机器人,了解下
集成功率无源器件和战术权衡以提高功率效率:电源管理和开关电源
单核暴涨40%,英特尔15代Core要用台积电3nm制程
华宇电子亮相2022世界集成电路大会
华为mate9和p9的区别,16nm工艺处理器给力升级但mate9曲屏版或跳票
C语言零基础项目:生命游戏!详细思路+源码分享
基于PLC的机器人伺服运动控制系统设计详解
用MDaemon搭建邮件服务器-设置篇
松下进一步增强加码动力电池业务的决心
谷歌发布第三季度财报,总营收461.73亿美元
华为 P20在上海发布 还有全球首款全面屏笔记本
怎么应对刘海屏机型的海报设计
相控阵雷达性能的基石:宽禁带半导体