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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言