Just4Trionic - CAN and BDM FLASH programmer for Saab cars

Dependencies:   mbed

Committer:
Just4pLeisure
Date:
Wed Sep 11 11:55:51 2013 +0000
Revision:
4:682d96ff6d79
Parent:
2:bf3a2b29259a
Child:
5:1775b4b13232
This update adds T8 CAN DUMP and FLASH capability (recovery still to do)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Just4pLeisure 1:d5452e398b76 1 /*******************************************************************************
Just4pLeisure 1:d5452e398b76 2
Just4pLeisure 1:d5452e398b76 3 common.h - information and definitions needed by parts of Just4Trionic
Just4pLeisure 1:d5452e398b76 4 (c) by 2010 Sophie Dexter
Just4pLeisure 1:d5452e398b76 5 portions (c) 2009, 2010 by Janis Silins (johnc)
Just4pLeisure 1:d5452e398b76 6
Just4pLeisure 1:d5452e398b76 7 ********************************************************************************
Just4pLeisure 1:d5452e398b76 8
Just4pLeisure 1:d5452e398b76 9 WARNING: Use at your own risk, sadly this software comes with no guarantees.
Just4pLeisure 1:d5452e398b76 10 This software is provided 'free' and in good faith, but the author does not
Just4pLeisure 1:d5452e398b76 11 accept liability for any damage arising from its use.
Just4pLeisure 1:d5452e398b76 12
Just4pLeisure 1:d5452e398b76 13 *******************************************************************************/
Just4pLeisure 1:d5452e398b76 14
Just4pLeisure 1:d5452e398b76 15 #ifndef __COMMON_H__
Just4pLeisure 1:d5452e398b76 16 #define __COMMON_H__
Just4pLeisure 1:d5452e398b76 17
Just4pLeisure 1:d5452e398b76 18 //#include <stdint.h>
Just4pLeisure 1:d5452e398b76 19 //#include <stdbool.h>
Just4pLeisure 1:d5452e398b76 20
Just4pLeisure 4:682d96ff6d79 21 #undef DEBUG
Just4pLeisure 4:682d96ff6d79 22 #ifndef DEBUG
Just4pLeisure 4:682d96ff6d79 23 //#define DEBUG 1
Just4pLeisure 4:682d96ff6d79 24 //#define DEBUG
Just4pLeisure 4:682d96ff6d79 25 #endif
Just4pLeisure 4:682d96ff6d79 26
Just4pLeisure 1:d5452e398b76 27 #include "mbed.h"
Just4pLeisure 1:d5452e398b76 28
Just4pLeisure 1:d5452e398b76 29 #include "sizedefs.h"
Just4pLeisure 1:d5452e398b76 30 #include "strings.h"
Just4pLeisure 1:d5452e398b76 31 #include "interfaces.h"
Just4pLeisure 1:d5452e398b76 32
Just4pLeisure 1:d5452e398b76 33 // build configuration
Just4pLeisure 1:d5452e398b76 34 //#define IGNORE_VCC_PIN ///< uncomment to ignore the VCC pin
Just4pLeisure 1:d5452e398b76 35
Just4pLeisure 1:d5452e398b76 36 // constants
Just4pLeisure 1:d5452e398b76 37 #define FW_VERSION_MAJOR 0x1 ///< firmware version
Just4pLeisure 2:bf3a2b29259a 38 #define FW_VERSION_MINOR 0x2
Just4pLeisure 1:d5452e398b76 39
Just4pLeisure 1:d5452e398b76 40 #define CR 0x0D
Just4pLeisure 1:d5452e398b76 41 #define NL 0x0A
Just4pLeisure 1:d5452e398b76 42 #define BELL 0x07
Just4pLeisure 1:d5452e398b76 43
Just4pLeisure 1:d5452e398b76 44 #define TRUE 1
Just4pLeisure 1:d5452e398b76 45 #define FALSE 0
Just4pLeisure 1:d5452e398b76 46
Just4pLeisure 1:d5452e398b76 47
Just4pLeisure 1:d5452e398b76 48 // bit macros
Just4pLeisure 1:d5452e398b76 49 #define SETBIT(x,y) (x |= (y)) ///< set bit y in byte x
Just4pLeisure 1:d5452e398b76 50 #define CLEARBIT(x,y) (x &= (~(y))) ///< clear bit y in byte x
Just4pLeisure 1:d5452e398b76 51 #define CHECKBIT(x,y) (((x) & (y)) == (y)) ///< check bit y in byte x
Just4pLeisure 1:d5452e398b76 52
Just4pLeisure 1:d5452e398b76 53 // command return flags and character constants
Just4pLeisure 1:d5452e398b76 54 #define TERM_OK 13 ///< command terminator or success flag
Just4pLeisure 1:d5452e398b76 55 #define TERM_ERR 7 ///< error flag
Just4pLeisure 1:d5452e398b76 56 #define TERM_BREAK 0x1b ///< command break flag
Just4pLeisure 1:d5452e398b76 57
Just4pLeisure 1:d5452e398b76 58 #define ERR_COUNT 255 ///< maximum error cycles
Just4pLeisure 1:d5452e398b76 59
Just4pLeisure 1:d5452e398b76 60 #define FILE_BUF_LENGTH 0x1000 ///< file buffer size
Just4pLeisure 1:d5452e398b76 61 static char file_buffer[FILE_BUF_LENGTH]; ///< file buffer
Just4pLeisure 1:d5452e398b76 62
Just4pLeisure 1:d5452e398b76 63 // FLASH chip manufacturer id values
Just4pLeisure 1:d5452e398b76 64 #define AMD 0x01
Just4pLeisure 1:d5452e398b76 65 #define CSI 0x31
Just4pLeisure 1:d5452e398b76 66 #define INTEL 0x89
Just4pLeisure 1:d5452e398b76 67
Just4pLeisure 1:d5452e398b76 68 // FLASH chip type values
Just4pLeisure 1:d5452e398b76 69 #define INTEL28F512 0xB8
Just4pLeisure 1:d5452e398b76 70 #define AMD28F512 0x25
Just4pLeisure 1:d5452e398b76 71 #define INTEL28F010 0xB4
Just4pLeisure 1:d5452e398b76 72 #define AMD28F010 0xA7
Just4pLeisure 1:d5452e398b76 73 #define AMD29F010 0x20
Just4pLeisure 1:d5452e398b76 74 #define AMD29F400T 0x23
Just4pLeisure 1:d5452e398b76 75 #define AMD29F400B 0xAB
Just4pLeisure 1:d5452e398b76 76 //#define 29F400T 0x2223
Just4pLeisure 1:d5452e398b76 77 //#define 29F400B 0x22AB
Just4pLeisure 4:682d96ff6d79 78 #define AMD29BL802C 0x81
Just4pLeisure 4:682d96ff6d79 79 //#define AMD29BL802C 0x2281
Just4pLeisure 4:682d96ff6d79 80
Just4pLeisure 1:d5452e398b76 81
Just4pLeisure 1:d5452e398b76 82 // TRIONIC ECU Start addresses
Just4pLeisure 1:d5452e398b76 83 #define T52FLASHSTART 0x60000
Just4pLeisure 1:d5452e398b76 84 #define T55FLASHSTART 0x40000
Just4pLeisure 1:d5452e398b76 85 #define T7FLASHSTART 0x00000
Just4pLeisure 4:682d96ff6d79 86 #define T8FLASHSTART 0x00000
Just4pLeisure 1:d5452e398b76 87
Just4pLeisure 1:d5452e398b76 88 // TRIONIC ECU FLASH sizes
Just4pLeisure 1:d5452e398b76 89 #define T52FLASHSIZE 0x20000
Just4pLeisure 1:d5452e398b76 90 #define T55FLASHSIZE 0x40000
Just4pLeisure 1:d5452e398b76 91 #define T7FLASHSIZE 0x80000
Just4pLeisure 4:682d96ff6d79 92 #define T8FLASHSIZE 0x100000
Just4pLeisure 1:d5452e398b76 93
Just4pLeisure 1:d5452e398b76 94 // TRIONIC ECU Last address
Just4pLeisure 1:d5452e398b76 95 #define TRIONICLASTADDR 0x7FFFF
Just4pLeisure 1:d5452e398b76 96
Just4pLeisure 1:d5452e398b76 97 // TRIONIC ECU RAM sizes
Just4pLeisure 1:d5452e398b76 98 #define T5RAMSIZE 0x8000
Just4pLeisure 1:d5452e398b76 99 #define T7RAMSIZE 0x8000
Just4pLeisure 1:d5452e398b76 100
Just4pLeisure 1:d5452e398b76 101 // Initial Stack pointer values used by Trionic (1st 4 bytes of BIN file)
Just4pLeisure 1:d5452e398b76 102 #define T5POINTER 0xFFFFF7FC
Just4pLeisure 1:d5452e398b76 103 #define T7POINTER 0xFFFFEFFC
Just4pLeisure 4:682d96ff6d79 104 #define T8POINTER 0x00100C00
Just4pLeisure 1:d5452e398b76 105
Just4pLeisure 1:d5452e398b76 106 // public functions
Just4pLeisure 1:d5452e398b76 107 void led_on(uint8_t led);
Just4pLeisure 1:d5452e398b76 108 bool ascii2int(uint32_t* val, const char* str, uint8_t length);
Just4pLeisure 1:d5452e398b76 109
Just4pLeisure 1:d5452e398b76 110 #endif // __COMMON_H__
Just4pLeisure 1:d5452e398b76 111
Just4pLeisure 1:d5452e398b76 112 //-----------------------------------------------------------------------------
Just4pLeisure 1:d5452e398b76 113 // EOF
Just4pLeisure 1:d5452e398b76 114 //-----------------------------------------------------------------------------