zoukankan      html  css  js  c++  java
  • 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播放音频数据

  • 相关阅读:
    一步一步学习IdentityServer4 (4) 处理特殊需求之-登录等待页面
    php 打包下载
    nginx https反向代理tomcat
    the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
    layui配置
    vue 学习一
    MyCAT+MySQL 搭建高可用企业级数据库集群——第3章 MyCat核心配置讲解
    第一模块·开发基础-第3章 作业讲解
    《扭转人生的40个哲学提问》 徐帆 著
    零基础学 JavaScript 全彩版 明日科技 编著
  • 原文地址:https://www.cnblogs.com/alan666/p/8311865.html
Copyright © 2011-2022 走看看