2014-03-26 4 views
0

저는 리눅스에서 드라이버를 작성하는 법을 배우려고합니다. 난 테스트를 거쳤으며 작동하는 브레드 보드에 LED를 배선했다. (LED와 직렬로 연결된 레지스터). 나는 양의 데이터 끝이 회로의 한쪽 끝에 연결되고 접지 케이블이 다른쪽에 연결되도록 잘라진 USB 케이블에 연결했다. 내 컴퓨터에서 너무 많은 전류를 끌어 당기는 것을 피하기 위해 전원이 공급되는 USB 허브를 통해 연결했지만 직접 연결할 때도 문제가없는 것 같습니다.USB 포트/케이블을 사용하여 사용자 정의 하드웨어를 제어하는 ​​방법은 무엇입니까?

http://en.wikipedia.org/wiki/USB#Pinouts

어쨌든, 나는 그것이 빛 깜박임을 켜, 또는 뭔가 다른 USB 케이블을 통해 신호를 전송하고 싶은 것. FPGA 보드 나 특수 하드웨어를 사용하고 싶지 않습니다. USB 케이블을 통해 전송되는 비트를 제어하고 싶습니다.

아래 튜토리얼을 살펴 보았지만 나에게 도움이되지 못했습니다. 나는 내 직감에 따라 코드를 수정하려고 노력했다. (필자는 약 7 년 동안 프로그래밍을 해왔지만 드라이버 나 하드웨어는 절대로 사용하지 않았다.) 명백하게 나의 직감은 운전자에게 적용되지 않는다. .. 오 잘.

내 코드. On Pastebin

나는 이것을 배우면서 배우고 자한다. 그러므로 나는 FPGA 보드를 사용하고 싶지 않다. 나는 보드를 얻기보다는 회로를 바꾸는 것을 선호한다. 만약 내가 바보가된다면, 친절하게 말해주십시오.

답변

1

USB 포트는 입니다. 간단한 회로와 직접 인터페이스 할 수는 없지만, USB 사용 가능 마이크로 컨트롤러 또는 주변 장치 칩 내부에서 발견되는 상당히 복잡한 USB 트랜시버 만 사용해야합니다.

그러나 USB 전원 선만 사용 중입니다. 소수의 소수의 시스템/허브 만이 개별 포트의 전원을 소프트웨어로 제어 할 수 있습니다. 시스템이나 허브에이 기능이 있으면 LED를 켜고 끌 수 있습니다. 그러나 패스 트랜지스터가 실제로있는 허브를 찾으려면 꽤 오랜 시간이 걸릴 수 있습니다. 허브 IC가 그러한 트랜지스터를 제어하는 ​​핀을 가지고 있어도 일반적으로 실제로 보드에 설치되지는 않습니다.

호스트 하드웨어를 매우주의 깊게 선택하지 않아도되는 휴대용 프로젝트의 경우 USB 가능 마이크로 컨트롤러 또는 인터페이스 칩을 사용해야합니다.

+0

직렬 포트 또는 USB 직렬 어댑터는 어떻게됩니까? –

+0

"직렬 포트"는 데이터를 시간 다중화하므로 간단한 회로와 잘 연결되지 않습니다. 그러나 USB 직렬 어댑터를 포함한 대부분의 직렬 포트에는 소프트웨어 제어하에 주장 할 수있는 몇 가지 제어 신호가 있습니다. (리눅스에서는'stty' 도구를 사용하여 구문을 처리 할 수 ​​있습니다. 그것들은 아마도 당신이하고 싶은 것에 적합 할 것입니다 - USB 버전에는 약간의 지연이 있습니다 만, 당신이 그것들을 한꺼번에 토글하려고하지 않는 한, 그들은 인간의 관점에서 빨리 보일 것입니다. –