2010-09-15 2 views
0

Пока я погружался в ядро ​​Android. У меня возник вопрос о драйвере аудиоустройства., связанный с драйвером звука Android

Люди говорят, что ... - Android использует звуковой драйвер ALSA. - HAL слой C библиотека /C++ - драйвер ALSA работает в пользовательском пространстве, а не в пространстве ядра

Тогда вопросы: 1. Что такое Драйверы аудио (я предполагаю, что это драйвер ALSA) на рисунке? Драйвер ALSA должен существовать в библиотечной части, не так ли? (http://developer.android.com/guide/basics/what-is-android.html)

2. Там не должно быть ничего аудиодрайвера в Android ядра, если оно соответствует драйверу ALSA?

  1. У меня есть исходный файл кодека wm8994.c, который фактически управляет кодеком h/w. Кто звонит в wm8994.c? Я думаю, что ALSA HAL будет. Я ошибаюсь?

Я очень смущен ...

Спасибо ilgimae

ответ

2

Я думаю, что это слишком поздно, чтобы ответить, наверное, вы уже поняли ответ сейчас.

Уровень андроида HAL написан C/C++. Согласно структуре ALSA драйвер не находится в пользовательском пространстве. Все приложения используют библиотеку ALSA, которая, в свою очередь, использует ALSA frmawwork в ядре, которая, в свою очередь, будет использовать функции, присутствующие в драйвере кодека, который в этом случае является wm8994.c.

Так что для вопроса 1: Драйвер существует в пространстве ядра, но приложения используют API, определенный в библиотеке ALSA (в пользовательском пространстве).

для вопроса 2: У вас есть драйвер кодека, который будет существовать в пространстве ядра. Ядро ALSA вызовет эти функции (через слой ALSA SoC, для системы на чипах).

надеюсь, что это поможет.

Смежные вопросы