Just4Trionic - CAN and BDM FLASH programmer for Saab cars

Dependencies:   mbed

Committer:
Just4pLeisure
Date:
Sat Apr 23 18:31:40 2016 +0000
Revision:
6:2fbcbebed28c
Parent:
5:1775b4b13232
Version 1.6 Faster T7 P-BUS FLASHing algorithm, longer T8 erase timeout fixed BDM register display function

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 5:1775b4b13232 32 #include "t8bootloaders.h"
Just4pLeisure 5:1775b4b13232 33 #include "t5bootloaders.h"
Just4pLeisure 1:d5452e398b76 34
Just4pLeisure 1:d5452e398b76 35 // build configuration
Just4pLeisure 1:d5452e398b76 36 //#define IGNORE_VCC_PIN ///< uncomment to ignore the VCC pin
Just4pLeisure 1:d5452e398b76 37
Just4pLeisure 1:d5452e398b76 38 // constants
Just4pLeisure 1:d5452e398b76 39 #define FW_VERSION_MAJOR 0x1 ///< firmware version
Just4pLeisure 6:2fbcbebed28c 40 #define FW_VERSION_MINOR 0x6
Just4pLeisure 1:d5452e398b76 41
Just4pLeisure 1:d5452e398b76 42 #define CR 0x0D
Just4pLeisure 1:d5452e398b76 43 #define NL 0x0A
Just4pLeisure 1:d5452e398b76 44 #define BELL 0x07
Just4pLeisure 1:d5452e398b76 45
Just4pLeisure 1:d5452e398b76 46 #define TRUE 1
Just4pLeisure 1:d5452e398b76 47 #define FALSE 0
Just4pLeisure 1:d5452e398b76 48
Just4pLeisure 1:d5452e398b76 49
Just4pLeisure 1:d5452e398b76 50 // bit macros
Just4pLeisure 1:d5452e398b76 51 #define SETBIT(x,y) (x |= (y)) ///< set bit y in byte x
Just4pLeisure 1:d5452e398b76 52 #define CLEARBIT(x,y) (x &= (~(y))) ///< clear bit y in byte x
Just4pLeisure 1:d5452e398b76 53 #define CHECKBIT(x,y) (((x) & (y)) == (y)) ///< check bit y in byte x
Just4pLeisure 1:d5452e398b76 54
Just4pLeisure 1:d5452e398b76 55 // command return flags and character constants
Just4pLeisure 1:d5452e398b76 56 #define TERM_OK 13 ///< command terminator or success flag
Just4pLeisure 1:d5452e398b76 57 #define TERM_ERR 7 ///< error flag
Just4pLeisure 1:d5452e398b76 58 #define TERM_BREAK 0x1b ///< command break flag
Just4pLeisure 1:d5452e398b76 59
Just4pLeisure 1:d5452e398b76 60 #define ERR_COUNT 255 ///< maximum error cycles
Just4pLeisure 1:d5452e398b76 61
Just4pLeisure 1:d5452e398b76 62 #define FILE_BUF_LENGTH 0x1000 ///< file buffer size
Just4pLeisure 1:d5452e398b76 63 static char file_buffer[FILE_BUF_LENGTH]; ///< file buffer
Just4pLeisure 1:d5452e398b76 64
Just4pLeisure 5:1775b4b13232 65 static const uint8_t T8BootloaderRead[] = T8_BOOTLOADER_DUMP;
Just4pLeisure 5:1775b4b13232 66 static const uint8_t T8BootLoaderWrite[] = T8_BOOTLOADER_PROG;
Just4pLeisure 5:1775b4b13232 67
Just4pLeisure 5:1775b4b13232 68 static const uint8_t T5BootLoader[] = MYBOOTY;
Just4pLeisure 5:1775b4b13232 69
Just4pLeisure 1:d5452e398b76 70 // FLASH chip manufacturer id values
Just4pLeisure 1:d5452e398b76 71 #define AMD 0x01
Just4pLeisure 1:d5452e398b76 72 #define CSI 0x31
Just4pLeisure 1:d5452e398b76 73 #define INTEL 0x89
Just4pLeisure 5:1775b4b13232 74 #define ATMEL 0x1F
Just4pLeisure 5:1775b4b13232 75 #define SST 0xBF
Just4pLeisure 5:1775b4b13232 76 #define ST 0x20
Just4pLeisure 5:1775b4b13232 77 #define AMIC 0x37
Just4pLeisure 1:d5452e398b76 78
Just4pLeisure 1:d5452e398b76 79 // FLASH chip type values
Just4pLeisure 1:d5452e398b76 80 #define INTEL28F512 0xB8
Just4pLeisure 1:d5452e398b76 81 #define AMD28F512 0x25
Just4pLeisure 5:1775b4b13232 82 #define INTEL28F010 0xB4 // and CSI
Just4pLeisure 1:d5452e398b76 83 #define AMD28F010 0xA7
Just4pLeisure 5:1775b4b13232 84 #define AMD29F010 0x20 // and ST
Just4pLeisure 5:1775b4b13232 85 #define ATMEL29C512 0x5D
Just4pLeisure 5:1775b4b13232 86 #define ATMEL29C010 0xD5
Just4pLeisure 5:1775b4b13232 87 #define SST39SF010 0xB5
Just4pLeisure 5:1775b4b13232 88 #define ST29F010 0x20
Just4pLeisure 5:1775b4b13232 89 #define AMICA29010L 0xA4
Just4pLeisure 1:d5452e398b76 90 #define AMD29F400T 0x23
Just4pLeisure 5:1775b4b13232 91 #define AMD29F400B 0xAB // !!! NOT USED IN T7 !!!
Just4pLeisure 1:d5452e398b76 92 //#define 29F400T 0x2223
Just4pLeisure 1:d5452e398b76 93 //#define 29F400B 0x22AB
Just4pLeisure 4:682d96ff6d79 94 #define AMD29BL802C 0x81
Just4pLeisure 4:682d96ff6d79 95 //#define AMD29BL802C 0x2281
Just4pLeisure 4:682d96ff6d79 96
Just4pLeisure 1:d5452e398b76 97
Just4pLeisure 1:d5452e398b76 98 // TRIONIC ECU Start addresses
Just4pLeisure 1:d5452e398b76 99 #define T52FLASHSTART 0x60000
Just4pLeisure 1:d5452e398b76 100 #define T55FLASHSTART 0x40000
Just4pLeisure 1:d5452e398b76 101 #define T7FLASHSTART 0x00000
Just4pLeisure 4:682d96ff6d79 102 #define T8FLASHSTART 0x00000
Just4pLeisure 1:d5452e398b76 103
Just4pLeisure 1:d5452e398b76 104 // TRIONIC ECU FLASH sizes
Just4pLeisure 1:d5452e398b76 105 #define T52FLASHSIZE 0x20000
Just4pLeisure 1:d5452e398b76 106 #define T55FLASHSIZE 0x40000
Just4pLeisure 1:d5452e398b76 107 #define T7FLASHSIZE 0x80000
Just4pLeisure 4:682d96ff6d79 108 #define T8FLASHSIZE 0x100000
Just4pLeisure 1:d5452e398b76 109
Just4pLeisure 1:d5452e398b76 110 // TRIONIC ECU Last address
Just4pLeisure 1:d5452e398b76 111 #define TRIONICLASTADDR 0x7FFFF
Just4pLeisure 1:d5452e398b76 112
Just4pLeisure 1:d5452e398b76 113 // TRIONIC ECU RAM sizes
Just4pLeisure 1:d5452e398b76 114 #define T5RAMSIZE 0x8000
Just4pLeisure 1:d5452e398b76 115 #define T7RAMSIZE 0x8000
Just4pLeisure 1:d5452e398b76 116
Just4pLeisure 1:d5452e398b76 117 // Initial Stack pointer values used by Trionic (1st 4 bytes of BIN file)
Just4pLeisure 1:d5452e398b76 118 #define T5POINTER 0xFFFFF7FC
Just4pLeisure 1:d5452e398b76 119 #define T7POINTER 0xFFFFEFFC
Just4pLeisure 4:682d96ff6d79 120 #define T8POINTER 0x00100C00
Just4pLeisure 1:d5452e398b76 121
Just4pLeisure 1:d5452e398b76 122 // public functions
Just4pLeisure 1:d5452e398b76 123 void led_on(uint8_t led);
Just4pLeisure 1:d5452e398b76 124 bool ascii2int(uint32_t* val, const char* str, uint8_t length);
Just4pLeisure 1:d5452e398b76 125
Just4pLeisure 1:d5452e398b76 126 #endif // __COMMON_H__
Just4pLeisure 1:d5452e398b76 127
Just4pLeisure 1:d5452e398b76 128 //-----------------------------------------------------------------------------
Just4pLeisure 1:d5452e398b76 129 // EOF
Just4pLeisure 1:d5452e398b76 130 //-----------------------------------------------------------------------------