tools/fsusb/bootload.h
author slime@unimatrix01.gamma-quadrant.de
Tue, 29 Jan 2008 22:31:52 +0100
changeset 2 2f55e5dd591d
permissions -rw-r--r--
inital checkin
slime@2
     1
/*
slime@2
     2
** This file is part of fsusb_picdem
slime@2
     3
**
slime@2
     4
** fsusb_picdem is free software; you can redistribute it and/or
slime@2
     5
** modify it under the terms of the GNU General Public License as
slime@2
     6
** published by the Free Software Foundation; either version 2 of the
slime@2
     7
** License, or (at your option) any later version.
slime@2
     8
**
slime@2
     9
** fsusb_picdem is distributed in the hope that it will be useful, but
slime@2
    10
** WITHOUT ANY WARRANTY; without even the implied warranty of
slime@2
    11
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slime@2
    12
** General Public License for more details.
slime@2
    13
**
slime@2
    14
** You should have received a copy of the GNU General Public License
slime@2
    15
** along with fsusb_picdem; if not, write to the Free Software
slime@2
    16
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
slime@2
    17
** 02110-1301, USA
slime@2
    18
*/
slime@2
    19
slime@2
    20
#ifndef __BOOTLOAD_H__
slime@2
    21
#define __BOOTLOAD_H__
slime@2
    22
slime@2
    23
slime@2
    24
slime@2
    25
/*
slime@2
    26
 * Command packets:
slime@2
    27
 *
slime@2
    28
 * 0x00: command
slime@2
    29
 * 0x01: data length (usually; different action for some commands!)
slime@2
    30
 * 0x02: address bits 7..0
slime@2
    31
 * 0x03: address bits 15..8
slime@2
    32
 * 0x04: address bits 23..16 (upper bits always zero)
slime@2
    33
 * 0x05: data[0]
slime@2
    34
 * 0x06: data[1]
slime@2
    35
 * 0x07: data[2]
slime@2
    36
 * 0x??: ...
slime@2
    37
 * 0x3f: data[BL_DATA_LEN-1]
slime@2
    38
 */
slime@2
    39
slime@2
    40
slime@2
    41
slime@2
    42
typedef unsigned char byte;
slime@2
    43
slime@2
    44
slime@2
    45
slime@2
    46
#define BL_PACKET_LEN 64
slime@2
    47
#define BL_HEADER_LEN  5 // command, len, low, high, upper
slime@2
    48
#define BL_DATA_LEN   (BL_PACKET_LEN - BL_HEADER_LEN)
slime@2
    49
slime@2
    50
slime@2
    51
slime@2
    52
enum {
slime@2
    53
  READ_VERSION    = 0x00, // Works
slime@2
    54
  READ_FLASH      = 0x01, // Works
slime@2
    55
  WRITE_FLASH     = 0x02, // Works
slime@2
    56
  ERASE_FLASH     = 0x03, // Works
slime@2
    57
  READ_EEDATA     = 0x04, // NOT IMPLEMENTED
slime@2
    58
  WRITE_EEDATA    = 0x05, // NOT IMPLEMENTED
slime@2
    59
  READ_CONFIG     = 0x06, // NOT IMPLEMENTED
slime@2
    60
                          // (but in current firmware READ_FLASH works
slime@2
    61
  WRITE_CONFIG    = 0x07, // NOT TESTED
slime@2
    62
  UPDATE_LED      = 0x32, // NOT IMPLEMENTED
slime@2
    63
  RESET           = 0xFF  // NOT IMPLEMENTED
slime@2
    64
};
slime@2
    65
slime@2
    66
slime@2
    67
slime@2
    68
typedef union _bl_packet {
slime@2
    69
  byte _byte[64];
slime@2
    70
  struct {
slime@2
    71
    byte command;
slime@2
    72
    byte len;
slime@2
    73
    struct {
slime@2
    74
      byte low;
slime@2
    75
      byte high;
slime@2
    76
      byte upper;
slime@2
    77
    } address;
slime@2
    78
    byte data[BL_DATA_LEN];
slime@2
    79
  };
slime@2
    80
} bl_packet;
slime@2
    81
slime@2
    82
#endif /* __BOOTLOAD_H__ */