Qualcomm Robotics RB5 平台软件用户指南(1)

150 篇文章 13 订阅
25 篇文章 2 订阅
本文详细介绍了QualcommRoboticsRB5平台的QUP和GPIO配置,包括串行引擎支持的接口、GPIO的配置方法以及如何在Linux环境中管理GPIO。同时,文章还涉及了多媒体设置,特别是显示设置的配置步骤,如使用Weston显示EGL应用程序。
摘要由CSDN通过智能技术生成


1 介绍

本文档介绍如何配置子系统功能、运行选定的系统用例以及使用可用的调试功能执行故障排除。本文档适用于有兴趣了解如何测试系统关键功能区域并排除故障的软件开发人员和系统测试人员。

Robotics RB5 平台支持 Linux Ubuntu 和 Linux Embedded 操作系统。在本文档中,操作系统特有的信息使用单独的头来呈现。

如需技术支持,请参阅https://www.qualcomm.com/support。

2 QUP 和 GPIO 配置

Qualcomm 通用外设(QUP)v3 串行引擎是一个硬件核心,支持通用异步接收器/发送器(UART)、串行外设接口(SPI)和内部集成电路(I 2 C)等多种低速外设。这些外设用于连接传感器、Bluetooth® 无线技术和基于触摸屏的设备。

QUP v3串行引擎支持系统中多个硬件实体的访问。每个实体都有自己的执行环境、单独的地址空间和中断线。

所有系列引擎均不可定制。参考软件使用一些串行引擎与 RB5 开发套件配合使用。保留相同的分配并仅将未使用的 GPIO 用于任何自定义外设接口。对于定制板设计,可以灵活地修改串行引擎 (SE)。

笔记
Linux 嵌入式系统不支持读取 GPIO 配置。未来版本将支持使用 devmem 读取 GPIO 值。

2.1 关于 QUP 端口

以下是 QUP 端口的配置设置:

  • QUP v3 串行引擎是一个高度灵活的可编程模块,支持各种串行接口,例如 UART、SPI、I 2 C 和 I3C。

  • 单个 QUP v3 串行引擎使用其内部串行引擎提供多达 8 个串行接口。加载到串行引擎的固件决定每个接口支持的协议。此行为是通过修改 TrustZone 中的QUPAC_Access文件以加载所需协议(I 2 C、SPI 或 UART)来实现的。
    QRB5165 包含 28 个 QUPS:

    • 20 个 QUP 用于应用处理器
    • 用于传感器低功耗岛 (SLPI) 的 8 个 QUP
  • 在一个 QUP 引擎中一次只能选择一种协议。例如,不再支持同步 UART 和 I 2 C 功能。每个 QUP 有 7 个通道 (I/O),编号从 0 到 6。

有关 QUP 端口的更多信息,请参阅Qualcomm Robotics RB5 平台软件参考手册(80-88500-4)。

2.2 GPIO 配置

在更新方向和值参数之前必须配置 GPIO。 GPIO方向和值可以通过接口更新sysfs。

  • QRB5165 支持 180 (146 + 34) GPIO 引脚
    • 普通 GPIO – 146
    • 扩展 GPIO (eGPIO) – 34. eGPIO 允许将 Qualcomm® Snapdragon™ 传感器核心或 LPASS I/O 重复用作常规 GPIO

要配置 GPIO 并识别 GPIO 基数,请执行以下步骤。

  1. 使用以下命令确定gpiochip0详细信息。

    cat /sys/kernel/debug/gpio
    

    值为。gpiochip0​gpiochip0: GPIOs 328-511

  2. 要识别接口的节点sysfs,请使用以下公式。
    GPIO基数+GPIO编号
    接口使用 GPIO 基数sysfs来创建用于从用户空间访问的节点。
    示例:从 开始gpiochip0: GPIOs 328-511,GPIO 基数为 328。对于 GPIO 47,节点为 328 + 47 = 375。

    • cd /sys/class/gpio/包含以下文件。
      • export– 用户空间通过将 GPIO 编号写入此文件来通知内核将 GPIO 的控制导出到用户空间。
        • gpio375示例:当内核代码请求时, 使用以下命令为 GPIO_47 创建节点。

          echo 375 > export
          
      • unexport– 反转导出到用户空间的效果。
        • 示例 – 使用以下命令删除gpio375使用该export文件导出的节点。

          echo 375 > unexport
          

GPIO 导出后,GPIO 信号的路径类似于sys/class/gpio/gpio375/(对于 GPIO_47)。

  • 使用以下命令读取和配置方向。

    • 读取当前方向:

      /sys/class/gpio/gpioN/direction
      
  • 配置方向:

    • gpioN作为输出引脚

      echo "out" > /sys/class/gpio/gpioN/direction
      
    • gpioN作为输入引脚

      echo "in" > /sys/class/gpio/gpioN/direction
      
      
  • 使用以下命令读取和配置该值。

    • 读取 的值gpioN:

      echo > /sys/class/gpio/gpioN/value
      
      
    • 配置值:

      • 写给1​gpioN

        echo 1 > /sys/class/gpio/gpioN/value
        

        笔记
        任何非零值都被视为高值。

      • 写给0​gpioN

        echo 0 > /sys/class/gpio/gpioN/value
        

通过ADB读取GPIO配置寄存器(以GPIO为例config0)并修改配置。确保启用 CONFIG_DEVMEM 内核配置。

笔记
CONFIG_DEVMEM 内核配置在基于 Ubuntu 的 Linux 系统上默认启用。

  1. 连接 网络(eth0或接口)后使用以下命令。wlan0

    apt-get update
    
    

    此命令更新系统上的包索引文件,其中包含有关可用包及其版本的信息。它从/etc/apt/sources.list文件中列出的源下载最新的软件包信息 。

  2. 安装该devmem2工具。

    apt-get install devmem2
    
    devmem2
    

    显示以下输出。
    用法: devmem2 { address } [ type [ data ] ] address :要操作的内存地址 type :访问操作 type :[b]yte、[h]alfword、[w]ord data :要写入的数据

    • devmem2该工具在基于 Ubuntu 的 Linux 系统上受支持。
    • devmem2Linux 嵌入式系统不支持该工具。
  3. 读取 GPIO_CFG0 寄存器。

    devmem2 0x0F500000
    
    

    显示以下输出。
    内存映射到地址 0x7fb7274000。地址 0xF500000 (0x7fb7274000) 处的值:0x1

    在哪里,

    • devmem2是一个从内存中的任何位置读取或写入的程序
    • 0x0F500000是实际运行的内存devmem2
    • 0x7fb7274000是虚拟地址0x0F500000
    • 0x1是读取的值
  4. 写入 GENI 初始 CFG 修订寄存器。

    devmem2 0x00984000 w 0x9
    

    显示以下输出。
    /dev/mem 打开。内存映射到地址 0x7fa494e000。地址 0xF500000 (0x7fa494e000) 处的值:0x1 写入 0x3;回读0x3

    • 在哪里,
      • 0x0F500000是GPIO_CFG0寄存器
      • 0x00984000是 QUPV3_0_SE1_GENI_INIT_CFG_REVISION (GENI 初始 CFG 修订寄存器)
      • /dev/mem opened.打开/dev/mem执行内存操作
      • Memory mapped at address 0x7fa494e000.映射到虚拟地址
      • Value at address 0xF500000 (0x7fa494e000): 0x1通过读操作显示地址单元中的当前值
      • Written 0x3; readback 0x3将0x3值写入内存位置

笔记

  • TrustZone 中QUPAC_Access文件的位置: /core/settings/buses/qup_accesscontrol/qupv3/config/8250/QUPAC_Access.c
  • QRB5165 器件的所有串行引擎均在 中列出qupv3_perms_qrb。只有可用的串行引擎才能被任何子系统访问。该设计足够灵活,可以仅列出特定平台上可用的串行引擎。
  • 可以修改 QUPAC_Access.c 文件以适应电路板 设计。qupv3_perms_qrb指定串行引擎的资源所有者。它最初根据系统 I/O GPIO 分配进行填充。更新 QUPAC_Access.c文件后 ,确保刷新devcfg.mbn。

有关自定义 QUP 的更多信息,请参阅Qualcomm Robotics RB5 平台软件移植指南(80-88500-1)。

3 配置多媒体设置

多媒体功能包括可在设备上配置的摄像头、音频、视频、图形和显示特性。

3.1 配置显示设置

  1. 将 HDMI 电缆连接到电视并打开设备电源。
    设备开机后Weston自动启动并显示Weston花图像。

笔记
要验证 Weston 状态,请使用以下命令。

ps -ef | grep weston
  1. 输入以下命令来采样 Wayland 图形应用程序。

    adb shell
    
    
    • Linux Ubuntu:

      export XDG_RUNTIME_DIR=/run/user/root
      
      cd /usr/bin
      
      ./weston-simple-egl
      
    • 嵌入式Linux:

      export WAYLAND_DISPLAY=wayland-1
      
      export XDG_RUNTIME_DIR=/run/user/root
      
      cd /usr/bin
      
      ./weston-simple-egl
      

将显示 Weston 简单 EGL 应用程序输出。

  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Robotics Toolbox创建ur5机械臂模型,您需要遵循以下步骤: 1. 安装MATLAB Robotics Toolbox。 2. 下载Universal Robots URDF文件。 3. 将URDF文件导入MATLAB中并使用robotics.URDF类读取。 4. 使用robotics.RigidBodyTree类创建机器人模型。 5. 添加所有关节和链接。 6. 定义机器人末端执行器(End Effector)。 7. 设置机器人的关节角度和末端执行器位置。 这里是一个示例代码,可以帮助您进一步了解如何使用Robotics Toolbox创建ur5机械臂模型: ``` % 安装Robotics Toolbox % 下载URDF文件 urdf = 'ur5.urdf'; ur5 = robotics.URDF(urdf); % 创建RigidBodyTree对象 robot = robotics.RigidBodyTree; % 添加链接 link1 = robotics.RigidBody('link1'); joint1 = robotics.Joint('joint1', 'revolute'); setFixedTransform(joint1, trvec2tform([0 0 0])); joint1.JointAxis = [0 0 1]; link1.Joint = joint1; addBody(robot, link1, 'base'); link2 = robotics.RigidBody('link2'); joint2 = robotics.Joint('joint2', 'revolute'); setFixedTransform(joint2, trvec2tform([0 0 0.163])); joint2.JointAxis = [1 0 0]; link2.Joint = joint2; addBody(robot, link2, 'link1'); % ... 添加更多链接和关节 % 添加末端执行器 eeBody = robotics.RigidBody('EndEffector'); setFixedTransform(eeBody.Joint, trvec2tform([0 0 0.09])); addBody(robot, eeBody, 'tool0'); % 设置关节角度和末端执行器位置 q = zeros(1,6); eePos = [0.4 0.1 0.3]; eeOri = [pi/2 0 pi/2]; tform = eul2tform(eeOri); tform(1:3, 4) = eePos; q = ik(eeBody, tform, [1 1 1 0 0 0]); show(robot, q); ``` 这个示例代码将创建一个ur5机械臂模型,并设置关节角度和末端执行器位置。您可以通过修改关节角度和末端执行器位置来控制机器人的运动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值