Difference between revisions of "Protocols"

From Ninerpedia
Jump to navigation Jump to search
Line 6: Line 6:
== XModem protocol ==
== XModem protocol ==


The XModem protocol transmits data in a sequence of blocks.  
The XModem protocol transmits data in a sequence of blocks. Each block contains a part of the file to be transmitted.
 
=== Basic XModem ===
 
Each block contains 128 bytes of the file to be transmitted.


{| class="xmodem"
{| class="xmodem"
Line 19: Line 15:
| Block
| Block
|}
|}
The last block may require padding if the number of remaining bytes does not suffice to fill the block.
Each block contains a sequence number. When a block with the same number as the previous one is received, the receiver ignores the block.
The message sequence starts with the receiver sending the first timeout NAK to the sender.
{| class="xmodemseq"
! Sender sending
|
|
|-
! Receiver sending
|
| NAK
|}
The receiver has a timeout of 10 seconds, after which it transmits a NAK.
=== Standard XModem ===


Each block is defined in this way (numbers tell the number of bytes for each field):
Each block is defined in this way (numbers tell the number of bytes for each field):
Line 36: Line 54:
|}
|}


The number is a sequence number which increases by one for each successive block. The /Number field is the one's complement of the Number field and calculates as 255-Number.
The number is a sequence number which increases by one for each successive block. The /Number field is the one's complement of the Number field and calculates as 255-Number. When the number reaches 256 it is reset to 0.


The checksum field contains the least significant byte of the sum of the data bytes of this block.
The checksum field contains the least significant byte of the sum of the data bytes of this block.
The receiver has a timeout of 10 seconds, after which it transmits a NAK.


=== XModem-1K ===
=== XModem-1K ===
Line 59: Line 75:
| Checksum
| Checksum
|}
|}
The sender may switch between 128-byte and 1024-byte blocks after receiving an ACK from the receiver.
=== XModem/CRC ===

Revision as of 21:18, 7 May 2011

Communication with devices

Here is a commented log when formatting a SSSD floppy disk with the TI disk controller. Actually, this dump was achieved using MESS and putting in some printf lines.


XModem protocol

The XModem protocol transmits data in a sequence of blocks. Each block contains a part of the file to be transmitted.

Block Block Block ... Block

The last block may require padding if the number of remaining bytes does not suffice to fill the block.

Each block contains a sequence number. When a block with the same number as the previous one is received, the receiver ignores the block.

The message sequence starts with the receiver sending the first timeout NAK to the sender.

Sender sending
Receiver sending NAK


The receiver has a timeout of 10 seconds, after which it transmits a NAK.


Standard XModem

Each block is defined in this way (numbers tell the number of bytes for each field):

1 1 1 128 1
SOH Number /Number Data bytes Checksum

The number is a sequence number which increases by one for each successive block. The /Number field is the one's complement of the Number field and calculates as 255-Number. When the number reaches 256 it is reset to 0.

The checksum field contains the least significant byte of the sum of the data bytes of this block.

XModem-1K

XModem-1K is a variation of XModem with 1K (1024) bytes for each data block.

1 1 1 1024 1
STX Number /Number Data bytes Checksum

The sender may switch between 128-byte and 1024-byte blocks after receiving an ACK from the receiver.

XModem/CRC