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

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建