|
염상철 님이 쓰신 글 :
: 저번에 한번 PC to PC 시리얼 통신에 관해서 질문 올린적 있는데요..
:
: 그때는 포트에 관한 핸들만 얻어오면, 알아서 PC가 읽고 쓰고 했기 때문에
:
: 쉽게 해결할 수 있었습니다.
:
: 근데 이번에는 DSP 와 PC 간의 통신을 하려고 하는데, DSP에서 PC가 보내는
:
: 데이터를 받기 위해서는 정확하게 PC에서 어떤식으로 데이터를 보내고 받는지를
:
: 자세히 알아야 할 것 같습니다.
:
: 그냥 시작비트 + 8비트 + 스탑비트 라는 공식만 알고 있는 상황인데, 실제로
:
: PC가 데이터를 주고 받을때는 어떤 형식으로 주고 받는지 좀 정확하게 알고 싶군요.
:
: 예를들면, PC가 ReadFile을 사용해서 포트를 읽어올때 읽어들인 총바이트 수는 어떤
:
: 기준으로 계산하는지 모르겠네요.
:
: 그럼 답변 기다리겠습니다. 꾸벅..
:
유엔아이 현입니다 ...
에쿠 답변 다쓰고 저장 버튼만 누르면 되는디 이넘의 피시가 코드레드에 걸리고 난뒤부터
절라 이상하게 가끔 뻗어버리네여 헐~~~~~( 고쳤는데두 불구 하구 다시깔든가 해야지원~~)
일단
: 데이터를 받기 위해서는 정확하게 PC에서 어떤식으로 데이터를 보내고 받는지를
:
: 자세히 알아야 할 것 같습니다.
전혀 알 필요가 없습니다.
제가 대출 시리얼에 대해서 설명을 드리지요 ~
피시안에는 시리얼 전용 칩이 있습니다 ... 코아로는 16c450 or 16c550 이라는 시리얼
전용칩입니다. 요즘엔 전용칩셑안에 모두 포함되어 버렸지만 XT, 286, 386 까지는 모두
그런 칩들을 직접 사용 했드랬습니다 ...
음 이칩이 뭐 하는 칩이냐면요
일단 시리얼이란 한 데이타를 한 라인에 실어 주는 기법을 야그 합니다 ...
페러럴 이란 일반적으로 한 테이타가 8 비트라면 8 라인에 실어 주는 기법이구요
페러럴은 퍼러럴대로 전용칩셑이 있구요 여기선 시리얼에 대해서만 ^^
만약 16 바이트의 데이타를 1 라인에 실타보면은 1 바이트의 데이타는 8 비트이므로
16 * 8 비트 만큼 .. 전압의 High(5v) - Low(0v) ( TTL 레벨에서 )로 표시 하게 됩니다 .
__--__--____--____--__-- ... 이런식으로 펄스를 만들게 되는것이지요
그런데 이런 식으로 데이타만을 쭉실어 보낸다면은 ... 받는쪽에선 어디서 부터가 첫 번째
바이트의 첫 비트인지 구별 하기 힘들겠지요
그래서 데이타 비트보다 좀더 길게 신호를 띄워서 스타트 비트임을 알리고 8 비트의 데이타
비트를 실고 또 다시 데이타 비트보다 좀더 길게 신호를 띄워서 정지 비트임을 알립니다.
그런식으로 데이타를 쭉 실어 보내는것이지요
그런데 프로그램에서는 이런 신호를 직접 처리하는것이 아니라
위에서 애기한 16c450 이나 16c550 이 이런 잡스런 역활을 대신 해줍니다 ...
스타트 비트인지 구분하여 그다음부터 들어오는 데이타를 모아 한 바이트의 데이타를 만들고
정지비트 체크 하고 패리티비트 체크 하고 해서 모아진 데이타를 CPU 에게 1 바이트 단위로
읽을수 있도록 드라이브해주는 칩이지요~~
따라서 CPU 차원에서도 1 비트 단위의 시리얼 데이타를 직접 처리하는것이 아닌 1 Byte 의
데이타를 처리 하게 되고 또, 반대로 CPU 가 1 byte 의 데이타를 시리얼로 출력 하게 되면
이칩들은 반대로 스타트 비트를 만들고, 데이타비트를 보내고 패트티비트를 보내고, 정지비
트를 보내는식으로 데이타를 비트단위로 쪼개서 데이타를 날리는 반대의 역활도 합니다.
따라서 S/W 에서는 그런 복잡한 관계를 알필요 없이 1 바이트의 데이타를 처리 할수 있게
됩니다. 예전 도스 시절에는 이 16c450 이나 550 을 직접 제어하여 통신 속도 라든지 ...
데이타 비트 크기 7 비트냐 8 비트냐 하는등의 제어를 직접 이 칩의 어드레스에 대고
이칩을 조작하여 프로그래밍 하기도 하였으나 지금은 윈도우 시대 윈도우 에서는 드바이스
드라이버라느넘이 이런 역활을 대신 하고 대신 이 디바이스 드라이버와 커뮤니케이션을 하기
위해 API 계열 함수를 사용 하게됩니다. 단 시리얼 같은 기본적인 디바이스에 대해서는 윈도우
또한 COM1...COM2 ... 라는 식으로 가상 파일을 만들어 놓고 사용자로 하여금 쉽게 사용할수
있도록 진짜 파일인듯이 한바이트를 쓰면 전용칩을 통해서 나가게끔, 또 그반대로 ,,,,
할수 있도록 윈도우가 지원하게 되었습니다. 따라서 님께서는 위와 같은 애용에 대해서
전반적인 이해가 필요 할뿐이지 ... 님이 직접 그렇게 다룰 필요는 없는 것이지요
: 근데 이번에는 DSP 와 PC 간의 통신을 하려고 하는데, DSP에서 PC가 보내는
:
: 데이터를 받기 위해서는 정확하게 PC에서 어떤식으로 데이터를 보내고 받는지를
:
: 자세히 알아야 할 것 같습니다.
따라서 위질문은 대충 이해하시고 DSP 이던 그 타겟 장비가 무엇이든간에 ... 대충 그런갑다
하구 사용 하시면 됩니다. PC to PC 와 똑 같은 프로그래밍 기법으로 말입니다.
그럼 많은 도움이 되셜길 .~~~~~~~~
----------------------------------------------------------------------------------------
에구 제가 시리얼만 한 8~9 년동안 진짜 무쟈게 많이 해보았더니만 ... 하드웨어 기술자도
아닌제가 이런 허접한 글까지 쓸수 있게 되었답니다. 이젠 시리얼이라면 진절머리가 날 정
도로 많이 해보았지요~~ 그런데 알고 있으면 프로그램 하는데두 많은 도움이 되구요~
전 제어만 전문적으로 하다보니 이젠 반 하드웨어 기술자가 되어버렸어요 ..
이젠 전용 칩들의 데이타북을 직접 봐가며, 펌웨어 프로그램까지도 대신 해줄수 있는 정도가
되 버렸으니깐요~~ 한낫 무지랭이가~~~^^ 근데두 그런 제어 프로그램이 재밌습니다.
기계는 거짓말을 않하니깐요~~
OA 프로그램은 ... 최종 사용자가 사람이잖아요~~ 사람은 거짓말 해도 제어 프로그램의 최종
타겟인 기계는 거시말을 않합니다... 그래서 제어가 편하고 재밌지요~~
암튼 시리얼 야그가 나와서 사설이 길어 졌네요~~
그럼 즐프~~~~~~~~
|