안녕하세요.
항상 이솝사이트를 통해서 정보를 얻고있는 엔지니어입니다.
OS를 사용하지 않고 FW만으로 USB slave driver를 구현하기 위해 혼자서 고민하다가 진전이 없어 게시판에 글을 올립니다.
고수님들의 조언을 부탁합니다.
제가 개발환경과 현재 상태는 아래와 같습니다.
1. 보드 : SMDK2413(S3C2413)
2. FW : S3C2413mon.bin의 소스를 이용하여 USB Driver구현 (컴파일러:RVDS)
3. GUI : DNW V0.51A 소스를 이용하여 GUI 구현 (컴파일러:VS2003)
현재 PC와 SMDK2413 보드를 USB로 연결하면 잘 인식하고 있습니다.
-. EP0 : 컨트롤
-. EP1 : In Pipe (Host에서)
-. EP3 : Out Pipe (Host에서)
DNW소스와 같이 File Download 기능은 EP3를 통해서 구현하였고,
Read 기능은 EP1를 이용하여 임의의 데이터를 S3C2413에서 GUI로 올리도록 구현하였습니다.
저는 이런 기능을 이용하여 EP3를 통한 File download packet의 첫번째 word(32bit)를 CMD로 사용하여
S3C2413에서 이부분을 해석하여 Host에 전송할 데이터를 EP1 Fifo에 준비토록 구현하였습니다.
호스트 GUI의 CMD 버튼을 클릭하면 EP3를 통해 여러종류의 CMD를 한번 내리고, 다시 GUI에서 Read 버튼을 클릭하면 내려온 CMD에 대해서 S3C2413이 준비한 데이터를 올려줍니다.
하지만 저는 버튼을 클릭하지 않고 일정한 주기(예:1초간격)마다 이와 같은 동작을 규칙적으로 반복하는 기능을 구현하고자 합니다.
그리고 여기에 문제가 있습니다.
GUI에서 Window Timer를 이용하여 1초간격으로 CMD를 S3C2413로 전송하면 S3C2413에서 CMD를 수신하고 해석합니다.
그리고 데이터를 FIFO에 준비합니다. (debugger를 통해 확인)
Window timer를 다시 이용하여 10msec 후에 Read CMD를 전송하였습니다.
하지만 ReadFile함수를 통해서 가져온 데이터는 0byte입니다.
왜 read버튼을 클릭하면 데이터가 정상적으로 올라오는데, 주기적으로 Write CMD를 보내고 Read CMD 보내기를 반복시키면 Data가 올라오지 않는 걸까요? 무엇이 문제인지 방향을 잡지 못하고 있어 고수님들의 조언을 구하고자 글을 올립니다.
그리고 이와 같은 방법외에 다른 방법은 무엇이 있을까요?
답변 부탁드립니다.
즐거운 주말 되세요... ^^
문제해결했습니다. 감사합니다.