WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2017-11-06 10:40:57

cityf
会员
注册时间: 2017-11-03
累计积分: 159

小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyalsa.git

相关问题: 请问全志V3s使用荔枝派最新的 linux 4.13-y 分支,如何支持声卡?

离线

#2 2017-11-06 11:32:53

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

1. git clone https://github.com/tinyalsa/tinyalsa.git

2. 把所有Makefile的 CC行都改成这样:  CC = $(CROSS_COMPILE)gcc

3. 执行 CROSS_COMPILE=arm-linux- make

离线

#3 2017-11-06 11:36:17

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

离线

#4 2018-02-03 09:43:07

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

晕哥,上面几行代码是在Makefile上面加吗,要在那个位置加呢
下面是utils下的Makefile文件

DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/man

CROSS_COMPILE ?=
CC = $(CROSS_COMPILE)gcc

CFLAGS += -Wall -Wextra -Werror -Wfatal-errors
CFLAGS += -I ../include
CFLAGS += -L ../src
CFLAGS += -O2

VPATH = ../src:../include/tinyalsa

.PHONY: all
all: -ltinyalsa tinyplay tinycap tinymix tinypcminfo

tinyplay: tinyplay.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinycap: tinycap.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinymix: tinymix.c pcm.h mixer.h asoundlib.h libtinyalsa.a
tinypcminfo: tinypcminfo.c pcm.h mixer.h asoundlib.h libtinyalsa.a

.PHONY: clean
clean:
        rm -f tinyplay tinycap
        rm -f tinymix
        rm -f tinypcminfo

.PHONY: install
install: tinyplay tinycap tinymix tinypcminfo
        install -d $(DESTDIR)$(BINDIR)
        install tinyplay $(DESTDIR)$(BINDIR)/
        install tinycap $(DESTDIR)$(BINDIR)/
        install tinymix $(DESTDIR)$(BINDIR)/
        install tinypcminfo $(DESTDIR)$(BINDIR)/
        install -d $(DESTDIR)$(MANDIR)/man1
        install tinyplay.1 $(DESTDIR)$(MANDIR)/man1/
        install tinycap.1 $(DESTDIR)$(MANDIR)/man1/
        install tinymix.1 $(DESTDIR)$(MANDIR)/man1/
        install tinypcminfo.1 $(DESTDIR)$(MANDIR)/man1/

离线

#5 2018-02-03 10:25:02

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

zhuacai 说:
晕哥 说:

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

晕哥,上面几行代码是在Makefile上面加吗,要在那个位置加呢
下面是utils下的Makefile文件
DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/man

CROSS_COMPILE ?=
CC = $(CROSS_COMPILE)gcc




CFLAGS += -Wall -Wextra -Werror -Wfatal-errors
CFLAGS += -I ../include
CFLAGS += -L ../src
CFLAGS += -O2

VPATH = ../src:../include/tinyalsa

.PHONY: all
all: -ltinyalsa tinyplay tinycap tinymix tinypcminfo

tinyplay: tinyplay.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinycap: tinycap.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinymix: tinymix.c pcm.h mixer.h asoundlib.h libtinyalsa.a
tinypcminfo: tinypcminfo.c pcm.h mixer.h asoundlib.h libtinyalsa.a

.PHONY: clean
clean:
        rm -f tinyplay tinycap
        rm -f tinymix
        rm -f tinypcminfo

.PHONY: install
install: tinyplay tinycap tinymix tinypcminfo
        install -d $(DESTDIR)$(BINDIR)
        install tinyplay $(DESTDIR)$(BINDIR)/
        install tinycap $(DESTDIR)$(BINDIR)/
        install tinymix $(DESTDIR)$(BINDIR)/
        install tinypcminfo $(DESTDIR)$(BINDIR)/
        install -d $(DESTDIR)$(MANDIR)/man1
        install tinyplay.1 $(DESTDIR)$(MANDIR)/man1/
        install tinycap.1 $(DESTDIR)$(MANDIR)/man1/
        install tinymix.1 $(DESTDIR)$(MANDIR)/man1/
        install tinypcminfo.1 $(DESTDIR)$(MANDIR)/man1/



晕哥,我明白了直接进入tinyalsa/utils

输入以下三行命令就行了
arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

离线

#6 2018-02-03 11:24:03

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

对, 是的。

离线

#7 2018-02-04 09:40:52

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

对, 是的。

晕哥,编译出来的tinyplay出错,播放不了wav,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#8 2018-02-04 09:42:42

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

zhuacai 说:
晕哥 说:

对, 是的。

晕哥,编译出来的tinyplay出错,播放不了wav,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0


# ./tinymix set 1 63
# ./tinymix set 2 1
# ./tinymix contents
Number of controls: 13
ctl     type    num     name                                    value
0       INT     1       DAC Playback Volume                     63 (range 0->63)
1       INT     1       Headphone Playback Volume               63 (range 0->63)
2       BOOL    2       Headphone Playback Switch               On, On
3       INT     1       Mic1 Playback Volume                    3 (range 0->7)
4       INT     1       Mic1 Boost Volume                       4 (range 0->7)
5       INT     1       ADC Gain Capture Volume                 3 (range 0->7)
6       BOOL    2       DAC Playback Switch                     Off, Off
7       BOOL    2       DAC Reversed Playback Switch            Off, Off
8       BOOL    2       Mic1 Playback Switch                    Off, Off
9       BOOL    2       Mixer Capture Switch                    Off, Off
10      BOOL    2       Mixer Reversed Capture Switch           Off, Off
11      BOOL    2       Mic1 Capture Switch                     Off, Off
12      ENUM    2       Headphone Source Playback Route         , DACMixer, , DACMixer
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#9 2018-02-04 10:43:30

daydayup
会员
注册时间: 2017-10-09
累计积分: 303

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

你用哪个内核?

离线

#10 2018-02-04 18:02:22

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

daydayup 说:

你用哪个内核?

daydayup哥,用的4.13y内枋,有些wav文件可以打开,好像什么wav.mp3文件2 ch, 48000 hz, 16 bit声音不对
# ls
1.mp3         RECORD.WAV    TESTP.WAV     kok           tinymix
14_00.wav     RECORD2.WAV   TESTP2.WAV    qt4.sh        tinypcminfo
2.mp3         RECORD22.WAV  aa.avi        qt4.sh.bak    tinyplay
22.PCM        TEST5.WAV     analogclock   test.wav
OUT.PCM       TEST6.WAV     bb.tft        tinycap
# ./tinyplay TEST5.WAV
playing 'TEST5.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay TEST5.WAV
playing 'TEST5.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay TEST6.WAV
playing 'TEST6.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay 1.mp3
playing '1.mp3': 2 ch, 48000 hz, 16 bit
^C# ^C
# ./tinyplay 2.mp3
playing '2.mp3': 2 ch, 48000 hz, 16 bit
^C# ^C
# ./tinyplay RECORD2.WAV
playing 'RECORD2.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay RECORD22.WAV
playing 'RECORD22.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#11 2018-02-04 18:18:55

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyplay 不能播放mp3文件, 只能播放wav文件.
mp3要用madplay等解码才能播放。

离线

#12 2018-02-04 20:03:40

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

tinyplay 不能播放mp3文件, 只能播放wav文件.
mp3要用madplay等解码才能播放。

晕哥,编译出来的tinyplay出错,有些wav播放不了电脑可以播放,有些wav可以可以播放但声音不对,能播放的wav都是输出 2 ch, 48000 hz, 16 bit,声音不对,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#13 2018-02-05 13:50:24

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

到底是什么格式能放, 什么格式不能放?

离线

#14 2018-02-05 14:03:32

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

到底是什么格式能放, 什么格式不能放?

晕哥,wav不能放,提示failed to open for pcm 0,0 但电脑上可以放
#  ./tinyplay 14_00.wav
failed to open for pcm 0,

离线

#15 2018-02-05 14:58:57

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

我看了一下源码utils/tinyplay.c
在这里出错 pcm_is_ready,
看来是驱动问题,
你的内核是不是 4.13-y ?

离线

#16 2018-02-05 15:26:05

zhuacai
会员
注册时间: 2017-12-16
累计积分: 190

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

我看了一下源码utils/tinyplay.c
在这里出错 pcm_is_ready,
看来是驱动问题,
你的内核是不是 4.13-y ?

晕哥,内核是 4.13-y 的

离线

#17 2018-02-05 15:32:27

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

那应该没有问题的, 上面几位网友都测试过。
或者你去荔枝派Q群下载我上传的固件试一试。

离线

#18 2018-03-14 08:57:39

Lusien4
会员
注册时间: 2017-12-29
累计积分: 7

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

离线

#19 2018-03-14 09:07:15

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix

离线

#20 2018-03-14 09:44:53

Lusien4
会员
注册时间: 2017-12-29
累计积分: 7

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:
Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix

谢谢晕哥,我现在的处理办法就是用开机脚本,最开始我把service设置成oneshot,后来看日志发现每次平板发出声音,就又会回到最初的状态,所以我把oneshot去掉了,现在这个service就是频繁开启关闭,目的是达到了,但不知道长时间运行后会不会造成死机,或者对功耗产生影响。所以想看能不能从源代码里入手。

离线

#21 2018-03-14 10:19:48

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

Lusien4 说:
晕哥 说:
Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix

谢谢晕哥,我现在的处理办法就是用开机脚本,最开始我把service设置成oneshot,后来看日志发现每次平板发出声音,就又会回到最初的状态,所以我把oneshot去掉了,现在这个service就是频繁开启关闭,目的是达到了,但不知道长时间运行后会不会造成死机,或者对功耗产生影响。所以想看能不能从源代码里入手。

应该是可以的, 把驱动里面这几个寄存器的默认值调一下估计问题不大了。

离线

#22 2019-10-29 17:51:34

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,304

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

离线

#23 2019-10-29 18:20:04

kekemuyu
会员
注册时间: 2018-12-13
累计积分: 329

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyalsa得安装有点麻烦,还是debian文件系统好用,apt一键安装

离线

页脚