ALSA声卡11_从零编写之调试——学习笔记
来源:互联网 发布:淘宝怎么看搜索关键词 编辑:程序博客网 时间:2024/06/16 15:22
1、调试
(1)把程序拷贝到服务器上进行编译
(2)把程序放到内核上面去
重新配置内核,吧原来的声卡驱动程序去掉
a. 修改语法错误 11th_myalsa
b. 配置内核去掉原来的声卡驱动
-> Device Drivers
-> Sound card support
-> Advanced Linux Sound Architecture
-> ALSA for SoC audio support
c. 使用新内核启动
d. 安装新驱动
insmod alsa/driver/myalsa/platform/s3c2440_iis.ko
insmod alsa/driver/myalsa/platform/s3c2440_dma.ko
insmod alsa/driver/myalsa/codec/uda1341.ko
insmod alsa/driver/myalsa/machine/s3c2440_uda1341.ko
mkdir /dev/snd
cd /dev/snd/
ln -s /dev/controlC0
ln -s /dev/pcmC0D0p
ln -s /dev/pcmC0D0c
cd /
e. aplay来测试
insmod ker_rw.ko
regeditor r32 0x4B000080 9
regeditor r32 0x55000000 5
(3)配置内核
原来声卡驱动的配置项
查看Makefile
查看对应的配置项
去掉配置项CONFIG_SND_SOC_SAMSUNG
修改后重新编译内核
拷贝到网络系统并修改内核的名字
2、启动内核安装驱动
(1)查看环境变量
(2)启动
没有发现声卡
(3)安装新驱动(查看之前编译好的驱动程序)
insmod alsa/driver/myalsa/platform/s3c2440_iis.ko
insmod alsa/driver/myalsa/platform/s3c2440_dma.ko
insmod alsa/driver/myalsa/codec/uda1341.ko
insmod alsa/driver/myalsa/machine/s3c2440_uda1341.ko
(4)查看设备节点(aplay使用的设备节点默认是/dev/snd目录下,所以要在/dev/snd目录下创建设备节点)
(5)测试
出现段错误
返回地址在snd_pcm_info,在内核里分析此函数,这个函数调用某个子函数后出错
snd_pcm_info函数的ops->ioctl函数没有被赋值。
这里lr是0
在数据传输的时候出错,看snd_pcm_lib_write_transfer函数
(6)测试2
名为myalsa for playback的中断一次也没有发生,表明DMA传输一次都没有启动
使用寄存器编辑器读取IIS和DMA 的寄存器,看看有没有被正确设置(26th_debug_regeditor)
把编辑器拷贝到服务器编译,拷贝别的驱动程序的Makefile,修改Makefile
进行编译,然后编译测试程序
最后把寄存器编译器和测试程序都拷贝到网络问价系统上
查看寄存器编辑器的用法
寄存器地址
insmod ker_rw.ko
regeditor r32 0x4B000080 9 //读DMA寄存器,r32表示读32位数据,从地址0x4B000080开始读,总共读9个寄存器
regeditor r32 0x55000000 5 //读IIS寄存器,r32表示读32位数据,从地址0x55000000开始读,总共读5个寄存器
IIS寄存器的值全为0,因而存在问题(可能IIS控制器的时钟没有使能,裸板程序没有使能时钟,是因为一上电的时候,就执行裸板程序,2440的IIS模块等各种模块时钟默认是打开的),当我们启动内核后,为了省电,内核会把用不到的模块关闭掉,所以在驱动里面要把IIS打开
当打开IIS时钟后寄存器就会有值,但是这些值是否正确还有待分析
最后安装驱动,创建设备节点,然后用aplay播放音频数据
- ALSA声卡11_从零编写之调试——学习笔记
- ALSA声卡08_从零编写之框架_学习笔记
- ALSA声卡09_从零编写之参数设置_学习笔记
- ALSA声卡10_从零编写之数据传输_学习笔记
- ALSA声卡12_从零编写之添加音量控制_学习笔记
- ALSA声卡13_从零编写之WM8976_学习笔记
- ALSA声卡16_编写ALSA声卡应用程序_学习笔记
- alsa声卡学习笔记
- ALSA声卡07_分析调用过程_学习笔记
- Linux声卡录音程序之——mp3(通过ALSA操作声卡)
- ALSA声卡笔记4-----体验声卡
- ALSA声卡笔记1---ALSA驱动框架
- Android ALSA 声卡驱动学习
- 学习笔记_调试
- python学习笔记——5_解决问题编写脚本
- ALSA声卡笔记2---ASoC驱动框架
- alsa声卡
- Linux下声卡之解决方案-ALSA
- R语言笔记-set.seed()函数
- A - Registration system STL专练
- GoLang实现一致性哈希算法
- 在一个Activity页面中View跟随手指移动,并且能实现点击效果
- UVA10723:Cyborg Genes(LCS)
- ALSA声卡11_从零编写之调试——学习笔记
- Spark入门实战
- bootstrapTable请求数据时,如何设置超时(timeout)?
- 会议投稿时间提醒
- 异常
- python_python学习_Json
- 【完美解决系列】解决友盟分享SDK报错 Could not find class 'com.umeng.analytics.d' 问题
- 【Android(BLE)】Android(BLE)之启动蓝牙
- 多线程队列的算法优化