개발

jackryu 2009. 6. 10. 10:04

 

 

 

u-boot 상에서 xmodem,ymodem 이용한 파일 다운로드 소스를 분석하자면

필요한 정보.

 

 

 

NULL (0x00)

시간지연이나 칸 채움(filler)을 ㅜ이한 코드이며, 화면이나 프린터에 인쇄되지 않는다.

정보의 의미에 영향을 주지 않고 일련의 문자 사이에 삽입하거나 삭제하여 사용한다.

특히 프린터는 기계적인 장치이므로 행이 바뀐 이후(CR코드 이후) 프린터 헤드가 좌우측 한계에 도달하는데 소요되는 시간을 벌기위해 2~3개의 코드를 채워 전송하는 경우가 많다.

 

SOH(0x01)

데이터블록의 시작을 표시하는데 쓰이며, 파일전송 프로토콜인 커밋(Kermit), XMODEM, YMODEM 등에서 블록의 시작문자로 쓰인다.

 

STX(0x02)

데이터의 시작을 표시하는 코드로 쓰인다.

 

ETX(0x03)

데이터의 전송이 종료되었음을 표시하는 코드 또는 전송오류를 검사하기 위한 체크섬의 시작을 표시하기도 한다. MS-DOS, UNIX 운영체제에서는 인터럽트 시그널로 쓰이기도 한다.

 

EOT(0x04)

특정장비로 전송되는 모든 메시지의 종료를 표시하는 코드로서 XMODEM에서는 파일전송을 종료하는 신호로 쓰인다.

 

ENQ(0x05)

수신측의 반응을 요구하는 코드로 쓰이며, 통신장비의 ID를 확인하거나, 데이터 전송 상태를 결정하는데 쓰인다. 일부 PC 통신 패키지에서는 파일전송 프로토콜의 제어코드로도 쓰인다.

 

ACK(0x06)

/수신측간의 정확한 자료전송이 되었는지를 검사하는 코드로 쓰인다. 송신측에서 보낸 데이터에 대해 수신측은 오류여부를 검사하여 오류가 없을 경우 ACK를 보내게 된다. 오류가 있을경우 NAK를 보내 재전송을 할 수 있도록 한다. XMODEM, YMODEM 에서는 데이터 전송에서 사용한다.

 

BEL(0x07)

사용자의 주의를 끌 목적으로 단말기 또는 PC 스피커에서 소리가 나게하는 기능을 한다.

명령어에 잘못이 있거나 전송상에 오류가 있을 때 흔히 이 코드를 보내 소리가 나게 한다.

 

BS(0x08)

화면에서의 커서 위치나 프린터의 인쇄위치를 조정하는데 쓰이며, 한 컬럼 좌측으로 이동시켜서 전에 있던 문자를 지우는 역할을 하게 된다. PC에서는 백스페이스 키가 이 코드를 발생하게 되며 이는 Ctrl + H 키의 조합으로도 가능하다. PC에서 BS 코드를 호스트에 보내게 되면 두바이트의 BS 코드를 전송하여 한 컬럼 전진하여 사용자가 친 BS 분만큼 좌로 1 컬럼 이동하고 다시 전에 쳤던 명령어를 지우게 된다.

 

HT(0x09)
수평탭을 지정하는 코드이며, 화면이나 프린터에서 이 코드를 만나게 되면 다음 문자를 표시하기 이전에 정해진 위치만큼 우측으로 이동하게 된다. 이 정해진 위치는 탭표현 지정에 따라 다르게 되면 보통 MS-DOS 에서는 디폴트값이 8바이트로 되어 있어 탭키를 누르게 되면 8컬럼 우측으로 이동한다.

 

LF(0x0A)

행을 바구는 역할을 하며 LF를 만타면 같은 컬럼 위치의 다음 행에 커서가 위치하게 된다.

 

VT(0x0B)

현 컬럼 위치에서 수직으로 정해진 행 수 만큼 아래로 이동시키는 기능을 한다.

 

FF(0x0C)

프린터에서 프린터 헤드를 프린트 용지의 상단에 위치시키는 기능을 하며 기존에 찍던 행 수에 상관없이 이 코드를 만나면 상위 위치로 올라간다.

 

CR(0x0D)

행의 바뀜이 없이 프린터나 화면의 좌측 끝에 오게하는 기능을 한다. 또한 버퍼에 쌓인 문자열을 배출하는 기능을 하여 프린터 버퍼의 내용을 출력한다던가 패킷망에 접속된 패드에 쌓인 문자열을 패킷망에 전송하는 기능을 한다.

 

SO(0x0E,0x0F)

표준 그래픽 문자를 확장하는데 쓰이거나 프린팅 모드를 전환하는데 쓰인다. N 바이트 한글 코드에서는 SO로 한글 문자를 시작하여 SI로 한글 문자의 끝을 표시하기도 한다.

 

DLE(0x10)

일정한 문자열의 의미를 변경하는데 쓰이며, BSC 프로토콜에서는 데이터를 제어코드와는 무관하게 전송하기 위한 시작 및 끝 표시로 사용한다. 패킷망에서는 ^P에 의해 패드 명령어를 수행하기 위한 코드로 쓰기도 한다.

 

DC1(0x11)

통신상의 흐름제어에서 쓰이는 코드로 전송재개를 요구하기 위해 사용한다. XOFF 에 의해 중단된 데이터 전송을 XON 에 의해 재개할 때 쓰이며 이러한 흐름제어를 소프트웨어 흐름제어라고 한다.

 

DC2(0x12)

DC1과 마찬가지로 토글 코드로서 주변기기 제어에도 쓰인다.

 

DC3(0x13)

DC1(XON) 코드와 짝으로서 흐름제어를 하는 코드로서 수신장치 버퍼에 일정량 이상의 데이터가 처리되지 않은 상태로 있게 되면 이 코드를 보내 송신측의 전송중단을 요구하게 된다.

 

DC4(0x14)

DC1과 마찬가지로 토글 코드로서 주변기기 제어에도 쓰인다.

 

NAK(0x15)

앞의 ACK 코드와 연관하여 전송 데이터의 오류를 발견했을 때 전송하는 코드로써 이렇게 사용자의 개입없이 자동으로 오류를 감지하여 재전송을 요구하는 것을 자동 재전송 기능이라한다.

 

SYN(0x16)

이 코드는 비동기 통신의 정지비트 기능과 유사하다.

 

ETB(0x17)

전송 데이터의 특정 블록의 전송을 종료하는 표시로 쓰인다.

 

CAN(0x18)

여러가지 용도로 정의하여 쓰이게 되나, 주로 데이터 전송의 오류를 표시하는 기능으로 쓰이며 XMODEM 프로토콜에서는 파일전송의 중단을 요구하는 코드로 쓰인다.

 

EM(0x19)

디스크나 통신장비에 담긴 데이터의 마지막을 표시하는데 쓰인다.

SUB(0x1A)

잘못된 데이터의 수정을 위한 대치 코드 표시로 쓰인다. MS-DOS 에서는 텍스트 파일의 마지막 표시(EOF:End of file) 로도 쓰인다.

 

ESC(0x1B)

단말기 화면 표시나 프린터에 의한 인쇄 명령의 확장을 위해 사용한다. 대부분의 프린터는 이코드가 선행된 이후의 명령어에 의해 특별한 기능을 수행하며 , VT-100 타입의 단말기 등 대부분의 단말기가 이 코드 이후의 일련된 문자열에 의해 단말기 화면을 제어한다.

 

DEL(0x7F)

대부분의 단말기에서는 백스페이스 기능을 BS 또는 DEL 코드 중 하나를 선택하여 사용한다.

[출처] 통신 제어코드|작성자 더규마흘