前记
最近在移植之前在dgpu上的项目到jetson上,搞来搞去总算是勉强把nano上的东西搞利索了,因此来记录一下。本来不是很想写这篇文章的,因为CSDN上已经有相当多数量的文章。但是因为这边项目是用python写的,但是大多数现存的文章都是C++的,自己该踩的坑还是一样踩,想了想还是写吧orz。
设备
- Jetson Nano 4GB B01公版
- 系统为Ubuntu 18.04的主机一台(后面编译python bindings需要)
Nano公版是没有配套设备的,还需要SD卡,电源和风扇,这些都是必须的。没有风扇会过热卡死。
主机OS必须为18.04,因为后期交叉编译要用SDKManager,而SDKManager上对Nano最高支持为Ubuntu 18.04。
刷机
大体上跟着官网的教程就行了。
- balena-etcher不能通过apt安装。
交叉编译
由于Jetson-Nano对应的SDKManager只能在宿主机OS为Ubuntu 18.04的机器上操作,因此其实就限制死了Nano所能使用的Jetpack版本和Deepstream版本。目前暂时还没找到使用最新版本的方法。
按照官方工具上面所写的,所支持的deepstream版本最高为6.0.1(orz公司项目用的6.1)。贴个官方教程的链接。
注意正确的流程应该是这样的(以docker为例):
- 在宿主机上先交叉编译python-bindings。
- Nano上安装deepstream-l4t镜像并创建容器。
- 进入容器并编译gstreamer相关组件(按照官方教程一步一步来就可以了)
- 将交叉编译生成的轮子wheel包拷贝到对应位置后pip安装即可。
可能遇见的错误:
nv-gstreamer组件找不到:发现全部进黑名单了。按照网上的做法清缓存,重装gstreamer都没用。最后重新跑了一个容器从头一步一步来就ok了。
测试
现在执行官方的deepstream-test即可正常运行。