Jetson AGX Orin PPS获取失败的内核代码修改

目录

前言描述

 问题分析

1. 检查DTSI是否有配置PPS 

2. 检查DTB更新系统启动后的dts信息是否匹配

3. 检查系统启动后的pps log信息

4. 排查代码并对比Kernel4.9版本

5. 重新编译内核Image并更新后,查看dmesg信息,申请pps 成功


前言描述

由于公司的项目中采用了GPS/北斗模块进行定位和授时,在使用PPS进行授时时发现,Kernel-5.10版本在申请pps gpio时报错失败,错误信息如下图所示

问题分析

1. 检查DTSI是否有配置PPS 

pps {
	// here use gpio for the pin in which you want pps signal. GPIO13_based_SCH
	gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(H, 0) GPIO_ACTIVE_LOW>; 
	compatible = "pps-gpio";
	assert-falling-edge;
	status = "okay";
};

2. 检查DTB更新系统启动后的dts信息是否匹配

待系统启动后,检查升级的dtb 文件是否已更新

$sudo dtc -I fs -O dts -o extracted.dts /proc/device-tree

$gedit extracted.dts 

检查是否与步骤1 中的内容相符

3. 检查系统启动后的pps log信息

 dmesg log 查看是failed to request PPS GPIO 

nvidia@nvidia-desktop:~$ sudo dmesg | grep pps
[sudo] password for nvidia: 
[    1.602688] pps_core: LinuxPPS API ver. 1 registered
[    1.607650] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    4.339057] pps-gpio pps: failed to request PPS GPIO
[    4.344157] pps-gpio pps: failed to map GPIO to IRQ: -22
[    4.349623] pps-gpio: probe of pps failed with error -22

4. 排查代码并对比Kernel4.9版本

kernel/kernel-5.10/drivers/pps/clients/pps-gpio.c
需修改Line189 一行内容,“return -EINVAL;” 改为 “return ret;”


/* GPIO setup */
if (pdata) {
		data->gpio_pin = pdata->gpio_pin;
		data->echo_pin = pdata->echo_pin;

		data->assert_falling_edge = pdata->assert_falling_edge;
		data->capture_clear = pdata->capture_clear;
		data->echo_active_ms = pdata->echo_active_ms;
} else {
		ret = pps_gpio_setup(pdev);
		if (ret)
				return ret; //-EINVAL;
}

5. 重新编译内核Image并更新后,查看dmesg信息,申请pps 成功

nvidia@nvidia-desktop:~$ sudo dmesg | grep pps
[    1.589752] pps_core: LinuxPPS API ver. 1 registered
[    1.594714] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[   14.385358] pps pps0: new PPS source pps.
[   14.389714] pps pps0: Registered IRQ 294 as PPS source


nvidia@nvidia-desktop:~$ ls -l /dev/pps0 
crw------- 1 root root 246, 0 Sep  8 05:58 /dev/pps0
#安装pps-tools 进行对应操作即可
sudo apt install pps-tools
sudo ppstest /dev/pps*
sudo ppswatch -a /dev/pps0

#Debug 查看IO和Interrupt状态
sudo cat /sys/kernel/debug/gpio | grep -i pps
sudo cat /proc/interrupts | grep pps

后续搜寻NVIDIA Forum上发现也有给出对应的解决措施!

参考连接:

JetPack 5.0.2,Orin AGX dev kit, /dev/pps1 not found - #3 by JerryChang - Jetson AGX Orin - NVIDIA Developer Forums

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Jetson AGX Orin是一款强大的嵌入式计算平台,可以轻松安装ROS 2以实现机器人及其他自动化系统的开发和运行。以下是使用300字中文回答Jetson AGX Orin安装ROS 2的步骤和注意事项。 首先,确保Jetson AGX Orin已经正常运行,并且您已经完成了基本的设置和配置。 接下来,从ROS 2官方网站(https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/)下载适用于您的Jetson AGX Orin的ROS 2发行版,建议选择最新版本Foxy Fitzroy。下载完成后,将.deb文件保存到您的Jetson AGX Orin的本地存储中。 然后,在Jetson AGX Orin的终端中打开一个新的命令行窗口,以便在系统中进行安装。使用以下命令导航到.deb文件的目录: cd /path/to/deb/file 然后,使用以下命令安装ROS 2: sudo apt install ./ros-foxy-*.deb ROS 2的安装过程可能会花费一些时间,具体取决于您的Jetson AGX Orin的性能和网络连接速度。在安装过程中,请耐心等待,直到安装完成。 安装完成后,您需要设置ROS 2的工作环境。使用以下命令执行此操作: source /opt/ros/foxy/setup.bash 现在,您可以开始使用ROS 2在Jetson AGX Orin上进行开发和运行机器人应用程序了。请查阅ROS 2的文档和教程,以了解更多关于ROS 2在Jetson AGX Orin上的使用方法和功能。 总结一下,安装ROS 2到Jetson AGX Orin的过程包括下载适用于该平台的ROS 2发行版,并使用apt命令进行安装。安装完成后,使用source命令设置ROS 2的工作环境。最后,您就可以开始使用ROS 2在Jetson AGX Orin上进行开发和运行机器人应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值