2022-04-06 RK3566 上调试百兆以太网卡YT8512C 调试记录

本文详细讲述了在嵌入式开发中,如何通过DTS配置问题排查与解决GMAC网卡启动失败的问题,涉及晶振测量、DMA初始化失败和最终的配置调整。重点在于DTS配置对硬件交互的影响及调试经验分享。

一、原理图

 

 二、dts

&gmac1_clkin{
     clock-frequency = <50000000>;
	 status = "okay";
};
&gmac1 {
		phy-mode = "rmii";
		clock_in_out = "input";
		snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
		snps,reset-active-low;
		snps,reset-delays-us = <0 20000 100000>;
		assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
		assigned-clock-parents = <&cru SCLK_GMAC1_RMII_SPEED>, <&gmac1_clkin>;
		pinctrl-names = "default";
		pinctrl-0 = <&gmac1m0_miim 
		             &gmac1m0_clkinout 
		             &gmac1m0_rx_bus2
		             &gmac1m0_tx_bus2 
		             &
<think> 根据用户的问题,需要解决在rk3566设备上运行ROS2节点时出现“Package 'project_node_pkg' not found”的错误。结合之前的讨论,这个问题通常是由于包没有被正确编译或环境变量未正确设置导致的。以下是详细的解决步骤: ### 解决步骤: 1. **确认工作空间结构正确**: - ROS2包必须放置在`src`目录下。检查包的位置: ```bash ls ~/桌面/project/ros_cpp/src ``` 应该能看到`project_node_pkg`目录。如果包直接放在工作空间根目录下(而不是`src`下),则需要移动: ```bash mkdir -p ~/桌面/project/ros_cpp/src mv ~/桌面/project/ros_cpp/project_node_pkg ~/桌面/project/ros_cpp/src/ ``` 2. **验证包配置文件**: - 确保包内有正确的`CMakeLists.txt`和`package.xml`文件。 ```bash ls ~/桌面/project/ros_cpp/src/project_node_pkg/package.xml ls ~/桌面/project/ros_cpp/src/project_node_pkg/CMakeLists.txt ``` - 检查`package.xml`: ```xml <package format="3"> <name>project_node_pkg</name> <!-- 其他依赖 --> <buildtool_depend>ament_cmake</buildtool_depend> <depend>rclcpp</depend> <!-- ... --> <export> <build_type>ament_cmake</build_type> </export> </package> ``` 3. **编译包**: - 在工作空间根目录下执行编译: ```bash cd ~/桌面/project/ros_cpp source /opt/ros/humble/setup.bash # 加载ROS2基础环境 colcon build --packages-select project_node_pkg ``` - 如果编译成功,会在工作空间下生成`build`、`install`、`log`目录。 4. **加载工作空间环境**: - 编译成功后,必须加载工作空间的设置文件: ```bash source ~/桌面/project/ros_cpp/install/setup.bash ``` 这一步会将当前工作空间的路径添加到`AMENT_PREFIX_PATH`中,使得ROS2能够找到这个包。 5. **验证包是否被识别**: - 运行以下命令检查包是否存在: ```bash ros2 pkg list | grep project_node_pkg ``` 应该输出`project_node_pkg`。 6. **运行节点**: - 如果节点名为`cpp_node`,则运行: ```bash ros2 run project_node_pkg cpp_node ``` ### 常见问题排查: - **环境变量未正确加载**:每次打开新终端都需要重新加载工作空间设置(`source install/setup.bash`)。 - **多工作空间干扰**:确保没有其他工作空间的环境变量覆盖了当前工作空间。可以通过`echo $AMENT_PREFIX_PATH`检查路径顺序,当前工作空间的路径应该在系统路径之前。 - **包名或节点名错误**:确认`package.xml`中的`<name>`和`CMakeLists.txt`中声明的可执行文件名正确。 ### 自动化脚本建议: 可以创建一个脚本来自动化这些步骤: ```bash #!/bin/bash cd ~/桌面/project/ros_cpp source /opt/ros/humble/setup.bash colcon build --packages-select project_node_pkg source install/setup.bash ros2 run project_node_pkg cpp_node ``` ### 相关问题: 1. 如何让ROS2工作空间的设置在每个新终端中自动生效? 2. 如果同一个ROS2包存在于多个工作空间,ROS2会优先使用哪一个? 3. 如何调试ROS2节点运行时的依赖问题? </think> ### 解决 `Package 'project_node_pkg' not found` 错误的完整指南 #### 一、核心排查步骤(针对rk3566设备) 1. **验证编译状态** ```bash # 在工作空间根目录执行 cd ~/桌面/project/ros_cpp colcon list | grep project_node_pkg ``` - ✅ 期望输出:`project_node_pkg /home/.../src/project_node_pkg` - ❌ 若无输出:说明包未被识别(跳转到步骤3) 2. **检查环境变量加载** ```bash # 按正确顺序加载环境(必须在工作空间根目录执行) source /opt/ros/humble/setup.bash && source install/setup.bash echo $AMENT_PREFIX_PATH ``` - 正确输出:`/home/rk3566/桌面/project/ros_cpp/install:/opt/ros/humble` - 错误输出:`/opt/ros/humble`(缺少工作空间路径)[^1] 3. **包结构验证** ```bash # 检查关键文件存在性 ls ~/桌面/project/ros_cpp/src/project_node_pkg/{package.xml,CMakeLists.txt} # 检查安装目录 ls install/project_node_pkg/share/project_node_pkg/package.xml ``` #### 二、针对性解决方案 1. **情况1:包未被编译** ```bash # 重新编译特定包(确保在src目录下) cd ~/桌面/project/ros_cpp colcon build --packages-select project_node_pkg # 检查编译日志 cat log/latest_build/project_node_pkg/stdout.log ``` 2. **情况2:环境加载错误** ```bash # 创建永久环境配置(解决终端重启失效) echo "source ~/桌面/project/ros_cpp/install/setup.bash" >> ~/.bashrc exec bash # 重新加载终端 ``` 3. **情况3:节点名称不匹配** ```bash # 查看包内实际节点名 cat install/project_node_pkg/lib/project_node_pkg/ | grep .* # 尝运行(假设节点名为my_node) ros2 run project_node_pkg my_node ``` #### 三、ARM设备特殊处理(rk3566) 1. **交叉编译验证** ```bash # 检查架构兼容性 file install/project_node_pkg/lib/project_node_pkg/cpp_node ``` - 应输出:`ELF 64-bit LSB executable, ARM aarch64` 2. **ROS2版本兼容性** ```bash # 确认设备与编译环境一致 ros2 version ``` - 必须与编译时一致(均为Humble) 3. **权限问题修复** ```bash # 添加可执行权限(ARM设备常需显式设置) chmod +x src/project_node_pkg/src/*.cpp colcon build --packages-select project_node_pkg ``` #### 四、终极验证流程 ```bash # 完整流程(在rk3566终端逐条执行) cd ~/桌面/project/ros_cpp source /opt/ros/humble/setup.bash source install/setup.bash ros2 pkg executables | grep project_node_pkg # 确认节点注册 ros2 run project_node_pkg cpp_node # 启动节点 ``` > **关键原理**:ROS2通过`AMENT_PREFIX_PATH`中的路径顺序查找包,工作空间的`install`目录必须优先于系统路径[^1]。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值