使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开发板进行编程,不用像传统的嵌入式编程那样,需要配置嵌入式开发环境,交叉编译链,有时还得去移植Linux到开发板上,而这些繁琐的工作SDSoc都替你做了,相比较传统SoC设计流程,SDSoC通过自动生成硬件连接和软件驱动程序大大简化了Zynq SoC和MPSoC的开发过程,现在开发人员不需要深层次的了解底层指令就能进行嵌入式开发,这无疑是开发人员的一大利器。

第一步就是安装Xilinx SDx, 我安装的是2017.4版Xilinx_SDx_2017.4_1216_1.tar.gz 点击下载

解压后执行./xsetup就可以安装, 请注意安装目录需要有能够写入的权限(或者 sudo ./xsetup):

tar zxvf Xilinx_SDx_2017.4_1216_1.tar.gz

cd Xilinx_SDx_2017.4_1216_1/

./xsetup

安装完成后会弹出一个license管理的界面,选择左边的load license,选择你本地的license文件,加载好了就可以关闭了,接着进入安装时选定的安装目录(我的是: /opt/Xilinx), 启动sdx:

cd  /opt/Xilinx/SDx/2017.4/bin

./sdx

创建一个SDx工程, SDx界面的左上角,点击File -> New -> SDx Project

填写项目名称和工作路径

选择开发板型号,我这里是zcu102

这一页的属性不用修改,默认就可以

选择工程的类型,xinlinx给出了一些模板,这里选择Empty Applicaton,点击finish完成。

为我们的程序添加一个源代码文件,左边的project视图里面,鼠标移动到src的目录上点击右键New -> File

在helloworld.cpp里面写上那段延续了几十年的古老的代码:

#include <iostream>
using namespace std;

int main()
{
cout << "Hello World from Xilinx zcu102." << endl;

return 0;
}

编译源代码,点击SDx上方的build图标,图标旁边的三角形可以下拉选择Debug/Release,我这里选择的Release


build完成后project视图会多出来一个Release的文件夹(若果你选择的Debug,那就会多出来一个Debug的文件夹)。我们需要把sd_card文件夹里面的所有文件全部复制到sd卡上(事先格式化为fat32格式)

现在sd卡里面的文件是这样的

设置zcu102从sd卡启动,这里可以参考zcu102的快速指南手册,主要就是SW6的4个开关一定要拨正确


来张特写

连接上串口,串口线和android数据线一样的那两根都连接到电脑就可以了,其中靠近网卡的那根就是串口,如果分不清楚就都连上电脑,电脑上打开串口工具,我用的SecureCRT,linux下一定要注意用sudo 权限打开,win7下不用。

图中的 /dev/ttyUSB0 可能数字 0 会和你的不一致,你可以逐个试一下,其他参数分别为Serial , 115200 , 8 , none , 1 都是下拉选择的,应该不会选错。

这样就能看到启动信息了,在串口通信的终端打印出来的

运行我们的程序,默认情况下你的sd卡会被挂载到/mnt 目录,所以进入/mnt目录就可以执行我们生成的firstSDXProject.elf文件

cd /mnt

ls -l

./firstSDXProject.elf