按上面的方法是动态链接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
这是我在ubuntu下的运行命令
~/tinyalsa/utils$ arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc:未找到命令
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf:未找到命令
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf- -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-:未找到命令
linux4.13y版本不需要修改设备树就能直接启动声卡播放声音?
离线
离线
在zero板子上播放wav文件需要将tinymix 和tinypaly 从ubuntu移植过去?tinypaly和tinymix怎么生成?
离线
怎么生成tinyplay和tinymix?
离线
就是一楼那样编译链接。
离线
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: error: ld returned 1 exit status
编译的时候提示我出现错误...
离线
1. git clone https://github.com/tinyalsa/tinyalsa.git
2. 把所有Makefile的 CC行都改成这样: CC = $(CROSS_COMPILE)gcc
3. 执行 CROSS_COMPILE=arm-linux- make
动态编译成功
离线
zhang@zhang-virtual-machine:~/tinyalsa/utils$ ./tinyplay /home/zhang/Downloads/record.wav
failed to open for pcm 0,0
zhang@zhang-virtual-machine:~/tinyalsa/utils$ ./tinymix contents
Number of controls: 26
ctl type num name value
0 BOOL 1 Master Playback Switch On
1 INT 2 Master Playback Volume 63, 63 (range 0->63)
2 BOOL 1 Phone Playback Switch Off
3 INT 2 Phone Playback Volume 0, 0 (range 0->63)
4 BOOL 1 Mic Playback Switch Off
5 INT 2 Mic Playback Volume 0, 0 (range 0->63)
6 BOOL 1 Mic Boost (+20dB) Off
7 BOOL 1 Line Playback Switch Off
8 INT 2 Line Playback Volume 0, 0 (range 0->63)
9 BOOL 1 CD Playback Switch Off
10 INT 2 CD Playback Volume 0, 0 (range 0->63)
11 BOOL 1 Video Playback Switch Off
12 INT 2 Video Playback Volume 0, 0 (range 0->63)
13 BOOL 1 Aux Playback Switch Off
14 INT 2 Aux Playback Volume 0, 0 (range 0->63)
15 BOOL 1 PCM Playback Switch On
16 INT 2 PCM Playback Volume 57, 57 (range 0->63)
17 ENUM 2 Capture Source > Mic, CD, Video, Aux, Line, Mix, Mix Mono, Phone, , > Mic, CD, Video, Aux, Line, Mix, Mix Mono, Phone,
18 BOOL 1 Capture Switch On
19 INT 2 Capture Volume 0, 0 (range 0->15)
20 IEC958 1 IEC958 Playback Con Mask unknown
21 IEC958 1 IEC958 Playback Pro Mask unknown
22 IEC958 1 IEC958 Playback Default unknown
23 BOOL 1 IEC958 Playback Switch Off
24 INT 2 Playback Channel Map 0, 0 (range 0->36)
25 INT 2 Playback Channel Map 0, 0 (range 0->36)
这个应该怎么修改?并没有headphone相关寄存器....
离线
https://whycan.cn/files/members/3/QQ20171128142743.png
再次验证, 一点问题都没有。
这里面是将tinyplay和tinymix 通过tftp方式移植到板子的意思?然后在板子上播放.wav文件?
离线
晕哥 说:https://whycan.cn/files/members/3/QQ20171128142743.png
再次验证, 一点问题都没有。这里面是将tinyplay和tinymix 通过tftp方式移植到板子的意思?然后在板子上播放.wav文件?
看个人习惯吧, 把文件传到板子有很多方法, tftp 算是比较简单的了.
https://blog.csdn.net/K346K346/article/details/71515740
通过串口终端,配合sz, rz 命令也可以传输文件。
离线
./tinyplay xxxx.wav 这个命令是在ubuntu上执行还是zero板子上执行?
离线
参考这个帖子: https://whycan.cn/t_490.html
或者论坛搜 tinyplay, tinymix 找别的帖子.
./tiny contents 里面不存在headphone选项怎么办..?我看好多帖子都是说要将headphone寄存器打开
离线
离线
605364021 说:晕哥 说:参考这个帖子: https://whycan.cn/t_490.html
或者论坛搜 tinyplay, tinymix 找别的帖子.
./tiny contents 里面不存在headphone选项怎么办..?我看好多帖子都是说要将headphone寄存器打开
那就是版本不对,确认是否 4.13分支
https://whycan.cn/files/members/1205/_20181026185947.jpg
我git clone 的是4.13分支......
离线
有点诡异,把你的寄存器列出来
此人很懒,没有签名!
离线
zhang@zhang-virtual-machine:~/tinyalsa/utils$ ./tinyplay /home/zhang/Downloads/record.wav
failed to open for pcm 0,0
zhang@zhang-virtual-machine:~/tinyalsa/utils$ ./tinymix contents
Number of controls: 26
ctl type num name value
0 BOOL 1 Master Playback Switch On
1 INT 2 Master Playback Volume 63, 63 (range 0->63)
2 BOOL 1 Phone Playback Switch Off
3 INT 2 Phone Playback Volume 0, 0 (range 0->63)
4 BOOL 1 Mic Playback Switch Off
5 INT 2 Mic Playback Volume 0, 0 (range 0->63)
6 BOOL 1 Mic Boost (+20dB) Off
7 BOOL 1 Line Playback Switch Off
8 INT 2 Line Playback Volume 0, 0 (range 0->63)
9 BOOL 1 CD Playback Switch Off
10 INT 2 CD Playback Volume 0, 0 (range 0->63)
11 BOOL 1 Video Playback Switch Off
12 INT 2 Video Playback Volume 0, 0 (range 0->63)
13 BOOL 1 Aux Playback Switch Off
14 INT 2 Aux Playback Volume 0, 0 (range 0->63)
15 BOOL 1 PCM Playback Switch On
16 INT 2 PCM Playback Volume 57, 57 (range 0->63)
17 ENUM 2 Capture Source > Mic, CD, Video, Aux, Line, Mix, Mix Mono, Phone, , > Mic, CD, Video, Aux, Line, Mix, Mix Mono, Phone,
18 BOOL 1 Capture Switch On
19 INT 2 Capture Volume 0, 0 (range 0->15)
20 IEC958 1 IEC958 Playback Con Mask unknown
21 IEC958 1 IEC958 Playback Pro Mask unknown
22 IEC958 1 IEC958 Playback Default unknown
23 BOOL 1 IEC958 Playback Switch Off
24 INT 2 Playback Channel Map 0, 0 (range 0->36)
25 INT 2 Playback Channel Map 0, 0 (range 0->36)
离线
# ls
tinymix tinyplay usersound.wav
# ./tinymix contents
-sh: ./tinymix: Permission denied
#
这是我在v3S板子上运行结果....是声卡驱动没启动?
离线
chmod +x tinymix
记得找本 linux 入门书看一看哦
我是先将tinymix tinyplay通过winscp移到windows上,然后再通过tftp32.exe 把文件移植到板子上,这样的方法tinyplay可以在板子上运行吗?
# ./tinymix contents
-sh: ./tinymix: Permission denied
# chmod 777 tinymix
# ls
tinymix tinyplay usersound.wav
# ./tinymix contents
./tinymix: line 1: syntax error: unexpected "("
# ./tinymix contents
./tinymix: line 1: syntax error: unexpected "("
......我感觉我移植方法有点问题
离线
./tinymix contents 在虚拟机中可以运行 但是在板子上不能运行.....
# tftp 10.23.14.63 -g -r tinymix
# ls
tinymix tinyplay usersound.wav
10.23.14.63是笔记本的IP地址,,,
离线
./tinymix contents 在虚拟机中可以运行 但是在板子上不能运行.....
# tftp 10.23.14.63 -g -r tinymix # ls tinymix tinyplay usersound.wav
10.23.14.63是笔记本的IP地址,,,
能运行就神奇了,
x86指令集的native程序能在arm指令集的机器上运行?
离线
https://whycan.cn/files/members/3/QQ20171128142743.png
再次验证, 一点问题都没有。
这上面晕哥的操作不是从192.168.1.99中移植tinymix和tinyplay?.......然后运行?
离线
晕哥 说:https://whycan.cn/files/members/3/QQ20171128142743.png
再次验证, 一点问题都没有。这上面晕哥的操作不是从192.168.1.99中移植tinymix和tinyplay?.......然后运行?
是同一个tinymix文件吗?
此人很懒,没有签名!
离线
605364021 说:晕哥 说:https://whycan.cn/files/members/3/QQ20171128142743.png
再次验证, 一点问题都没有。这上面晕哥的操作不是从192.168.1.99中移植tinymix和tinyplay?.......然后运行?
是同一个tinymix文件吗?
# ls -l
total 216
-rwxr-xr-x 1 root root 28296 Jan 1 1970 tinymix
-rw-r--r-- 1 root root 33920 Jan 1 00:14 tinyplay
-rw-r--r-- 1 root root 152044 Jan 1 1970 usersound.wav
# ./tinymix contents
./tinymix: line 1: syntax error: unexpected "("
这是在板子上的文件,看文件大小应该是同一个文件,文件大小是和笔记本上一样的,
离线
v3s 说:605364021 说:这上面晕哥的操作不是从192.168.1.99中移植tinymix和tinyplay?.......然后运行?
是同一个tinymix文件吗?
# ls -l total 216 -rwxr-xr-x 1 root root 28296 Jan 1 1970 tinymix -rw-r--r-- 1 root root 33920 Jan 1 00:14 tinyplay -rw-r--r-- 1 root root 152044 Jan 1 1970 usersound.wav # ./tinymix contents ./tinymix: line 1: syntax error: unexpected "("
这是在板子上的文件,看文件大小应该是同一个文件,文件大小是和笔记本上一样的,
同一文件, 怎么行呢?
指令集和体系架构都不同.
离线
参考这个帖子: https://whycan.cn/t_490.html
或者论坛搜 tinyplay, tinymix 找别的帖子.
我看这个帖子,我理解的是在ubuntu上编译出./tinymix和./tinyplay,然后通过tftp将./tinymix和./tinyplay下载到zero板子修改寄存器配置就行,难道我理解错了?我算是小白,就看着帖子慢慢试的...
离线
晕哥 说:参考这个帖子: https://whycan.cn/t_490.html
或者论坛搜 tinyplay, tinymix 找别的帖子.
我看这个帖子,我理解的是在ubuntu上编译出./tinymix和./tinyplay,然后通过tftp将./tinymix和./tinyplay下载到zero板子修改寄存器配置就行,难道我理解错了?我算是小白,就看着帖子慢慢试的...
是不是用 arm-linux-gcc 交叉编译器编译的?
离线
是不是用 arm-linux-gcc 交叉编译器编译的?
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: error: ld returned 1 exit status
我的是arm-linux-gnueabihf-gcc交叉编译器 但是arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static编译错误,所以我选择用静态编译方式
1. git clone https://github.com/tinyalsa/tinyalsa.git
2. 把所有Makefile的 CC行都改成这样: CC = $(CROSS_COMPILE)gcc
3. 执行 CROSS_COMPILE=arm-linux-gnueabihf-make
离线
我写了个hello world,传到板子上是可以运行的但是在ubuntu编译时提示我
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: error: ld returned 1 exit status
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: error: ld returned 1 exit status
离线
删除 -ltinyalsa
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -L../src -I../include -static
/tmp/cczGy732.o:在函数‘main’中:
tinypcminfo.c:(.text+0x154):对‘pcm_params_get’未定义的引用
tinypcminfo.c:(.text+0x172):对‘pcm_params_get_mask’未定义的引用
tinypcminfo.c:(.text+0x194):对‘pcm_params_get_mask’未定义的引用
tinypcminfo.c:(.text+0x264):对‘pcm_params_get_mask’未定义的引用
tinypcminfo.c:(.text+0x286):对‘pcm_params_get_min’未定义的引用
tinypcminfo.c:(.text+0x290):对‘pcm_params_get_max’未定义的引用
tinypcminfo.c:(.text+0x2aa):对‘pcm_params_get_min’未定义的引用
tinypcminfo.c:(.text+0x2b4):对‘pcm_params_get_max’未定义的引用
tinypcminfo.c:(.text+0x2ce):对‘pcm_params_get_min’未定义的引用
tinypcminfo.c:(.text+0x2d8):对‘pcm_params_get_max’未定义的引用
tinypcminfo.c:(.text+0x2f2):对‘pcm_params_get_min’未定义的引用
tinypcminfo.c:(.text+0x2fc):对‘pcm_params_get_max’未定义的引用
tinypcminfo.c:(.text+0x316):对‘pcm_params_get_min’未定义的引用
tinypcminfo.c:(.text+0x320):对‘pcm_params_get_max’未定义的引用
tinypcminfo.c:(.text+0x338):对‘pcm_params_free’未定义的引用
collect2: error: ld returned 1 exit status
编译tinymix的情况也是 删除-ltinyalsa后....
离线
应该还有一个 c 文件没有参与编译,你搜索一下,就在这个目录
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinymix tinymix.c mixer.c -L../src -I../include -static
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c pcm.c -L../src -I../include -static
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c pcm.c -L../src -I../include -static
将/tinyalsa/src目录下的pcm.c mixer.c文件拉到utils目录,可以完成编译,已经可以播放声音了,谢谢大家帮助
离线
晕哥 说:应该还有一个 c 文件没有参与编译,你搜索一下,就在这个目录
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinymix tinymix.c mixer.c -L../src -I../include -static zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c pcm.c -L../src -I../include -static zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c pcm.c -L../src -I../include -static
将/tinyalsa/src目录下的pcm.c mixer.c文件拉到utils目录,可以完成编译,已经可以播放声音了,谢谢大家帮助
你好,只需pcm.c mixer.c两个文件拉到utils目录吗,我的拉到了这个目录下还是报错
离线