【问题标题】:Custom kernel module Integration自定义内核模块集成
【发布时间】:2017-05-31 10:52:29
【问题描述】:

有人要求我将自定义 JPEG 编码器内核模块集成到 linux 树中。描述太笼统了。谁能建议内核树应该去哪里?我的意思是在驱动程序中属于哪个类别?我假设这将被编译为一个模块,而不是静态链接到内核。如果我概括这个问题,任何自定义内核模块应该存在于内核树中的什么位置?假设内核模块是一个视频/音频解码器/编码器。在这种情况下,正如我所说,它是一个 JPEG 编码器。

我们将不胜感激任何帮助。

谢谢。

【问题讨论】:

  • 是编码的硬件驱动还是纯软件解决方案?
  • 是的,有一个专门的硬件块来进行实际编码。
  • 考虑 drivers/media 文件夹。如果你想很好地集成它,它应该是 v4l2 兼容的驱动程序。
  • 这听起来有点愚蠢,但请原谅我问,驱动程序可以位于内核树中吗?在驱动程序/媒体中但仍被编译为内核模块?或者它必须静态链接到内核。

标签: linux linux-kernel


【解决方案1】:

当我发布这个问题时,我并不清楚驱动程序是如何分类并放置在内核树中的。如此探索,这是我迄今为止发现的:

  1. 如果我正在集成/编写新的驱动程序,例如环形振荡器(该设备在给定输入周期值的情况下简单地生成一些频率,频率数被馈送到随机数发生器)。据我了解,这应该放在 linux/drivers/misc/ 下,而有人认为这应该放在 linux/drivers/misc/ 下。但除此之外,这种司机应该去哪里似乎没有严格的规定。因此,最终将其放置在哪里完全取决于您的判断力和判断力。我已经给出了here所涉及的步骤的详细信息。

  2. 我还必须集成一个 jpeg 编码器,我不知道该驱动程序应该放在哪里。我最初以为我会按照 cmets 中的建议将它放在 linux/drivers/media/ 下。但事实证明这是一个偏好问题。最后我将它集成为一个新的 buildroot 包。如果你有兴趣,我已经描述了它here

这是我目前的理解。如果有人认为我遗漏了什么,请指出。

【讨论】:

  • 我不明白你想说什么?
  • 我不确定您没有得到问题或答案的哪一部分?我可以澄清您是否有任何不明白的具体点。
  • 如果我没记错的话,这是一个广泛的答案。请尝试用示例或代码来解释@EmbeddedDev
  • 当您在开发特定产品时,您的软件树将拥有一个内核存储库以及其他存储库。因此,如果您有一个自定义驱动程序要集成到树中,您将如何处理呢?你把它放在树的什么地方?你一定要把它放在“linux/driver”文件夹下的某个地方吗?您是否将其静态链接到内核?
  • @RohitPoudel 好的,我明白了你的意思,我会用代码 sn-ps 来解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
相关资源
最近更新 更多