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

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.