NVIDIA Jetson TX1 系列开发教程之四:Nsight Eclipse Edition进阶

本文主要是介绍NVIDIA Jetson TX1 系列开发教程之四:Nsight Eclipse Edition进阶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NVIDIA Jetson TX1 系列开发教程之四:Nsight Eclipse Edition进阶


  • 转载请注明作者和出处:http://blog.csdn.net/u011475210
  • 嵌入式平台:NVIDIA Jetson TX1
  • 嵌入式系统:Ubuntu16.04
  • 虚拟机系统:Ubuntu14.04
  • 编者: WordZzzz

    上一篇博文简单介绍了如何使用Nsight Eclipse Edition来导入CUDA例程并构建应用程序到NVIDIA Jetson TX1开发板上。本篇博文将继续介绍Nsight Eclipse Edition的进阶使用,通过OpenCV测试程序和GStreamer测试程序,分别介绍如何添加库链接和库路径到工程文件中,全是干货。友情提示,记得打开开发板并接入到局域网哦~

1. OpenCV测试程序

    JetPack3.0为TX1预装的OpenCV版本为OpenCV2.4.13,环境变量都已配置好,所以我们无需在开发套件上进行任何操作。

1.新建CUDA C++工程,如下图所示:

2.填入工程名称,工程类型为空工程,工具链为CUDA Toolkit 8.0,单击Next:

3.基础设置,这里我们之前已经说过了,对于TX1,全部选5.3。当然按默认的2.0一般也不会报错:

4.目标系统,默认的是主机。如果你之前设置过,这次你只需要单击下拉条就会出现之前的设置,选中就好。我在这里还是重复一遍操作吧,单击Manage:

5.上一步骤之后出现远程连接对话框,填入开发板IP地址和用户名,其他的默认就好,然后单击Finish退出:

6.把Local System关掉,然后选择远程连接的工程路径、工具箱路径和CPU类型地,选完后单击Finish。7、8、9会分别对这三项进行详细说明:

7.Project Path:在步骤6中单击Project Path后面的Browse,出现下图所示对话框,里面显示的是远程连接的开发套件的文件目录,可以进行简单的新建删除等功能。这里我们选择好自己的工程路径。中间可能会出现链接提示,有时还会让你填写TX1的密码,大家乖乖填上就好:

8.Toolkit:在步骤6中单击Tookit后面的Manage,弹出下图所示对话框,第一次打开的话里面的Toolkit path 是空的。我们不需要自己去找工具箱的路径,只需要单击Detect,系统就会帮我们自动填写上工具箱路径。中间可能会出现链接提示,有时还会让你填写TX1的密码,大家乖乖填上就好:

9.CPU Architecture:下拉菜单中有很多类型,我们的TX1对应的是AArch64:

10.对新建的工程添加源文件:

11.因为我们例程用的是OpenCV的hpp头文件,所以源文件最好也写成C++的源文件。填入文件名,选择默认的C++源文件模板:

12.测试代码如下:

/** test_opencv.cpp**  Created on: Jun 3, 2017*      Author: wordzzzz*/#include "opencv2/highgui/highgui.hpp"int main()
{cv::Mat img(512, 512, CV_8UC3, cv::Scalar(0));cv::putText(img,"Hello, OpenCV on Jetson!",cv::Point(10, img.rows / 2),cv::FONT_HERSHEY_DUPLEX,1.0,CV_RGB(118, 185, 0),2);cv::imshow("Hello!", img);cv::waitKey();
}

13.查看库链接。前面已经说到,JetPack3.0已经预装了OpenCV2.4.13,各种环境变量都已设置好,具体信息我们可以通过如下命令在TX1上进行查看:

pkg-config --cflags --libs opencv

    查看结果如下图所示:

ubuntu@tegra-ubuntu:~$ pkg-config --cflags --libs opencv
-I/usr/include/opencv -L/usr/local/cuda-8.0/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lopencv_detection_based_tracker -lopencv_esm_panorama -lopencv_facedetect -lopencv_imuvstab -lopencv_tegra -lopencv_vstab -lcufft -lnpps -lnppi -lnppc -lcudart -latomic -ltbb -lrt -lpthread -lm -ldl

14.打开性能设置,即在工程右键,然后选择Properties:

15.重点来了:添加库链接。

    如果你在第12步直接构建上述代码,肯定会出错,因为我们现在所有的设置,都是在为我们的工程文件编写编译命令。熟悉g++/gcc的朋友们可能会有印象,就是我们直接用g++/gcc编译文件的时候,如果用到哪个链接库,一般都是在后面加上-l这种链接的,否则会找不到相应的库链接。

16.经过上述步骤后再CTR+B进行构建,我们可以看到构建命令包括了我们添加的库链接,没有报错表明构建成功:

2. Gstreamer测试程序

1.新建项目,过程不再赘述,然后添加源文件,这次我们用C模板,而不是C++。

/** basic-tutorial-1.c**  Created on: Jun 1, 2017*      Author: wordzzzz*/#include <gst/gst.h>int main(int argc, char *argv[]) {GstElement *pipeline;GstBus *bus;GstMessage *msg;/* Initialize GStreamer */gst_init (&argc, &argv);/* Build the pipeline */pipeline = gst_parse_launch ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm", NULL);/* Start playing */gst_element_set_state (pipeline, GST_STATE_PLAYING);/* Wait until error or EOS */bus = gst_element_get_bus (pipeline);msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);/* Free resources */if (msg != NULL)gst_message_unref (msg);gst_object_unref (bus);gst_element_set_state (pipeline, GST_STATE_NULL);gst_object_unref (pipeline);return 0;
}

2.添加头文件路径和库链接:此处比OpenCV多了头文件路径的添加,因为gstremer-1.0的头文件路径貌似没有加入到环境变量中。

    上图中添加的路径,切记是TX1上的路径,而不是虚拟机里的路径。之前用过QT进行过交叉编译,感觉被洗脑了。Nsight的构建,是通过你的设置产生的编译命令,直接在TX1上进行编译的,而不是先生成在虚拟机里再拷贝到TX1上。所以你只要保证你添加的头文件路径和库路径能在TX1上找到就行,没必要把TX1上的库都拷过来,这样反而会出错。

3.CTRL+B构建后在TX1上运行,会有视频播放出来。

系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~

完的汪(∪。∪)。。。zzz

这篇关于NVIDIA Jetson TX1 系列开发教程之四:Nsight Eclipse Edition进阶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044760

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.