NVIDIA Jetson Orin Nano 是一款功能强大的边缘AI计算平台,其GPIO(通用输入输出)引脚可以通过软件进行复用配置,以适应不同的应用需求。使用`devmem`工具,你可以直接操作硬件寄存器来配置Jetson Orin Nano的GPIO引脚。以下是一个基本的步骤指南,帮助你使用`devmem`来玩转Pinmux引脚复用配置。
### 准备工作
1. "安装`devmem`工具":
你需要在Jetson Orin Nano上安装`devmem`工具,如果未安装,可以通过以下命令安装:
```sh
sudo apt-get install devmem2
```
2. "确定GPIO引脚":
首先,你需要确定你想要复用的GPIO引脚。你可以在NVIDIA提供的文档中找到关于GPIO引脚和Pinmux的信息。
### 配置Pinmux
以下是配置Pinmux的一般步骤:
1. "确定Pinmux控制寄存器":
对于每个GPIO引脚,都有一个或多个寄存器控制其功能。你需要查找这些寄存器的地址。
2. "配置功能选择寄存器":
通常,每个GPIO引脚都有几个功能选项,这些选项由功能选择寄存器控制。你需要设置这个寄存器,选择你想要的功能。
3. "配置驱动选择寄存器":
如果你选择了某个功能,可能还需要设置
相关内容:

视频讲解:Jetson Orin Nano GPIO 实战,用 devmem 玩转 Pinmux 引脚复用配置_哔哩哔哩_bilibili
测试的板子为 Jetson Orin Nano devkit,Jetpack6.2,内核版本 5.15.148-tegra
devmem 是一个直接读写寄存器的工具,通过 mmap 将 /dev/mem 中的物理地址区域映射到用户空间进程地址空间,从而实现直接读写,正常情况下在 /dev 下可以看到 mem

需要 TRM 手册查看相关寄存器,以及安装 busybox,busybox 内置了 devmem
sudo apt install busybox

读指令
sudo busybox devmem 0x11111111
写指令
sudo busybox devmem 0x11111111 w 0x123
我们测试一个 gpio,比如开发板的 J12 的 pin3

根据 TRM 手册,找到 I2C_SDA 的 pinmux 地址偏移是 0x18

寄存器地址如下为 0x0c302000

所以读取寄存器值为如下指令
sudo busybox devmem 0x0c302018

使用 gpioinfo 查看这个 pdd.02 是 input 状态

我们来对比 pinmux 寄存器来看下是否是 input

可以看到对应 bit5 bit6 分别为 1,对应配置为 E_IO_HV 为 ENABLE 以及 E_INPUT 为 ENABLE