1.6.1 在初始化文件中加入 UDA1341 设备结构
Linux-2.6.32.2已经完美的支持UDA1341音频芯片的驱动,我们只要在arch/arm/mach-s3c2440/mach-mini2440.c 文件中注册 UDA1341 平台设备的控制端口就可以了,打开 mach-mini2440.c,添加如下内容:
//在文件首部添加头文件
#include //在 LCD 平台设备后面添加 UDA1341 设备结构 static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { .l3_clk = S3C2410_GPB(4), .l3_data = S3C2410_GPB(3), .l3_mode = S3C2410_GPB(2), .model = UDA134X_UDA1341, }; static struct platform_device s3c24xx_uda134x = { .name = "s3c24xx_uda134x", .dev = { .platform_data = &s3c24xx_uda134x_data, } }; //注册 UDA1341 设备平台到内核中 //这些注册的结构在哪定义的?? static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_rtc, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &mini2440_device_eth, &s3c24xx_uda134x, &s3c_device_nand, }; 这样,我们基本就添加好了 UDA1341 音频设备的驱动,接下来我们在内核中配置该驱动。 注意:其实在做完以上工作时还是不能放MP3,没有DSP节点,我后面根据 http://www.arm9home.net/read.php?tid-1481-fpage-0-toread--page-2.html 引用 No device for DAI UDA134X No device for DAI s3c24xx-i2s 这是ALSA的警告信息,不影响uda1341驱动的。 引用 S3C24XX_UDA134X SoC Audio driver UDA134X SoC Audio Codec asoc: UDA134X <-> s3c24xx-i2s mapping ok ALSA device list: #0: S3C24XX_UDA134X (UDA134X) 这说明UDA1341 for S3C24xx的ALSA驱动已经成功加载了。需要了解的是,ALSA本身并不会生成/dev/dsp节点,那是OSS驱动的东西。 要在你的系统里使用/dev/dsp节点,你必须确保选中了ALSA的“OSS 模拟”选项。它可以通过在内核配置中的 "Sound card support" ---> "Advanced Linux Sound Architecture" --> "OSS PCM (digital audio) API" 配置。 1.6.2 在内核中配置 UDA1341 设备驱动 在内核源代码目录输入:make menuconfig 开始配置内核,依次选择如下子菜单,找到音频驱动配置菜单: Device Drivers ---> <*> Sound card support ---> 按空格选中"[*] Preclaim OSS device numbers ", 再选中"<*> Advanced Linux Sound Architecture --->",并回车进入该子菜单 出现音频驱动体系结构菜单,在这里,我们选择 OSS 接口相关的配置选项,需 要注意的是,这里的 OSS 接口其实是基于 ALSA 接口创建的,因为新的内核中现在都已经改用 ALSA 设计,这里是为了和以前的软件兼容才这样做的, 再选择"<*> ALSA for SoC audio support --->"子菜单并回车进入,在这里我们可以看到专门为 S3C24xx 系列芯片(包括 S3C2410/2440/2443 等)而做的 配置选项,打开 linux-2.6.32.2/sound/soc/s3c24xx/Makefile 文件就可以看到, 我们的开发板使用的是 UDA1341 音频芯片,在这里当然要选择 "-*- SoC I2S Audio support UDA134X wired to a S3C24XX"了。 退出保存以上各项配置。 1.6.3 mp3 放音测试 在内核源代码目录执行:make zImage,把生成的内核映像文件烧写到开发板,依然使用友善之臂提供的文件系统 root_qtopia,系统启动后,使用系统自带的 madplay 软件播放一首mp3 进行测试,把音箱或者耳机插入开发板的绿色音频输出插座,就可以听到音乐了, 1.6.4 修正驱动中的录音代码 虽然播放 mp3 很正常,但当使用系统自带的录音程序进行录音时,我们发现无法听到任何结果,这是因为开发板的录音电路和 SMDK2440 目标板的电路是有所区别的。 mini2440 开发板使用的录音通道为 VIN2,而 SMDK2440 使用的则是 VIN1,打开 linux-2.6.32.2/sound/soc/codecs/ uda134x.c,在大概 201 行添加如下红色代码: uda134x->slave_substream = substream; } else uda134x->master_substream = substream; uda134x_write(codec, 2, 2|(5U<<2)); //把录音通道改为 VIN2 return 0; } static void uda134x_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { 这样,我们就完成了录音驱动的修正,在内核源代码目录下执行:make zImage,重新编译内核并烧写到开发板中。 1.6.5 录音测试 打开 Qtopia 中的"录音机"测试程序,根据提示,点"REC"按钮开始录音,这时对着板上的麦克风说话,可以看到录音的波形,点"STOP"按钮结束录音,此时可以点"PLAY"按钮播放刚才的录音,同时录制的音频文件将以"WAV"格式 自动存储到"文档"中:说明:Qtopia2.2.0 系统自带了一个录音程序,中文名为"语音便签",但它不能正常使用板上的麦克风进行录制。
上一篇:linux2.6.32.2 mini2440平台移植-- 串口驱动移植、I2C-EEPROM 驱动移植、看门狗驱动移植
下一篇:linux2.6.32.2 mini2440平台移植-- ADC 驱动移植
推荐阅读最新更新时间:2024-11-02 15:53
设计资源 培训 开发板 精华推荐
- 使用 ROHM Semiconductor 的 BD49K58G-TL 的参考设计
- LT3990IMSE 5V、2MHz 降压转换器的典型应用
- 用于汽车应用的 LT3973IDD-5 5V 降压转换器的典型应用
- 用于汽车照明的 15W 高亮度 LED 驱动器
- LF33CPT-TR 3.3V低压降稳压器基本抑制功能典型应用
- 【征集令】物联网类,物联网小电视
- 用于电源路径开关的 LTC2953CDD-1 电压监控器的典型应用电路
- STM32f411 system1
- C500626_GD32F130G8U6方案验证板
- DC751A-K,使用 LTC2224IUK 12 位、135Msps 高速 ADC 的演示板,VDD = +3.3V,100MHz