기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

제목대로 alsa 어플 (aplay같은)에서 play하라고 명령을 내려주면

alsa 드라이버(코덱칩 등)에서 받아서  play 처리하라고 명령주는 부분이 어딘지 혹시 아시는분 계신가요?..

저는 그게 snd_pcm_ops 구조체내부의 멤버인 open 함수 포인터가 아닐까 하고 생각했는데 

아닌것 같습니다. 이건 그냥 pcm 스트림을 열라는 내용인거 같고,


어플이 play처리하라고 명령을 줬다면 드라이버 단에서 받아서 최초 1차적으로 명령내리는 부분이 분명히 있을텐데

도저히 못찾겠네요 ^^;

도와주세요~


멋진M

2011.08.10 03:18:48
*.107.31.52

아직 갈길이 멀은것 같습니다.^^;


제가 좀 도움이 될까해서 답변 남깁니다.


좀 질문이 모호한것 같아 대충에 부분에 대해서 설명드리겠습니다.


aplay에서 play하라고 명령을 줬다는게 환경 설정( samplerate, channel, format) 부터에 에 관한것인가요?

아님 실제로 오디오 데이터를 쓰기 시작한 시점부터인가요?


오디오 데이터를 플레이하기 위해서 alsa-lib단은 배제하고 kernel단 만 보게 되면 첨에 언급하신 snd_soc_ops쪽의 

operation 펑션등이 불리게 됩니다. 

(*startup),(*hw_params),(*prepare)(*trigger)등이 불려 각각 그 보드에 엮인 코덱칩의 설정, DAI(I2S)등의 설정, pcm전송하기위한 DMA설정등을 하게 됩니다.

이후 실제 pcm data가 write되는것은 alsa core단에서는 snd_pcm_lib_write등의 함수가 불려 실제 write가 이뤄지게 됩니다. 

OSS처럼 write함수가 드라이버의 write로 가는 이전 방식하고 다릅니다.


조금이나마 도움이 됐길 바랍니다.

이상입니다.



고도리

2011.08.10 06:45:58
*.200.239.234

1. alsa는 alsa-lib를 통해서 state machine으로 이루어져 있습니다.

2. 해서 실제 제어는 alsa-lib가 시작입니다.

3. alsa-lib에서의 명령은 alsa driver로 들어갑니다.

이때 윗분이 말씀하신 ops들이 동작합니다.


4. 이 ops들이 연속적으로 적절한 함수를 호출하여(ex> hw_prepare등과 같은)

5. 데이터를 codec쪽으로 dma를 이용해서 보내게 됩니다.


이 때가 실제 데이터가 나가는 부분입니다.


해서 state machine의 동작에 따른 ops들을 보셔야 할 듯 합니다.

List of Articles
번호 제목 글쓴이 날짜sort 조회 수
1548 안드로이드 터치 상하좌우 반전현상 [1] 나영찬 2011-08-03 1696
1547 NAND bad block 관련 질문 ( 2st bad block ) [2] 박영기1 2011-08-03 2357
1546 s5pc210보드에 arm ubuntu를 포팅하고 싶은데요.. [1] 앞에그만가지 2011-08-03 952
1545 ffmpeg을 ARM 컴파일해보시고 사용해보신분?? [2] 아토아밥통 2011-08-04 1031
1544 u-boot 초기 개발 어떻게 하시나요? [1] 박영기1 2011-08-05 1036
1543 V310 보드에 점퍼 띄울려고 하는데요. [1] 훌러덩 2011-08-05 855
1542 V310 uboot build error [2] 훌러덩 2011-08-05 1547
1541 fs/buffer.c에서 get_block error 난 경우 [1] 만봉부인 2011-08-06 919
1540 버추얼박스에서 tftp네트워크 설정 문제.. [1] 준히오빠 2011-08-06 1347
1539 system.img내에 특정 so 파일 변경 관련 문의 드립니다. [1] 나나리 2011-08-08 916
1538 임베디드 리눅스 콤파일 문제 [1] blue0sky 2011-08-08 1160
1537 우분투에서 이미 사용중인 파티션을 분할 할 수 있나요? 물고기 2011-08-08 1072
1536 aesop-c100 동영상 올려보기 [1] 이솝우와 2011-08-08 710
1535 CentOS 6.0 에서 tftp 데몬이 시작하자 않는 문제점 [2] blue0sky 2011-08-09 977
1534 V310 터치 관련 [1] 훌러덩 2011-08-09 846
1533 이더넷포트와 스위칭허브IC간의 MII연결 질문 [1] Happycpu 2011-08-09 1543
» alsa에서 어플의 write 명령 [2] 이정화 2011-08-10 906
1531 리눅스 어플리케이션 생성 및 ADB Sell에서 실행 [1] 정호정호 2011-08-10 946
1530 How to fall into "init 1" state in Android??? [2] Simba444 2011-08-10 775
1529 AESOP-6410의 TOUCH PANEL은 어디것을 적용하였나요 [1] 천해 2011-08-10 587

사용자 로그인