ALSA声卡11_从零编写之调试——学习笔记
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声卡10_从零编写之数据传输_学习笔记
1.引言 (1)应用程序使用声卡的时候,数据流程是:应用程序把数据发送给驱动,驱动把数据发送给硬件声卡,声卡把数据转换成声音数据播放出去. (2)可以使用两种方式发送数据 第一种:app发数据,等驱动 ...
- ALSA声卡08_从零编写之框架_学习笔记
1.整体框架 (1)图示((DAI(全称Digital Audio Interface)接口)) 在嵌入式系统里面,声卡驱动是ASOC,是在ALSA驱动上封装的一层,包括以下三大块 (2)程序框架 m ...
- ALSA声卡12_从零编写之添加音量控制_学习笔记
1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...
- ALSA声卡09_从零编写之参数设置_学习笔记
1.参数设置分析 (1)open: soc_pcm_open 依次调用cpu_dai, dma, codec_dai, machine的open或startup函数 只在dma的open函数里添加参数 ...
- OD调试学习笔记7—去除未注册版软件的使用次数限制
OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...
- PX01关于手机屏SPI触摸调试学习笔记
上位机工具:http://www.xk-image.com/download/blog/0002_TP调试/LcdTools20210605.rar 调试案例:http://www.xk-image. ...
- PX01关于手机屏IIC触摸调试学习笔记
相关文件下载: 上位机工具:http://www.xk-image.com/download/blog/0002_TP调试/LcdTools20210605.rar 调试案例:http://www.x ...
- Windows调试学习笔记:(二)WinDBG调试.NET程序示例
好不容易把环境打好了,一定要试试牛刀.我创建了一个极其简单的程序(如下).让我们期待会有好的结果吧,阿门! using System; using System.Collections.Generic ...
- Windows调试学习笔记:(一)WinDBG中加载SOS和CLR
最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定 ...
随机推荐
- Composer介绍
Composer介绍 简单的说Composer就是一个PHP的组件包的依赖管理器.早年间PHP其实是有自己的包管理器的,叫PEAR.PEAR就介绍到这里,你只要知道这是一个狗屎一般的管理器就行了.在N ...
- 桔子桑Blog(小程序)V 0.4
这两天对这个个人博客小程序的UI又作了一些补充,目前看来,小程序的主要功能如下: 1.博客/日常栏目的导航切换 为了避免两个模块的UI上的过于单一,我将两个模块的列表页作了区分: 边距是自适应的(针对 ...
- HAWQ + MADlib 玩转数据挖掘之(一)——安装
一.MADlib简介 MADlib是Pivotal公司与伯克利大学合作的一个开源机器学习库,提供了精确的数据并行实现.统计和机器学习方法对结构化和非结构化数据进行分析,主要目的是扩展数据库的分析能力, ...
- SAPUI5实例一:来创建Web应用UI
试试SAPUI5.这是SAP比较重要的一个UI库.完全通过HTML5实现,可以作为Web和移动应用的UI开发. 现在已经开源了.在这里可以下载: http://sap.github.io/openui ...
- swift 3新特性总结
swift新特性之String 参考自[Swift 3.0 变化汇总系列总结-String] 使用方法:直接CMD+F搜索相应的函数或关键字符串,比较修改代码. 重要: /// 使用String的方法 ...
- jQuery radio|checkbox的取值与赋值
文章简单即是美[我说的是技术博客] |--radio |--checkbox 参考: http://blog.csdn.net/gd2008/article/details/6951208 h ...
- C# 根据日期计算星期几
region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(,,);) /// <summary> /// 根据年月日计算星期几(Label2.Text=C ...
- .NET Core/Framework 创建委托以大幅度提高反射调用的性能
都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的. 为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能.(当然 Emit 也能够 ...
- What is DB time in AWR?
AWR中有 DB time这个术语,那么什么是DB time呢? Oracle10gR2 官方文档 给出了详细解释(Oracle10gPerformance Tuning Guide 5.1.1.2 ...
- 浅谈splay
\(BST\) 二叉查找树,首先它是一颗二叉树,其次它里面每个点都满足以该点左儿子为根的子树里结点的值都小于自己的值,以该点右儿子为根的子树里结点的值都大于自己的值.如果不进行修改,每次查询都是\(O ...