如果您购买的是微雪提供的带核心板的Nano套件,出厂的时候我们已经预先烧好了镜像在emmc上,且已经设置了SD卡识别。如果需要修改SD卡启动,请查看使用手册修改启动路径即可。
如果您对出厂镜像版本有特殊要求,请联系微雪店铺客服沟通确认。
若您想使用spi和pwm,需要做重新刷机的操作。
基于 Jetson Nano Module (需另购),提供了 USB、网口、HDMI、CSI、GPIO、I2C、RS485 等多种外设接口,板载 M.2 B KEY,带有转接板,支持 WiFi 或 4G 模组 (二选一),采用金属外壳,适用于各种人工智能应用。
GPU | NVIDIA Maxwell™ 架构,配有 128 个 NVIDIA CUDA® 核心 0.5 TFLOPS (FP16) |
---|---|
CPU | 四核 ARM® Cortex®-A57 MPCore 处理器 |
内存 | 4 GB 64 位 LPDDR4 1600 MHz – 25.6 GB/s |
存储 | 16 GB eMMC 5.1 闪存 |
视频编码 | 250 MP/s 1x 4K @ 30 (HEVC) |
视频解码 | 500 MP/s 1x 4K @ 60 (HEVC) |
摄像头 | 12 通道(3x4 或 4x2)MIPI CSI-2 D-PHY 1.1 (18 Gbps) |
联网 | Wi-Fi 需要外部芯片 10/100/1000 BASE-T 以太网 |
显示 | eDP 1.4 | DSI (1 x2) 2 同步 |
UPHY | 1 个 x1/2/4 PCIE、1 个 USB 3.0、3 个 USB 2.0 |
IO | 3 个 UART、2 个 SPI、2 个 I2S、4 个 I2C、多个 GPIO |
标号 | 名称 | 说明 | |
1 | 模组卡座 | 接入 Jetson Nano 模组 | |
2 | 电源按键和电源 LED | 电源开关和模块状态指示灯 | |
3 | 用户按键和用户 LED | 用户自定义按键和 LED | |
4 | Type-C 接口 | 可用于供电、烧录、调试 | |
5 | 2.54mm 风扇接口 | 可以进入散热风扇 | |
6 | 特殊功能管脚 | LED+\- TXD/RXD 禁用主动上电 烧录模式 电源按键 复位 |
标号 | 名称 | 说明 | |
7 | 千兆以太网端口 | 10/100/1000Base-T 自适应,不支持 PoE | |
8 | USB Type-A 接口 | 1 × USB 3.2 Gen 1、1 × USB 2.0 | |
9 | Type-C 供电使能 | 连接跳线帽供电使能 | |
10 | HDMI 高清接口 | 支持 4K 输出 | |
11 | TF CARD 卡槽 | 可以通过SD卡启动系统 | |
12 | MIPI CSI 摄像头接口 1 | 可以进入15PIN摄像头 | |
13 | SIM 卡槽 | 仅接入 4G 模组可以使用 | |
14 | MIPI CSI 摄像头接口 0 | 可以进入15PIN摄像头 | |
15 | mini PCIe 座子 | 可以接入 4G 模组或者WIFI,支持 USB2.0 和 PCIex1 |
标号 | 名称 | 说明 | |
16 | DC 供电端子 | 支持 9~36V 供电 | |
17 | RS485 接口 | 全自动收发RS485 | |
18 | GPIO 接口 | GPIO | |
19 | RTC 电池座子 | 可接入 CR1220 电池 | |
20 | DC 供电接口 | 支持 9~36V 供电,配套电源 12V |
https://developer.download.nvidia.com/sdkmanager/redirects/sdkmanager-deb.html
需要注册一个账号,登录以后我们才能成功下载,不知道如何注册的可以参考 英伟达账号注册。
sudo dpkg -i sdkmanager_1.6.1-8175_amd64.deb(根据自己的版本输入)
sudo apt --fix-broken install
以下资源包下载以Jetpack4.6.2为例,其他Jetpack版本的资源包下载方法请参考FAQ里的资源包下载方法。
sudo mkdir sources_nano cd sources_nano
https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2 https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2
将资源包移到文件夹,并解压(实际操作的时候,请尽量用tab按键自动补齐指令)
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/ sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 ~/sources_nano/
sudo tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2 cd Linux_for_Tegra/rootfs/ sudo tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2 cd ../ sudo ./apply_binaries.sh (若出现报错按提示操作,再重新输入该指令)
cd ~/sources_nano/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1
ls /dev/sd*
sudo mkfs.ext4 /dev/sda
只剩下sda
sudo vi /boot/extlinux/extlinux.conf找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmcblk0p1修改为sda保存
sudo mount /dev/sda /mnt
sudo cp -ax / /mnt
sudo umount /mnt/
sudo reboot
注意:该操作会格式化TF卡
sudo apt-get install device-tree-compiler
若使用的SDK Manager软件请使用以下命令: cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/dtb (针对不同jetpack,修改对应路径) dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb 若使用的资源包请使用以下命令: cd sources_nano/Linux_for_Tegra/kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb
sudo vim tegra210-p3448-0002-p3449-0000-b00.dts
cd-gpios = <0x5b 0xc2 0x0>; sd-uhs-sdr104; sd-uhs-sdr50; sd-uhs-sdr25; sd-uhs-sdr12; no-mmc; uhs-mask = <0xc>;
dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts
若使用的SDK Manager软件请使用以下命令: cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1 若使用的资源包请使用以下命令: cd sources_nano/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1
sudo ls /dev/mmcblk*
sudo mkfs.ext4 /dev/mmcblk1
如果出现以下提示已有文件系统
先卸载SD卡:
sudo umount /media/(这里按下Tab键自动补全)
再次使用格式化命令格式化SD卡。
格式化成功后输入:
sudo ls /dev/mmcblk*
只有mmcblk1
sudo vi /boot/extlinux/extlinux.conf找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmcblk0p1修改为mmcblk1保存
sudo mount /dev/mmcblk1 /mnt
sudo cp -ax / /mnt
sudo umount /mnt/
sudo reboot
sudo apt-get install device-tree-compiler
cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb
sudo vim tegra210-p3448-0002-p3449-0000-b00.dts
cd-gpios = <0x5b 0xc2 0x0>; sd-uhs-sdr104; sd-uhs-sdr50; sd-uhs-sdr25; sd-uhs-sdr12; no-mmc; uhs-mask = <0xc>;
dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts
cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1
sudo ls /dev/mmcblk*
sudo vi /boot/extlinux/extlinux.conf
注意:如果SD卡内存是64G的,在进入系统后,打开终端,输入df -h ,查看磁盘大小,若空间大小不正常,请参考FAQ里的扩容镜像。
用户名:waveshare 用户密码:waveshare
sudo dpkg -i nomachine_7.10.1_1_arm64.deb
gsettings set org.gnome.Vino require-encryption false gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino authentication-methods "['vnc']" gsettings set org.gnome.Vino lock-screen-on-disconnect false gsettings set org.gnome.Vino vnc-password $(echo -n "mypassword"|base64)
mkdir -p .config/autostart sudo vim ~/.config/autostart/vino-server.desktop
添加以下内容:
[Desktop Entry] Type=Application Name=Vino VNC server Exec=/usr/lib/vino/vino-server NoDisplay=true
cat /etc/X11/default-display-manager
sudo vim /etc/gdm3/custom.conf
WaylandEnable=false AutomaticLoginEnable = true AutomaticLogin = waveshare
sudo reboot
192.168.15.102
Jetpack主要包括系统镜像,库,APIs,开发者工具,示例和一些文档。在SDK Manager软件中,我们首先安装的是OS,也就是系统镜像,未安装的部分便是SDK,如下图,您可以使用指令直接安装或者使用SDK Manger安装:
SDK里包含TensorRT、cuDNN、CUDA、Multimedia API、Computer Vision、Developer Tools。
以上是SDK的部分功能。 前面的系统安装的时候只是安装了基本的系统,其他的JetPack SDK组件,比如CUDA等都需要在系统正常启动后进一步安装,这里提供安装SDK的步骤说明。若要安装该部分,请保证是在以TF卡或者U盘为主系统的情况下,因为下载内容可能会导致EMMC磁盘容量告急。
注意:由于该方法过于繁琐,建议使用下方的指令下载,即在开发板上联网操作即可。
使用SDK Manager安装SDK的时候,不需要设置nano为recovery模式,也就是不需要进行短接引脚的操作。
没有ubuntu或虚拟机的用户,可以选择在Jetson Nano上使用以下指令直接进行安装
sudo apt update sudo apt install nvidia-jetpack
如果您的空间只预留了少部分空间,请不要按照上述指令安装,会出现空间不足的问题,耶不要通过sdk manager 去装组件,请按照以下两个指令操作.
sudo apt update apt depends nvidia-jetpack | awk '{print $2}' | xargs -I {} sudo apt install -y {}
sudo su #切换为超级用户 su waveshare #切换普通用户
ls ls -a #显示所有文件及目录 (. 开头的隐藏文件也会列出) ls -l #除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 ls -lh #文件大小以容易理解的格式列出,例如4K
ls --help
who | 用户类型 | 说明 |
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于 ugo |
Operator | 说明 | |
+ | 为指定的用户类型增加权限 | |
- | 去除指定用户类型的权限 | |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
模式 | 名字 | 说明 |
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
chmod a+r file
chmod a-x file
chmod a+rw file
chmod +rwx file
chmod u=rw,go= file
chmod -R u+r,go-r waveshare
# | 权限 | rwx | 二进制 |
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | rwx | 101 |
4 | 只读 | r-- | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | --x | 001 |
0 | 无 | --- | 000 |
sudo chmod 664 file
touch file.txt
sudo mkdir waveshare
sudo mkdir -p waveshare/test
cd .. #返回上一层目录 cd /home/waveshare #进入/home/waveshare 目录 cd #返回用户目录
sudo cp –r test/ newtest
sudo mv file1 /home/waveshare
sudo rm test.txt
sudo rm homework
sudo rm -r homework
sudo reboot
sudo shutdown -h now
sudo shutdown -h 10
sudo shutdown -r now
head test.py -n 5
df -h
tar -cvzf waveshare.tar.gz *
tar -xvzf waveshare.tar.gz
sudo apt install nano
ifconfig
ifconfig eth0
ifconfig wlan0
sudo vim /etc/hosts
sudo vim /etc/hostname
sudo reboot
hostname -I
sudo apt-get remove vim-common
sudo apt-get install vim
set nu #显示行号 syntax on #语法高亮 set tabstop=4 #tab退四格
vim filename //打开filename文件 :w //保存文件 :q //退出编辑器,如果文件已修改请使用下面的命令 :q! //退出编辑器,且不保存 :wq //退出编辑器,且保存文件 :wq! //强制退出编辑器,且保存文件 ZZ //退出编辑器,且保存文件 ZQ //退出编辑器,且不保存
a //在当前光标位置的右边添加文本 i //在当前光标位置的左边添加文本 A //在当前行的末尾位置添加文本 I //在当前行的开始处添加文本(非空字符的行首) O //在当前行的上面新建一行 o //在当前行的下面新建一行 R //替换(覆盖)当前光标位置及后面的若干文本 J //合并光标所在行及下一行为一行(依然在命令模式)
x //删除当前字符 nx //删除从光标开始的n个字符 dd //删除当前行 ndd //向下删除当前行在内的n行 u //撤销上一步操作 U //撤销对当前行的所有操作
yy //将当前行复制到缓存区 nyy //将当前行向下n行复制到缓冲区 yw //复制从光标开始到词尾的字符 nyw //复制从光标开始的n个单词 y^ //复制从光标到行首的内容 y$ //复制从光标到行尾的内容 p //粘贴剪切板里的内容在光标后 P //粘贴剪切板里的内容在光标前
scp +参数 +用户名/登陆名+@+主机名/IP地址+ : + 目标文件路径+本地存放路径
scp waveshare@192.168.15.100:file .
其中“.”表示当前路径
scp file waveshare@192.168.15.100:
scp -r waveshare@192.168.15.100:/home/pi/file .
scp -r file waveshare@192.168.15.100:
使用Samba服务可实现文件共享。在windows的网上邻居即可访问Jetson Nano文件系统,非常方便。
sudo apt-get update sudo apt-get install samba -y
mkdir sambashare
sudo nano /etc/samba/smb.conf
拉到文件的最后,将下面的语句添加到文件尾部
[sambashare] comment = Samba on JetsonNano path = /home/waveshare/sambashare read only = no browsable = yes
注意:这里的waveshare需要改成你的系统的用户名。也就是说path是你要设置的共享文件夹路径。
sudo service smbd restart
sudo smbpasswd -a waveshare
注意:这里的username需要改成你系统的用户名,如果不是用户名就会失败。
这里会要求设置Samba密码,建议是直接用你的系统的密码,比较方便记忆
\\192.168.15.100\sambashare
查看接入的第一个摄像头画面:
nvgstcapture-1.0
查看接入的第二个摄像头画面:
nvgstcapture-1.0 --sensor-id=1
风扇转速调节,注意需要4线才可以调试风扇
sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm' #其中255 是最大转速,0是停止,修改值即可修改转速 cat /sys/class/thermal/thermal_zone0/temp #获取CPU温度,可以通过程序智能控制风扇 #系统自带温控系统,不必要情况可以不需要手动控制
sudo nmcli dev wifi
sudo nmcli dev wifi connect "wifi_name" password "wifi_password"
sudo apt update sudo apt-get install python3-pip python3-dev
pip3 -V
python3 -m pip install --upgrade pip
pip3 -V
python3 -m pip install --upgrade --force-reinstall pip sudo reboot
安装机器学习领域重要的包 sudo apt-get install python3-numpy sudo apt-get install python3-scipy sudo apt-get install python3-pandas sudo apt-get install python3-matplotlib sudo apt-get install python3-sklearn
sudo apt update sudo apt install nvidia-jetpack
nvcc -V cat /usr/local/cuda/version.txt
注意:这里使用cat命令查看不到版本,进入/usr/local/目录查看下是否有CUDA目录,
如果没有参考后面未安装CUDA部分安装CUDA,安装完成后再配置环境。
sudo vim .bashrc 在文件末尾加入: export PATH=/usr/local/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.2
source .bashrc
nvcc -V
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran sudo pip3 install -U pip testresources setuptools==49.6.0
sudo pip3 install -U --no-deps numpy==1.19.4 future==0.18.2 mock==3.0.5 keras_preprocessing==1.1.2 keras_applications==1.0.8 gast==0.4.0 protobuf pybind11 cython pkgconfig packaging sudo env H5PY_SETUP_REQUIRES=0 pip3 install -U h5py==3.1.0
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v46 tensorflow
pip3 install tensorflow-2.5.0+nv21.8-cp36-cp36m-linux_aarch64.whl
python3 import tensorflow as tf
tf.__version__
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev libopenblas-base libopenmpi-dev
sudo pip3 install torch-1.9.0-cp36-cp36m-linux_aarch64.whl
python3 import torch x = torch.rand(5, 3) print(x)
import torch print(torch.__version__)
git clone --branch v0.10.0 https://github.com/pytorch/vision torchvision cd torchvision export BUILD_VERSION=0.10.0 sudo python3 setup.py install
python3 import torchvision
sudo pip3 uninstall pillow sudo pip3 install pillow
import torchvision print(torchvision.__version__)
git clone https://github.com/AlexeyAB/darknet.git
cd darknet sudo vim Makefile
将前四行0改成1
GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1
将NVCC=nvcc修改为 NVCC=/usr/local/cuda-10.2/bin/nvcc
sudo make
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg
./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights
./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights data/xxx.mp4
帧数大约是14帧
ls /dev/video* ./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights /dev/video0 "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=30/1 ! nvvidconv ! video/x-raw, width=1280, height=720, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink" ./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights /dev/video0 "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=30/1 ! nvvidconv ! video/x-raw, width=1280, height=720, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink"
sudo apt-get update sudo apt-get install git cmake libpython3-dev python3-numpy
git clone https://github.com/dusty-nv/jetson-inference cd jetson-inference git submodule update --init
sudo mkdir build cd build sudo cmake ../
由于内容是外网上的,可能导致下载不了box.com上的文件,所以下载模型和Pytorch界面我们选择跳过(Quit和Skip)。
cd ~/jetson-inference/data/networks/ #如果你需要下载更多的算法,请参考这里的方法,首先在github上获取model的下载地址,然后用wget 加指令下载。这里下载三个model以作参考 wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/facenet-120.tar.gz wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/GoogleNet.tar.gz wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/SSD-Mobilenet-v2.tar.gz #下面的指令是解压前面下载的model的,只有解压出来才能用 tar -zxvf facenet-120.tar.gz tar -zxvf GoogleNet.tar.gz tar -zxvf SSD-Mobilenet-v2.tar.gz
cd jetson-inference/build sudo make sudo make install
sudo apt-get install v4l-utils v4l2-ctl --list-formats-ext
cd ~/jetson-inference/build/aarch64/bin/ ./detectnet-camera
使用TensorRT加速帧率达到24帧。
./detectnet-camera --network=facenet #运行使用面部识别网络 ./detectnet-camera --network=multiped #运行使用多级行人/行李探测器 ./detectnet-camera --network=pednet #运行使用原始单级行人探测器 ./detectnet-camera --network=coco-bottle #在摄像头下检测 瓶/汽水罐 ./detectnet-camera --network=coco-dog #在摄像头下检测狗
./detectnet-camera --network=facenet #使用 FaceNet,默认 MIPI CSI 相机(1280×720) ./detectnet-camera --camera=/dev/video1 --network=facenet #使用 PedNet,V4L2 摄像机/dev/video1(1280x720) ./detectnet-camera --width=640 --height=480 --network=facenet #使用 PedNet,默认 MIPI CSI 摄像机(640x480)
import Jetson.GPIO as GPIO
GPIO.setmode(GPIO.BOARD) GPIO.setmode(GPIO.BCM) GPIO.setmode(GPIO.CVM) GPIO.setmode(GPIO.TEGRA_SOC)
mode = GPIO.getmode()模式必须是 GPIO.BOARD、GPIO.BCM、GPIO.CVM、GPIO.TEGRA_SOC 或 None 之一。
GPIO.setwarnings(False)
# (where channel is based on the pin numbering mode discussed above) GPIO.setup(channel, GPIO.IN)
GPIO.setup(channel, GPIO.OUT)
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
# add as many as channels as needed. You can also use tuples: (18,12,13) channels = [18, 12, 13] GPIO.setup(channels, GPIO.OUT)
GPIO.input(channel) 这将返回 GPIO.LOW 或 GPIO.HIGH。
GPIO.output(channel, state) 其中状态可以是 GPIO.LOW 或 GPIO.HIGH。
channels = [18, 12, 13] # or use tuples GPIO.output(channels, GPIO.HIGH) # or GPIO.LOW # set first channel to LOW and rest to HIGH GPIO.output(channel, (GPIO.LOW, GPIO.HIGH, GPIO.HIGH))
GPIO.cleanup()
GPIO.cleanup(chan1) # cleanup only chan1 GPIO.cleanup([chan1, chan2]) # cleanup only chan1 and chan2 GPIO.cleanup((chan1, chan2)) # does the same operation as previous statement
GPIO.JETSON_INFO
这提供了一个带有以下键的 Python 字典:P1_REVISION、RAM、REVISION、TYPE、MANUFACTURER 和 PROCESSOR。字典中的所有值都是字符串,但 P1_REVISION 是一个整数。
GPIO.VERSION
这提供了一个具有 XYZ 版本格式的字符串。
GPIO.wait_for_edge(channel, GPIO.RISING)
# timeout is in milliseconds GPIO.wait_for_edge(channel, GPIO.RISING, timeout=500)该函数返回检测到边缘的通道,如果发生超时,则返回 None。
# set rising edge detection on the channel GPIO.add_event_detect(channel, GPIO.RISING) run_other_code() if GPIO.event_detected(channel): do_something()和以前一样,您可以检测 GPIO.RISING、GPIO.FALLING 或 GPIO.BOTH 的事件。
# define callback function def callback_fn(channel): print("Callback called from channel %s" % channel) # add rising edge detection GPIO.add_event_detect(channel, GPIO.RISING, callback=callback_fn)
def callback_one(channel): print("First Callback") def callback_two(channel): print("Second Callback") GPIO.add_event_detect(channel, GPIO.RISING) GPIO.add_event_callback(channel, callback_one) GPIO.add_event_callback(channel, callback_two)在这种情况下,两个回调按顺序运行,而不是同时运行,因为只有线程运行所有回调函数。
# bouncetime set in milliseconds GPIO.add_event_detect(channel, GPIO.RISING, callback=callback_fn, bouncetime=200)
GPIO.remove_event_detect(channel)
GPIO.gpio_function(channel) 该函数返回 GPIO.IN 或 GPIO.OUT。
import Jetson.GPIO as GPIO import time as time LED_Pin = 11 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_Pin, GPIO.OUT) while (True): GPIO.output(LED_Pin, GPIO.HIGH) time.sleep(0.5) GPIO.output(LED_Pin, GPIO.LOW) time.sleep(0.5)
git clone https://github.com/NVIDIA/jetson-gpio
cd /opt/nvidia/jetson-gpio/samples/ sudo python3 simple_input.py
sudo apt-get update sudo apt-get install -y i2c-tools sudo apt-get install -y python3-smbus
apt-cache policy i2c-tools
输出如下即为安装成功
i2c-tools: 已安装:4.0-2 候选: 4.0-2 版本列表: *** 4.0-2 500 500 http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 Packages 100 /var/lib/dpkg/status
sudo i2cdetect -y -r -a 0
sudo i2cdump -y 0 0x68
sudo i2cset -y 0 0x68 0x90 0x55
参数 | 含义 | |
0 | 代表I2C设备号 | |
0x68 | 代表I2C设备地址 | |
0x90 | 代表寄存器地址 | |
0x55 | 代表向寄存器写入的数据 |
sudo i2cget -y 0 0x68 0x90
参数 | 含义 | |
0 | 代表I2C设备号 | |
0x68 | 代表I2C设备地址 | |
0x90 | 代表寄存器地址 |
官方B01套件请直接参考打开SPI.
Jetson Nano B01 带emmc模组版本,也就是国产套件,无法通过jetson-io.py来直接配置40PIN引脚。这里提供直接修改设备树文件的方式来开启SPI1. 笔者目前只验证了JetPack4.6.2, 本次操作需要重装系统,请用户谨慎操作。
1. Ubuntu电脑主机或者虚拟机
2. Jetson Nano 主板
3. Micro USB数据线
sudo apt-get install minicom sudo apt-get install python-pip nano sudo pip install pyserial sudo pip install spidev==3.1
需要在系统资源上修改设备树文件,如果你之前用SDK Manager安装过系统镜像,可以直接在上面修改。 如果没有的话,请参考以下资源下载部分先进行操作,以下资源包是Jetpack4.6.2版本的,如果你需要别的版本资源包下载,请参考FAQ里的资源包下载方法。
sudo mkdir sources_nano cd sources_nano
https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2 https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/ sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 ~/sources_nano/
tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2 cd Linux_for_Tegra/rootfs/ tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 cd ../ sudo ./apply_binaries.sh (若出现报错按照系统提示操作,然后再次输入该行命令)
sudo apt-get install -y device-tree-compiler sudo apt-get install nano
cd kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb
sudo cp tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00-b00.dts sudo nano tegra210-p3448-0002-p3449-0000-b00.dts
按下ctrl^w,输入spi@7000d400 (紧跟一个空格),按下回车键,找到spi@7000d400{}部分
在其中的spi@0结构和spi@1结构分别添加语句 status = "okay" ;
按下ctrl^w,输入spi1_mosi,按下回车找到spi1的引脚设置,将其中的nvidia, function 改为spi1, nvidia,tristate改为0x0, nvidia,enable-input改为0x1. 如图, 五个引脚都要操作。
sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts
cd ../../ sudo ./flash.sh jetson-nano-emmc mmcblk0p1
sudo modprobe spidev git clone https://github.com/rm-hull/spidev-test cd spidev-test/ gcc spidev_test.c -o spidev_test
./spidev_test -v -D /dev/spidev0.0 -p "Test"
如果中断打印信息RX和TX可以正常的发送和接受信息即可。
sudo nano /etc/modules-load.d/modules.conf
添加一行
spidev
按ctrl+x 然后按Y,回车保存退出,然后打开硬件SPI:
sudo /opt/nvidia/jetson-io/jetson-io.py
如下图所示所示
选择配置40PIN管脚
键盘下选,配置管脚
键盘下选,移动到SPI1,并回车确定,有*号出现
键盘下选,保存并选择重启(一直回车即重启)。
重启后,ls /dev/spidev*即可看到设备号
测试SPI
官方B01套件请直接参考打开PWM.
Jetson Nano B01 带emmc模组版本,也就是国产套件,无法通过jetson-io.py来直接配置40PIN引脚。这里提供直接修改设备树文件的方式来开启pwm. 笔者目前只验证了JetPack4.6.2, 本次操作需要重装系统,请用户谨慎操作。
1. Ubuntu电脑主机或者虚拟机
2. Jetson Nano 主板
3. Micro USB数据线
需要在系统资源上修改设备树文件,如果你之前用SDK Manager安装过系统镜像,可以直接在上面修改。 如果没有的话,请参考以下资源下载部分先进行操作,以下资源包是Jetpack4.6.2版本的,如果你需要别的版本资源包下载,请参考FAQ里的资源包下载方法。
sudo mkdir sources_nano cd sources_nano
https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2 https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/ sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 ~/sources_nano/
tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2 cd Linux_for_Tegra/rootfs/ tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 cd ../ sudo ./apply_binaries.sh (若出现报错按照系统提示操作,然后再次输入该行命令)
sudo apt-get install -y device-tree-compiler
cd kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb
sudo cp tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00-bak.dts sudo gedit tegra210-p3448-0002-p3449-0000-b00.dts
将function修改为pwm0,将tristate修改为0x0,enable-input修改为0x1.
sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts
cd ../../ sudo ./flash.sh jetson-nano-emmc mmcblk0p1
完成开机配置
在终端输入以下指令
echo 0 > /sys/class/pwm/pwmchip0/export echo 8333333 > /sys/class/pwm/pwmchip0/pwm0/period echo 4166667 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable sudo cat /sys/kernel/debug/pwm
sudo /opt/nvidia/jetson-io/jetson-io.py
选择Configure Jetson 40Pin Header
指令开启PWM
echo 0 > /sys/class/pwm/pwmchip0/export echo 8333333 > /sys/class/pwm/pwmchip0/pwm0/period echo 4166667 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable sudo cat /sys/kernel/debug/pwm
打开终端,输入以下指令:
cd /usr/lib/nvidia/resizefs/ sudo chmod 777 nvresizefs.sh sudo ./nvresizefs.sh sudo reboot
点击进入,下拉找到KEY FEATURES IN JETPACK,点击L4T 32.7.1,如下图
进入后找到32.7.1 Driver Details,然后找到Jetson Nano的一列,下载 L4T Driver Package (BSP)和Sample Root Filesystem文件。
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841