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

새로 프로젝트를 시작하게 되었는데, 사용할 운영체제가 리눅스가 될

것 같습니다. ^^ 여러개의 단말기를 RS485로 연결해서

단말기 호스트(리눅스 탑재)에서 제어 해야 하는데, 나름대로 구글링을 좀 해보았는데,

드라이버 소스를 찾기가 좀 힘드네요,,

혹시 아시고 계시는 분 있으시면 힌트 좀 부탁 드리겠습니다.

감사 합니다.  

정창환

2008.04.10 22:27:42
*.14.117.41

RS485의 경우는 half duplex이기 때문에 흐름제어가 반드시 필요합니다.
이 흐름제어를 위해서 보통 RTS신호라인이나 GPIO를 이용합니다.
문제는 RTS를 이용한 제어가 데이터를 보내기에서 받기모드로 전환시 빠른 전환을 할수가 없습니다. 왜냐하면 RTS제어를 이용할려면 system call을 호출하게 되는데, 이 응답에 대해서 얼마나 빨리 반응할지를 알수가 없습니다.
다행이 통신할려는 장비가 요구한 데이터에 대해서 응답이 느릴경우는 상관없으나, 반응이 빠르거나, 어떤 장비가 물릴지 장담할수 없는경우는 문제가 생길 확률이 상당히 높습니다.

이를 해결할 방법으로 가장쉬운건 RS485지원하는 UART를 사용하는 방법입니다.
또 다른 방법은 TxD신호를 Not게이트를 달아서, rs485칩의 2번(/RE), 3번(DE)에 물러서 이것을 제어하는 방법입니다. 일부 rs232-rs485컨버터들이 이 방법을 사용합니다.
마지막으로 제가 사용한 방법은, 수신/발신 전환을 위해 AVR마이컴을 달았습니다. 메인cpu와는 spi를 약간 변형된 프로토콜로 마이컴에게 속도와 데이터 길이를 전송합니다. AVR마이컴에서는 start bit를 감지해서 데이터 길이만큼만 Tx를 인에이블 시키는 방식입니다.

저도 rs485때문에 많은 고민을 해봤습니다.
UART chip에서 shift regitster empty 인터럽트만 있으면, uart드라이버에서 이기능을 하도록 수정하면 될것 같은데, 제가 본 모든 uart는 fifo empty 인터럽트만 있더군요. 그래서, 드라이버의 수정으로 힘든다고 생각하에 하드웨어적으로 해결하였습니다.
능력이 뛰어난 분이 하면 될수도 있겠지만, 쉽지 않을거라 생각이 되네요

참조 자료
http://blog.nomujok.com/page/390

장병남

2008.04.11 06:08:30
*.131.127.180

정창환님 답변 감사 드립니다. 저 또한 UART는 Fifo 기반으로만 다루어본 경험밖에 없어서,, 능력이 뛰어난 분은 제 해당사항은 아닌가 봅니다. 말씀해주신 방법을 참고하여 하드웨어 개발자분들과 상의후 작업 진행 토록 하겠습니다. 감사 합니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수
228 alsa에서 alsa arm device와 soc audio device는 정확히 어떤관계인가... [2] 오대광 2008-04-18 899
227 [질문] 커널 디버깅 메시지 [3] 문철민 2008-04-15 805
226 [질문] 리눅스 커널 책 좀 추천 해 주세요 [1] 손성원 2008-04-15 1355
225 [완료] 낸드플래시에 FAT 파일시스템을 사용할 수 있나요? [4] 이세종 2008-04-11 1107
224 [완료] sd카드 풀스펙 데이터시트를 구합니다. [2] 이세종 2008-04-11 915
223 [완료]가상어드레스에 관하여 [4] 문철민 2008-04-11 734
222 [질문] pxa_request_dma, request_dma 에 대해서 궁금합니다. [2] 오대광 2008-04-10 754
» [질문] 리눅스용 RS485 드라이버를 찾고 있습니다. [2] 장병남 2008-04-10 1218
220 [완료] 이거 어디가 문제일까요??ㅜㅜ [5] 오대광 2008-04-04 1222
219 [완료]2.6용 devicedriver makefile 문의 [2] 문철민 2008-04-04 714
218 [질문] S3C2440 보드에 낸드플래시를 하나 더 달려고 하는데요,, [4] 장병남 2008-04-03 933
217 [질문]파일생성일자 읽어오는법좀~~ [1] 김우겸 2008-04-03 707
216 [완료]이솝보드에 관한건 아니지만.. ㅠ.ㅜ (uC/TCP 관련) [2] 이경준 2008-04-03 728
215 [완료] exception vector table과 cache관련 문의 [3] 김정호 2008-04-03 773
214 [완료]컴파일시 error발생하는 경우 [4] 김진희 2008-04-02 652
213 [완료]Freescale MC9328MX1 포팅 질문 [2] 이태간 2008-04-02 731
212 [질문]arm에서의 mmu setting을 이용한 메모리 설정 [1] 한기태 2008-04-01 971
211 [re] [질문]arm에서의 mmu setting을 이용한 메모리 설정 장석원 2008-04-02 737
210 [질문]usb to parallel ?? [1] 손성원 2008-04-01 709
209 [질문]I/O Memory를 이용한 device 접근 version-2 [1] 한기태 2008-04-01 714

사용자 로그인