2010-03-21 4 views
3

다음과 같은 문제가 있습니다. PIO의 2 핀 (1 클럭, 1 데이터)을 통해 일부 하드웨어를 프로그래밍해야합니다. 타이밍 제약 조건은 10ms 클럭 사이클 타임입니다. 이 모든 것은 물론, 매우 높은 수준의 서비스 (CAN 버스, TCP/IP)를 유지하는 동안. 또한 다운 스트림 장치는 입력으로 구성된 PIO 핀을 하이로 어서 트함으로써 ACKS를 발생시킨다. 따라서이 루프는 읽기 및 쓰기가 모두 필요합니다. 직렬 스트림에서 16 비트를 보내야합니다.ColdFire/ucLinux에서 PIO를 Bitbanging

이런 종류의 일을 할 수있는 확실한 방법이 있습니까? 아니면 단순히 하드웨어 담당자에게 PIC 또는 일부 추가해야합니까?

나는이 단계에서 RTAI 확장과 같은 외래종을 피하는 것을 선호한다. 나는 가능한 인터럽트 구동 드라이버를 함축하지만 사용자 모드 IO에 대한 참조를 한 번 보았다.

모든 안내를 환영합니다.

답변

0

내 경험상 가장 쉬운 방법은 커널 드라이버를 작성하는 것입니다. 물론, 1 클럭, 1 데이터는 i2c와 유사하지만 (10ms 사이클이 i2c보다 훨씬 느리긴하지만) 이미 존재하는 Coldfire 용 비트 윙 i2c 드라이버가 있습니다. i2c가 아니더라도 i2c-adap-mcf_gpio가 시작점으로 사용될 수 있습니다.

실제로 10ms 사이클이라는 점에서 운이 좋았습니다. 기본 커널 틱은 10ms이고 필요한 경우 조정할 수 있습니다. 따라서 적절한 커널 절전 기능을 사용할 수 있어야합니다.

(이 모두도 사용중인 커널에 따라 다름) 쉬운 사용자 모드 I/O는 2.6 커널에서 매우 쉽게 사용할 수 있습니다. 2.4 커널에는 기능이 있지만 더 많은 작업이 필요할 수 있습니다.