16

我们即将着手实现一个运行 Linux 的设备,该设备(除其他外)将连接到一个软件定义的 FM/AM 收音机,该收音机还可以接收描述播放列表和其他此类内容的 RDS 数据。这是一个相对愚蠢的设备,主要包含一个或两个用作调谐器的 DSP,否则对信号的处理很少。

我在想设备的内核驱动程序,然后是一个用户态硬件抽象层,它提供了一个标准化的接口,并抽象出接收 RDS 数据的确切时间的细节,并处理错误处理和所有其他杂乱的东西。是否已经有这样的用户层?要么完全避免制作它,要么让我们的东西与已经存在的东西兼容,这样我们就可以根据需要将其他项目用于广播 UI。

4

3 回答 3

12

linux中的无线电支持

听起来您正在创建一个新的硬件无线电设备?您可能需要为此设备构建驱动程序。可以在此处此处此处找到一些入门帮助。如果您的设备不是新设备,它可能已经在 Video4Linux2 项目中有驱动程序

目前似乎有一些基于saa6588内核模块的 RDS 相关项目。

根据此页面,这些卡目前具有SAA6588芯片组:

  • Terratec Cinergy 600
  • KNC ONE 电视台 RDS
  • KNC 一台电视台 DVR
  • 台风电视调谐器卡 RDS
  • Sundtek MediaTV Pro(制造商支持)
  • Sundtek USB FM 收音机(FM 发射器/接收器,制造商支持)

RDS 特定信息

我建议查看一些与 Video4Linux2 (v4l2) 相关的项目,这里有一个RDS 解码库。该库在用户空间中运行,因此可以在那里为您完成 RDS 解码工作:

根据 V4L2 规范,来自 RDS 解码器的原始数据是从无线电设备中读取的。数据由块组成,每个块长 3 个字节。所有解码都必须在用户空间中完成。

RDS API

这是Video4Linux2 的完整 API 参考。这是一个熟悉它的文章系列

RDS API的特定部分在此处。此页面提供有关如何获取有关 RDS 数据是否可用的更新的信息:

可以通过查看 struct v4l2_tuner 的 rxsubchans 字段来检测是否存在 RDS 信号:如果检测到 RDS 数据,则将设置 V4L2_TUNER_SUB_RDS。

Gnu Radio Companion 中的 SDR RDS 解码器 DSP

虽然它不是官方 API,但我发现了最后一个可能值得研究的小项目:

这里还有一些值得研究的无线电相关项目。

于 2013-02-21T18:02:22.730 回答
2

可能值得研究一下 GENIVI 联盟 ( http://www.genivi.org/ ) 是否有一个标准的应用程序。他们正在开发专门用于汽车“信息娱乐”目的的此类标准,这似乎属于他们的标准化领域。

不幸的是,他们似乎没有公开发布他们的东西,因此您可能需要四处询问或直接向他们发送电子邮件。

于 2013-02-26T06:48:09.507 回答
1

GNU Radio怎么样?他们为许多软件定义的无线电组件提供硬件支持,并且通过 GUI 与他们的“GNU Radio Companion”(GRC)轻松连接数据流。

他们使用可以为您的 UI 层访问的 Python 和 C++ API。网上有很多例子。

于 2013-02-25T19:15:15.380 回答