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

 안녕하세요 


 origen board[type a] 를 이용하여 외부 IC를 연결하는 드라이버를 작성 중에 있습니다. 


 보드의 카메라로 연결되는 커넥터의 spi0 에 점퍼연결을 하여 spi로 제어하고 있는데 


 DMA와 관련하여 두가지 문제점이 있어서 질문 드립니다. 


 첫번째는 spi fifo size를 넘어가는 length의 경우 dma_use 모드로 동작하게 되는데 이때 

 Spi_s3c64xx.c 파일의 enable_datapath() 에서 IO_error를 리턴하고 clock이 뛰질 않습니다. 


 두번째는 length가 fifo size미만인 경우에 spi 통신은 이루어 지지만,

 s3c64xx_spi_work() 함수내에 

  s3c2410_dma_free() -> pl330_chan_ctrl(**, PL330_OP_FLUSH) -> _stop() -> _execute_DBGINSN()

 함수 내에서 DMA가 IDLE로 돌아가지 않아 DMA halt 에러가 발생하고, 시스템에 다른 영향을 끼칩니다. 


 DMA 드라이버 로드 과정에 에러는 없고, DMA를 사용하지 않는 spi 통신의 경우에는 이상없이 동작 합니다만, 

 spi fifo size보다 큰 데이터를 한번에 읽어야 되는 필요성이 있어(252byte) DMA 동작이 필요합니다.


소스는 인시그날 사이트에서 git을 통해 받았습니다. 


  혹여 답변에 필요한 다른 정보가 있으시면 알려드리겠습니다. 

 

 드라이버 로드 과정이 정상적이다 보니 문제점을 찾기가 어려워 이렇게 질문드립니다. 


 감사합니다. 


개그맨

2012.05.15 23:40:53
*.53.79.3

 아 첫번째 문제의 경우 io_error를 리턴하는 함수가 enable_datapath()가 아닌 wait_for_xfer() 입니다. 

개그맨

2012.05.16 02:40:51
*.53.79.3

해결 하였습니다. ^^ DMA.c 파일에 동일한 이름으로 드라이버가 로드되고 있었네요 

관리자

2012.05.16 06:31:28
*.127.19.87

오늘 메롱되어서 낼 답글 부탁해 놓으려고 했는데, 해결 되었다니 다행입니다.

삼성 칩의 spi driver에 대한 충분한 예제가 없어서 헤매는 경우가 가끔 있더군요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
» DMA 컨트롤 관련 문의 드립니다. [3] 개그맨 2012-05-15 1693

사용자 로그인