我想使用以下示例程序:http://hzqtc.github.io/2012/05/play-mp3-with-libmpg123-and-libao.html它使用
#include <ao/ao.h>
#include <mpg123.h>
Run Code Online (Sandbox Code Playgroud)
我安装了libao-dev和mpg123
sudo apt-get install libao-dev
sudo apt-get install mpg123
Run Code Online (Sandbox Code Playgroud)
然后使用.构建文件
gcc -O2 -o play play.c -lmpg123 -lao
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
"fatal error: mpg123.h no such file or directory".
Run Code Online (Sandbox Code Playgroud)
我是否需要安装另一个mpg123开发包,或者自己从raspberry上的源代码构建包来获得一个工作库?或者我需要包括什么,让g ++找到mpg123库?Libao图书馆好像被发现了...使用"mpg123 text.pm3"播放mp3文件.但我搜索了完整的文件结构"mpg123.h",但该文件不存在.所以我假设我需要安装一些包含库的附加程序,任何人都可以帮助我这是哪一个?或者只是从源代码构建mpg123的选项?
谢谢你的帮助 :-)!
我读到“软件 PWM”的驱动程序以某种方式在 PWM-HW 上运行,并在不使用 CPU 的情况下访问所有 GPIO。有人可以解释它是如何工作的吗?Raspberry Pi 中是否有第二个处理器用于 PWM 和 PCM 模块(是否有块图)?
这个问题与我在我的机器人中经常使用的这个优秀的驱动程序有关。
这是解释,不幸的是我不明白......
驱动程序通过设置 DMA 控制块的链接列表来工作,最后一个链接回第一个,因此一旦初始化,DMA 控制器就会连续循环,除非需要更改脉冲宽度,否则驱动程序不需要参与. 对于给定的周期,有两个 DMA 控制块;第一个将单个字传输到 GPIO“清除输出”寄存器,而第二个将一定数量的字传输到 PWM FIFO 以生成所需的脉冲宽度时间。此外,穿插这些控制块的是每个配置的伺服器,用于设置输出。
虽然驱动程序确实使用了 PWM 外设,但它仅使用它来调整 DMA 传输的速度,从而产生准确的延迟。”
以下理解是否正确:
DMA 控制器就像第二个处理器。您可以在其上运行代码。因此,这里使用它与 PWM 块一起控制所有 Raspberry GPIO 引脚的高/低状态。DMA 控制器会连续执行此操作。Raspberry 中可能有不止一个 DMA 控制器,因此 OS Linux 的速度不会因为缺少一个 DMA 控制器而受到太大影响。
我不明白 DMA 和 PWM 究竟是如何协同工作的。