English
Language : 

C509-L_97 Datasheet, PDF (252/290 Pages) Siemens Semiconductor Group – 8-Bit CMOS Microcontroller
Bootstrap Loader
C509-L
A transfer block is built by the host depending on the data (header or program data) it contains. For
safety purposes the host calculates a simple checksum of the whole block (blocktype and data
area) to attach it at the end of the block. The checksum must be generated by EXOR-ing all bytes
of the transfer block with themselves. Every time the bootstrap loader receives a transfer block, it
recalculates the checksum of the received bytes (blocktype and data area) and compares it with
the attached checksum. If the comparison fails, the bootstrap loader is rejecting the transfer block
by sending back a checksum error byte (FEH) to the host. Another possible error is a wrong block
type. In this case the bootstrap loader sends back a block error byte (FFH) to the host. In both error
cases the bootstrap loader awaits the actual transfer block from the host again. If a block is received
correctly, an acknowledge byte (55H) is sent to the host.
Table 10-3
Confirmation Bytes of the Bootstrap-Loader
Receive status
Acknowledge
Block Error
Checksum Error
Transmitted code to host
55H
FFH
FEH
Three types of transfer blocks depending on the value of blocktype are implemented in the transfer
protocol. Table 10-4 gives an overview of these block types. The detailed structures of the blocks
are described in the following sections.
Table 10-4
Types of Transfer Blocks
Block Name
Header Block
blocktype
00H (HEADER)
Data Block
01H (DATA)
EOT Block
02H (EOT)
Description
This block always has a length of 8 bytes (including the
attached checksum) and contains special information in the
data area, which selects the operating mode of the
bootstrap loader in phase III.
This block is used in operating mode 0 to transfer a portion
of normal data in the data area (e.g. program code) from
the host to the XRAM of the MCU. The length of this block
depends on the information given in the header block
before.
This block is used to indicate the end of a data transmission
in operating mode 0. It contains the last bytes of the
transferred data. The length of this block depends on the
information given in a header block before.
Semiconductor Group
10-14
1997-10-01