高通Ride软件开发包使用指南(9)

6.11 故障排除

6.11.1 手动启动SDK/不同配置文件启动SDK

要在重启后手动启动 SDK,请删除或重命名文件 /opt/qride/conf/target-name。 如果启动脚本没有找到那个文件,它不会在启动时启动 SDK。
默认情况下,命令
$ /opt/qride/bin/qride-stack --target M0 –start

使用配置 /opt/qride/conf/system.json。 如果在开发过程中使用多个配置文件,可以指定要使用的配置文件 $ /opt/qride/bin/qride-stack --config <full path to generated JSON> -- target M0 –start

配置参数也可用于 x86 SDK。

6.11.2 可视化问题

6.11.2.1 显示配置

对于安装了外部 GPU 卡的系统,确保图形驱动程序使用 Nouveau 驱动程序:

# sudo lshw -class video | grep driver=
configuration: driver=nouveau latency=0
or
configuration: driver=i915 latency=0

禁用任何 NVIDIA 驱动程序(如果存在)。 否则,可视化将无法正常运行,即 TinyViz 窗口将出现但看不到输出。

要删除所有 NVIDIA 驱动程序,请使用以下命令并重新启动 Ubuntu 系统:

# sudo apt purge nvidia*
# sudo apt autoremove
6.11.2.2 无视频

如果 TinyViz 窗口打开但没有视频显示:

  • Ubuntu 防火墙可能会阻止来自QDrive 平台的DDS/RTPS 消息。
  • 如果使用USB/以太网适配器,某些品牌会阻止用于视频图像的大型相机数据包。
  • 在Ubuntu 中,尝试“ping -s 1450 192.168.1.1”以查看在QDrive 网络上是否观察到任何数据包丢失。 理想情况下,应该是零损失。 丢失百分比越高,视频播放越有可能无法正常工作。
6.11.2.3 视频断断续续

如果播放视频但出现断断续续,则可能是平台和 Ubuntu 之间丢弃了 DDS/RTPS 数据包。 也有可能是 Ubuntu 机器动力不足,无法处理请求的解码流数量。
尝试以下一种或多种解决方案进行故障排除:

  • 减少JSON 配置中解码器的数量。 删除解码器行条目(不需要删除相应的编码器)。
{ "template": "driver/camera/vdec", "name": "VDEC3", "node": "N1",
"camera": "CAM3" },
  • 通过修改“mbps”值降低HEVC 编码比特率。
{ "template": "driver/camera/hevc", "name": "VENC0", "node": "N0",
"camera": "CAM0", "mbps": "4" },
  • 尝试结合减少解码器和 HEVC 的数量,看看视频播放是否有所改善。
  • 如果向x86 配置添加了额外的日志记录,则恢复为默认日志级别。 额外记录到硬盘可能会影响视频解码。

6.11.3 平台构建问题

在 QDrive 平台下载和构建过程中可能会出现一些错误。 验证以下内容:

  • 安装第3.2 节中列出的所有apt 包。 由于未安装的软件包,在 build.sh make 过程中可能会出现各种错误。
  • 确保在执行下载构建脚本之前从QNX 获取pci 服务器文件并将其放置在平台目录中。 这可能会导致构建创建错误,因为 QDrive QNX 构建需要 pci 服务器文件进行编译。
  • 在开始构建过程之前,执行QNX 软件中心GUI 并确保所有许可证都已正确激活(参见第3.4 节)。 如果许可证未正确激活,则不会创建 QNX 二进制文件,构建创建也会失败。

6.11.4 GIT 存储库的 Docker 设置问题

某些国家/地区可能无法访问某些存储库。 解决方法是替换这些存储库。
例如:

~/qride/toolchain $ sed -i 's,github.com,github.com.cnpmjs.org,g'
target/x86_64-ubuntu2004
~/qride/toolchain $ sed -i 's,services.gradle.org,downloads.gradle-
dn.com,g’ target/x86_64-ubuntu2004
~/qride/toolchain $ sed -i 's,github.com,github.com.cnpmjs.org,g'
target/aarch64-qos220
~/qride/toolchain $ sed -i 's,services.gradle.org,downloads.gradle-
dn.com,g’ target/aarch64-qos220

6.11.5 验证相机功能

如果怀疑相机无法正常工作,请验证是否正确检测到相机。
以下示例显示检测到七个摄像头并使用以下方法对其进行验证:

# slog2info | grep -i ar0231_ext_isp_detect:425
Jan 01 10:06:53.303 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 0, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.305 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 1, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.305 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 2, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.307 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 3, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.480 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 0, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.482 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 1, Ser ID[0x91]: addr 0xd
Jan 01 10:06:53.483 AIS.1032247 ais_server 415
ar0231_ext_isp_detect:425 ALWAYS [max96712 WARN ] Detected Camera
connected to Link 2, Ser ID[0x91]: addr 0xd

qcarm_test
还可以执行 qcarcam_test 二进制文件来测试端到端相机功能:

# $ /mnt/bin/camera/qcarcam_test/qcarcam_test
...
Success - First Frame [3:3]
Success - First Frame [2:2]
Success - First Frame [1:1]
Success - First Frame [0:0]
Success - First Frame [6:8]
Success - First Frame [5:5]
Success - First Frame [4:4]
--------FPS Report - 10.0 sec-----------
| id | qid | state (time)| fps | rel |
| 0 | 0 | ok (9.8)| 28.6 | 28.3 |
| 1 | 1 | ok (9.8)| 28.5 | 28.3 |
| 2 | 2 | ok (9.8)| 28.5 | 28.3 |
| 3 | 3 | ok (9.8)| 28.5 | 28.3 |
| 4 | 4 | ok (9.7)| 28.5 | 28.3 |
| 5 | 5 | ok (9.7)| 28.5 | 28.3 |
| 6 | 8 | ok (9.7)| 28.5 | 28.3 |
-----------------------------------------

6.11.6 网络连接

理想情况下,QDrive 3.0 和 x86 Ubuntu 系统之间的连接是直接连接的,中间的网络设备最少。
使用 USB 以太网加密狗存在问题,因此建议用户直接连接到 PC 的以太网端口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于高通平台上的 Android 9 驱动开发中的 GPIO,你可以按照以下步骤进行操作: 1. 首先,在设备树(Device Tree)中定义 GPIO 控制器和 GPIO 引脚。你需要在设备树文件中添加相关的节点来描述 GPIO 控制器的物理地址、中断信息等。同时,你还需要定义需要使用的 GPIO 引脚。 例如,你可以在设备树中添加以下节点来描述一个 GPIO 控制器: ``` gpio-controller { compatible = "vendor,controller-name"; reg = <0xaddress>; #gpio-cells = <2>; }; ``` 并且在需要使用的 GPIO 引脚节点中添加类似以下内容: ``` gpio_pin: gpio_pin { gpio-hog; gpios = <&gpio_controller gpio_number GPIO_ACTIVE_LOW>; output-low; }; ``` 2. 在驱动代码中获取 GPIO 控制器和 GPIO 引脚的句柄。你可以使用 `gpio_request()` 函数来请求一个 GPIO 引脚,并获得一个 GPIO 的句柄。这个函数需要传入 GPIO 引脚号和一个字符串标识符来描述这个 GPIO 引脚的用途。 例如,你可以使用以下代码来请求 GPIO 引脚: ``` struct gpio_desc *gpio_desc; int ret; gpio_desc = gpio_request(GPIO_NUMBER, "gpio_name"); if (IS_ERR(gpio_desc)) { ret = PTR_ERR(gpio_desc); // 处理错误 } ``` 3. 在驱动代码中对 GPIO 进行操作。一旦你获得了 GPIO 引脚的句柄,你可以使用一系列的函数来设置 GPIO 的方向(输入或输出)、读取或写入 GPIO 的电平状态等。 例如,你可以使用以下代码来设置 GPIO 引脚为输出,并将其设置为高电平: ``` ret = gpio_direction_output(gpio_desc, 1); if (ret < 0) { // 处理错误 } ret = gpio_set_value(gpio_desc, 1); if (ret < 0) { // 处理错误 } ``` 4. 最后,在驱动代码中释放 GPIO 引脚的句柄。当你不再需要使用 GPIO 引脚时,记得使用 `gpio_free()` 函数来释放它。 例如,你可以使用以下代码来释放 GPIO 引脚句柄: ``` gpio_free(gpio_desc); ``` 以上是在高通平台上开发 Android 9 驱动中使用 GPIO 的一般步骤。具体的实现可能会因平台和硬件的差异而有所不同,你需要参考相关的文档和代码来进行开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值