s3c2440之uda1341声卡驱动以及madplay播放器移植
来源:互联网 发布:js onclick事件传参 编辑:程序博客网 时间:2024/05/17 01:29
===================================================
主机操作系统:Centos 6.7
交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)
开发板平台: fl2440
Linux内核版本: linux-3.0 .54
IIS总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了使芯片的引出管脚尽可能少,IIS只使用了三根串行总线。这三根线分别是:提供分时复用功能的数据线、字段选择线(声道选择)、时钟信号线。上图三个引脚就是我们待会需要加入代码中的引脚。
OSS(Open Sound System)是 linux 平台上一个统一的音频接口, 即只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。值得注意的是OSS只是部分开源。无论是选择ALSA还是OSS都是为了一个目的:将声卡抽象为一个统一的设备供linux程序员使用。我们前期测试选用的OSS系列。
--- smdk2440.c2012-12-03 12:59:38.000000000 -0800+++ mach-smdk2440.c2017-04-12 11:40:02.691913086 -0800@@ -44,9 +44,13 @@ #include <plat/clock.h> #include <plat/devs.h> #include <plat/cpu.h>+//add+#include <sound/s3c24xx_uda134x.h> //添加声卡头文件 #include <plat/common-smdk.h> +#include <linux/dm9000.h> //添加DM9000网卡的头文件+ static struct map_desc smdk2440_iodesc[] __initdata = { /* ISA IO Space map (memory space selected by A24) */ @@ -102,6 +106,50 @@ } }; + +/* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */++#define DM9000_BASE (S3C2410_CS4 + 0x300) +static struct resource s3c_dm9000_resource[] = { + [0] = { + .start = DM9000_BASE,+ .end = DM9000_BASE + 3,+ .flags = IORESOURCE_MEM + },+ [1] = { + .start = DM9000_BASE + 4,+ .end = DM9000_BASE + 7, + .flags = IORESOURCE_MEM+ },+ [2] = { + .start = IRQ_EINT7,+ .end = IRQ_EINT7,+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, + }++};+++static struct dm9000_plat_data s3c_dm9000_pdata = {+ .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),+};++static struct platform_device s3c_device_dm9000 = {+ .name = "dm9000",+ .id = -1,+ .num_resources = ARRAY_SIZE(s3c_dm9000_resource),+ .resource = s3c_dm9000_resource,+ .dev = { + .platform_data = &s3c_dm9000_pdata,+ },+};+++/*********END********/++++ /* LCD driver info */ static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {@@ -149,18 +197,45 @@ .lpcsel= ((0xCE6) & ~7) | 1<<4, }; +//add uda134X+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, + }+};++static struct platform_device uda1340_codec = {+ .name = "uda134x-codec", + .id = -1,+};++//+static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis,+ &s3c_device_dm9000, + //add+ &uda1340_codec, + &s3c24xx_uda134x, //把添加好的结构体加入smdk设备内+ &samsung_asoc_dma, }; static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));-s3c24xx_init_clocks(16934400);+//s3c24xx_init_clocks(16934400);+ s3c24xx_init_clocks(12000000); s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); }这里修改其实主要概括起来就三个步骤:
- 添加头文件
- 添加相关设备结构体
- 将设备结构体加入主设备结构体
[yangni@yangni linux-3.0.54]$ make menuconfig
libmad-0.15.1b.tar.gz, //madplay的库文件
libid3tag-0.15.1b.tar.gz //mp3的解码库
zlib-1.1.4.tar.gz //用于文件的压缩与解压
[yangni@yangni ~]$ cd fl2440/3rdparty/
[yangni@yangni 3rdparty]$ mkdir uda1341
[yangni@yangni 3rdparty]$ cd uda1341/
[yangni@yangni uda1341]$ mkdir mad
[yangni@yangni mad]$tar -xzf libmad-0.15.1b.tar.gz
[yangni@yangni mad]$tar -xzf madplay-0.15.2b.tar.gz
我们通常可以使用./configure --help来查看配置选项:
这里我们必须知道以下几个配置参数:
--host: 用于指定平台;如: --host==arm-linux
--prefix: 用于指定文件的安装路径; 如:--prefix=/home/yangni/fl2440/3rdparty/uda1341/mad (这里的路径就是你存放这些包的路径)
-I 指定头文件的路径; 如:-I/home/yangni/fl2440/3rdparty/uda1341/mad/include
-L 指定库文件的路径;如:-L/home/leiyuxing/fl2440/3rdparty/uda1341/mad/lib--disable-shared
--disable-shared 这个选项是告诉编译器使用静态库编译;
注:
四次编译存在依赖关系,顺序不能乱。并且每次都应用sudo权限。
编译分为三个步骤,所以看似要做很多工作,但是基本都是一样的:
- 生成Makefile
- 编译(sudo make)
- 安装(sudo make install)
1、编译zlib-1.1.4:
(1)配置configure文件,生成Makefile
[yangni@yangni uda1341]$ cd zlib-1.1.4
[yangni@yangni zlib-1.1.4]$ sudo ./configure --prefix=/home/yangni/fl2440/3rdparty/uda1341/mad
(2)修改Makefile:
[yangni@yangni zlib-1.1.4]$vim Makefile
>: tftp -gr madplay 192.168.1.8
>: tftp -gr feihua.mp3 192.168.1.8
>: chmod a+x madplay
>: ./madplay feihua.mp3
此时可能提示错误:
这里提示找不到相关的动态库,是交叉编译器除了问题。那么我们去交叉编译器所在目录找寻相关的库文件,将文件下载到开发板并放入/lib路径中。
>: ./madplay feihua.mp3
- s3c2440之uda1341声卡驱动以及madplay播放器移植
- s3c2440 UDA1341声卡驱动与madplay播放器移植,
- s3c2440 uda1341声卡驱动与madplay播放器移植
- s3c2440 uda1341声卡驱动与madplay播放器移植
- s3c2440 uda1341声卡驱动与madplay播放器移植
- arm9+linux s3c2440 uda1341声卡驱动与madplay播放器移植
- fl2440 uda1341声卡驱动移植及madplay播放器移植
- UDA1341声卡驱动 madplay 播放
- UDA1341声卡驱动与madplay移植播放mp3(第三方源代码移植步骤)
- S3C2440 UDA1341声卡移植
- Linux设备驱动之udal341声卡驱动与madplay播放器移植
- s3c2440 uda1341声卡驱动分析
- uda1341声卡的linux 2.6.28版本内核驱动在arm s3c2440上的移植。
- uda1341声卡的linux 2.6.29版本内核驱动在arm s3c2440上的移植
- uda1341声卡的linux 2.6.29版本内核驱动在arm s3c2440上的移植
- UDA1341声卡移植
- UDA1341声卡驱动
- UDA1341声卡驱动修改
- 数据库事务相关知识总结
- 关于AFNetworking请求封装的思考与实践
- 安卓开源项目周报0419
- 简单实现的水波纹效果
- AbcABC
- s3c2440之uda1341声卡驱动以及madplay播放器移植
- poj 1157 LITTLE SHOP OF FLOWERS
- 二叉树根到叶路径
- 反射基础知识
- android退出整个程序的方法
- 使用java判断TXT文件的编码格式
- Python基础入门(二)- Python环境的搭建与安装
- all-in-one的openshift 创建管理员
- Sublime Text 3 快捷键大全