Sophie Dexter
/
Just4Trionic
Just4Trionic - CAN and BDM FLASH programmer for Saab cars
common.h@5:1775b4b13232, 2015-04-25 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Sat Apr 25 17:07:08 2015 +0000
- Revision:
- 5:1775b4b13232
- Parent:
- 4:682d96ff6d79
- Child:
- 6:2fbcbebed28c
Version 1.5 Is a significant milestone.; ; Supports BDM and CAN read and write of T5.x, T7 and T8 ECU's plus T8 recovery.; A Target Resident Driver for BDM gives a big speed boost.; Supports many alternative replacement FLASH chips for T5.x ECU's;
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:bf3a2b29259a | 40 | #define FW_VERSION_MINOR 0x2 |
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 | //----------------------------------------------------------------------------- |