Hello, I'm designing simple protocol for a bootloader, which is supposed to transfer data from host computer to target (ARM7-based embedded system) over USB. It should not be very reliable, so a simple checksum algorithm can be used by now. I plan to transmit data in blocks, prepended with a header and ended with a control check sum. So here is how I assume it may be: |message type 1 byte|length 2 bytes|... data ...|checksum 4 bytes| Message type might be 'start', 'stop', 'acknowledge', 'error'. Next is the size of the data transmitted including header and checksum. It ends up with the checksum. I'm not sure to include checksum or not, as USB already supports error-checking on a hardware level. Please critisize such solution. Any advices and comments will be welcomed!