9.2向社区寻求帮助

9.2 向社区求助

本章节参考:https://v3.xenomai.org/tips/getting-help/

获取帮助

如果您需要一份指引来了解 Xenomai 是什么,以及如何查找此项目的资源,您可能需要阅读这份面向新人的文档:https://v3.xenomai.org/overview/

不要为了获取帮助而向 Xenomai 维护者发送私人电子邮件,您很可能得不到任何回复。这并非针对个人。如果您打算这样做,请重新考虑:有明显的理由不这样做。请改用讨论列表。

Xenomai 讨论列表

如果您遇到 Xenomai 的问题,而故障排除指南没有涵盖,那么寻求帮助的最佳地点是 Xenomai 项目的主要电子邮件讨论列表。

多年来,许多问题已在此列表中讨论过,因此您可能首先想使用您喜欢的搜索引擎搜索列表存档,以寻找类似/相同问题的解决方案。

当向邮件列表发送求助请求时,遵循此清单将最大限度地提高您的问题得到快速准确回复的机会:

  • 提供有关您的系统配置的详细信息
  • 简洁准确地描述问题
  • 注意错误代码
  • 提供自包含的测试用例(test case)

1. 提供有关您的系统配置的详细信息

请提供关于您基础系统配置的精确准确 的信息。无论您运行的是单内核还是双内核配置,此类信息必须包括:

  • 涉及的主处理器架构(ARM、PowerPC、x86、Blackfin 等)。在适用时提及 32/64 位变体也很重要。

  • 如果您的目标系统是嵌入式平台,那么请务必提及 SoC 名称或系列。如果是定制硬件,那么提及它可能衍生自或最接近的供应商原产 SoC 会有所帮助。

  • 在您的硬件上运行的 Linux 内核发行版本号,如果内核来自稳定系列,请提及子版本号(例如 v3.10.18)。

  • 启动目标系统时传递给内核命令行(kernel command line)的动态启动参数。您可以通过读取 /proc/cmdline 从运行中的系统检索它们。

  • 显然,还有您遇到问题的 Xenomai 发行版本号。如果您直接从我们的 GIT 仓库拉取 Xenomai 代码,那么请提及分支和指向您所使用的 Xenomai 代码的 SHA1 提交号。

    • 如果运行 Xenomai 3,sbin/version 命令将在从 GIT 树构建时输出 SHA1 提交号:

      $ /usr/xenomai/sbin/version
      Xenomai/mercury v3.0-rcl -- #358901b (2014-08-05 18:19:10 +0200)

  • 传递给配置脚本(configure script)、用于构建 Xenomai 库的配置选项(configuration knobs)。

    • 要找回它们,只需进入您的构建目录,然后键入:

      $ grep configure config.status

    • 如果您无法访问 Xenomai 安装的构建树,但仍然足够幸运运行着 Xenomai 3,您可以通过以下命令检索此信息:

      $ /usr/xenomai/bin/xeno-config --info|grep -i build

  • 提及 Linux 发行版也可能有助于判断您的报告是否匹配过去在此类环境中已识别的典型问题。

  • 如果涉及双内核配置,请务必同时提及以下信息:

    • Dovetail:如果您直接从我们的 GIT 仓库拉取 Dovetail 代码,那么也请提及分支和指向您所使用的 Dovetail 代码的 SHA1 提交号。
    • I-pipe: I-pipe 核心版本号,可以通过读取 /proc/ipipe/version 获取。如果您直接从我们的 GIT 仓库拉取 I-pipe 代码,那么也请提及分支和指向您所使用的 I-pipe 代码的 SHA1 提交号。

在您报告问题的第一封电子邮件中就提供所有必需的系统配置信息,将最大限度地提高您的求助请求获得快速准确回复的机会。

如果您的目标系统在完全安装 Xenomai 后能正常启动,在其上运行 xeno-config --info 应该会产生前面提到的所有必需信息。

2. 简洁准确地描述问题

在描述问题时,尝试做到简洁,但不要含糊不清。因为时间对我们所有人来说都可能是稀缺资源,您能用越少的文字告诉我们更多关于问题的信息,我们理解背景所需的时间就越少,快速解决该问题的动力就越大。

通常,您肯定需要提及:

  • 您在会话期间(从启动到错误显现)收到的任何内核警告(kernel warning),
  • 在运行遇到问题的应用程序时,在终端上收到的任何警告、错误消息或不寻常的通知。

有时内核警告或通知可能会被忽视,特别是当系统控制台对用户不可见时。然而,通过此通道可能会获得重要信息。因此,请确保在要求时提供完整的内核日志,包括早期引导加载程序(bootloader)消息。

在嵌入式系统上,获取此类信息的典型方式是从串行控制台接收。如果串行控制台不可用,您可以使用 netconsole 通过以太网线发送控制台输出。如何在您的内核上设置 netconsole 在互联网上的多个地方有描述:

3. 注意错误代码

提供给应用程序的大多数 Xenomai 服务都会返回操作状态码,这在许多情况下可能会预先警告您当前的问题。您在代码中检查它们了吗?

例如,您检查了每一次调用的返回值吗?

  • 线程创建服务(thread creation service)的调用?
  • 对可能阻塞/休眠(blocking/sleeping)服务的调用?
  • 资源分配请求(例如内存)?

4. 提供自包含的测试用例(test case)

如果您的测试涉及运行您自己编写的一段代码,请将错误(bug)简化为尽可能最简单的自包含测试用例,这将允许我们重现该问题。

附在错误报告(bug report)上的一个合理且简单的自包含测试用例,几乎总是能导致后者在维护者无底洞般的待办事项列表(TODO list)中获得高优先级。投入一小时来精心制作一个描述性的测试用例是值得的,相比于被卡住一段未定义的时间,等待一个可能不会到来的反馈。

相关推荐
aspirestro三水哥2 天前
8.5CPU隔离与亲和性
rtos·xenomai
帅得不敢出门3 天前
MacOS安装VSCode在QEMU上模拟跑FreeRtos
ide·vscode·macos·freertos·rtos
liu_endong3 天前
RTOS基于7840——任务创建、启动、切换、删除
mcu·rtos·杰发科技·autochips·车规芯片
香水5只用六神7 天前
【RTOS快速入门】05_动态_静态创建任务(2)
c语言·stm32·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
香水5只用六神7 天前
【RTOS快速入门】06_任务状态理论讲解(1)
c语言·stm32·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
香水5只用六神7 天前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件
香水5只用六神7 天前
【RTOS快速入门】05_动态_静态创建任务(1)
c语言·开发语言·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
混分巨兽龙某某2 个月前
基于STM32的嵌入式操作系统RT-Thread移植教学(HAL库版本)
stm32·嵌入式硬件·rt-thread·rtos
aspirestro三水哥2 个月前
7.2实时进程如何打印输出
rtos·xenomai