在OMAP3530上移植成功Android的ALSA声卡驱动


经过努力,终于让omap3530上的Android有了声音。

这是第一次做Android的移植,也是第一次做移植,难度对我来说,还是蛮大,但是在范老师,还有在网上很多无私的前辈的帮助下,让我的第一次移植没有出现太大问题就成功完成了~ 现在我就分享一下,我这次的移植步骤,希望对有需要的人有帮助。

首先,我这次移植的硬件平台是: omap3530

系统: Android1.5

声卡模式: ALSA

以下就是我这次的移植步骤,参照了很多前辈的经验。

1.在网上下载移植代码(用GIT下载)  //这里我要说明一下,网上对于下载的移植代码可能跟我的不同,这主要你要看一下,AudioSystem这个类里时否定义了DEVICE_OUT_EARPIECE这个, 如果没有定义就我以下的,如果定义了,你就用其它一套移植代码吧,

a. platform_external_alsa-lib:

git clone git://gitorious.org/android-on-freerunner/platform_external_alsa-lib.git

将其复制到 external 目录下,并重命名为 alsa-lib

b. platform_hardware_alsa_sound

git clone git://gitorious.org/android-on-freerunner/platform_hardware_alsa_sound.git

将其复制到 hardware 目录下,并重命名为  libaudio-alsa

c. platform_external_alsa-utils (可选)

git clone git://gitorious.org/android-on-freerunner/platform_external_alsa-utils.git

将其复制到 external 目录下,并重命名为 alsa-utils

(注:以上是没有定义DEVICE_OUT_EARPIECE这个使用的代码,我不保证以上的代码能在所有的Android1.5能用)

以下是定义了DEVICE_OUT_EARPIECE的代码 下载

git clone git://android.git.kernel.org/platform/external/alsa-lib.git

git clone git://android.git.kernel.org/platform/external/alsa-utils.git

git clone git://android.git.kernel.org/platform/hardware/alsa_sound.git

改法同上。

2.修改system/core/init/device.c加上一段代碼以創建/dev/snd:

  1. ......  
  2.        } else if(!strncmp(uevent->subsystem, "mtd", 3)) {  
  3.            base = "/dev/mtd/";  
  4.            mkdir(base, 0755);  
  5.        } else if(!strncmp(uevent->subsystem, "sound", 5)) {  
  6.            base = "/dev/snd/";  
  7.            mkdir(base, 0755);  

3. 修改system/core/init/devices.c,增加设备节点及权限:

  1. static struct perms_ devperms[] = {  
  2. ...  
  3.     { "/dev/snd/",          0664,   AID_SYSTEM,     AID_AUDIO,      1 },  
  4. ...  
  5.    

4. 修改:build/target/board/generic/BoardConfig.mk

  1. 1 # config.mk  
  2.  2 #   
  3.  3 # Product-specific compile-time definitions.  
  4.  4 #  
  5.  5   
  6.  6 # The generic product target doesn't have any hardware-specific pieces.  
  7.  7 TARGET_NO_BOOTLOADER := true  
  8.  8 TARGET_NO_KERNEL := true  
  9.  9 TARGET_NO_RADIOIMAGE := true  
  10. 10 #HAVE_HTC_AUDIO_DRIVER := true  
  11. 11 BOARD_USES_ALSA_AUDIO := true  
  12. 12 BUILD_WITH_ALSA_UTILS := true  
  13. 13 #BOARD_USES_GENERIC_AUDIO := true  
  14. 14 BOARD_USES_GENERIC_AUDIO := false  
  • 1
  • 2
  • 3
  • 下一页

相关内容