Sophie Dexter
/
Just4Trionic
Just4Trionic - CAN and BDM FLASH programmer for Saab cars
bdmcpu32.h@1:d5452e398b76, 2010-09-14 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Tue Sep 14 21:02:04 2010 +0000
- Revision:
- 1:d5452e398b76
- Child:
- 2:bf3a2b29259a
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 | bdmcpu32.h |
Just4pLeisure | 1:d5452e398b76 | 4 | (c) 2010 by Sophie Dexter |
Just4pLeisure | 1:d5452e398b76 | 5 | |
Just4pLeisure | 1:d5452e398b76 | 6 | A derivative work based on: |
Just4pLeisure | 1:d5452e398b76 | 7 | //----------------------------------------------------------------------------- |
Just4pLeisure | 1:d5452e398b76 | 8 | // CAN/BDM adapter firmware |
Just4pLeisure | 1:d5452e398b76 | 9 | // (C) Janis Silins, 2010 |
Just4pLeisure | 1:d5452e398b76 | 10 | // $id$ |
Just4pLeisure | 1:d5452e398b76 | 11 | //----------------------------------------------------------------------------- |
Just4pLeisure | 1:d5452e398b76 | 12 | |
Just4pLeisure | 1:d5452e398b76 | 13 | ******************************************************************************** |
Just4pLeisure | 1:d5452e398b76 | 14 | |
Just4pLeisure | 1:d5452e398b76 | 15 | WARNING: Use at your own risk, sadly this software comes with no guarantees. |
Just4pLeisure | 1:d5452e398b76 | 16 | This software is provided 'free' and in good faith, but the author does not |
Just4pLeisure | 1:d5452e398b76 | 17 | accept liability for any damage arising from its use. |
Just4pLeisure | 1:d5452e398b76 | 18 | |
Just4pLeisure | 1:d5452e398b76 | 19 | *******************************************************************************/ |
Just4pLeisure | 1:d5452e398b76 | 20 | |
Just4pLeisure | 1:d5452e398b76 | 21 | #ifndef __BDMCPU32_H__ |
Just4pLeisure | 1:d5452e398b76 | 22 | #define __BDMCPU32_H__ |
Just4pLeisure | 1:d5452e398b76 | 23 | |
Just4pLeisure | 1:d5452e398b76 | 24 | #include "mbed.h" |
Just4pLeisure | 1:d5452e398b76 | 25 | |
Just4pLeisure | 1:d5452e398b76 | 26 | #include "common.h" |
Just4pLeisure | 1:d5452e398b76 | 27 | #include "bdmtrionic.h" |
Just4pLeisure | 1:d5452e398b76 | 28 | //#include "BDM.h" |
Just4pLeisure | 1:d5452e398b76 | 29 | |
Just4pLeisure | 1:d5452e398b76 | 30 | |
Just4pLeisure | 1:d5452e398b76 | 31 | // MCU status macros |
Just4pLeisure | 1:d5452e398b76 | 32 | #ifndef IGNORE_VCC_PIN |
Just4pLeisure | 1:d5452e398b76 | 33 | #define IS_CONNECTED (PIN_PWR) |
Just4pLeisure | 1:d5452e398b76 | 34 | #else |
Just4pLeisure | 1:d5452e398b76 | 35 | #define IS_CONNECTED true |
Just4pLeisure | 1:d5452e398b76 | 36 | #endif // IGNORE_VCC_PIN |
Just4pLeisure | 1:d5452e398b76 | 37 | |
Just4pLeisure | 1:d5452e398b76 | 38 | #define IN_BDM (PIN_FREEZE) |
Just4pLeisure | 1:d5452e398b76 | 39 | #define IS_RUNNING (PIN_RESET && !IN_BDM) |
Just4pLeisure | 1:d5452e398b76 | 40 | |
Just4pLeisure | 1:d5452e398b76 | 41 | // MCU management |
Just4pLeisure | 1:d5452e398b76 | 42 | uint8_t stop_chip(); |
Just4pLeisure | 1:d5452e398b76 | 43 | uint8_t reset_chip(); |
Just4pLeisure | 1:d5452e398b76 | 44 | uint8_t run_chip(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 45 | uint8_t restart_chip(); |
Just4pLeisure | 1:d5452e398b76 | 46 | uint8_t step_chip(); |
Just4pLeisure | 1:d5452e398b76 | 47 | uint8_t bkpt_low(); |
Just4pLeisure | 1:d5452e398b76 | 48 | uint8_t bkpt_high(); |
Just4pLeisure | 1:d5452e398b76 | 49 | uint8_t reset_low(); |
Just4pLeisure | 1:d5452e398b76 | 50 | uint8_t reset_high(); |
Just4pLeisure | 1:d5452e398b76 | 51 | |
Just4pLeisure | 1:d5452e398b76 | 52 | // memory |
Just4pLeisure | 1:d5452e398b76 | 53 | uint8_t memread_byte(uint8_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 54 | uint8_t memread_word(uint16_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 55 | uint8_t memread_long(uint32_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 56 | uint8_t memdump_byte(uint8_t* result); |
Just4pLeisure | 1:d5452e398b76 | 57 | uint8_t memdump_word(uint16_t* result); |
Just4pLeisure | 1:d5452e398b76 | 58 | uint8_t memdump_long(uint32_t* result); |
Just4pLeisure | 1:d5452e398b76 | 59 | uint8_t memwrite_byte(const uint32_t* addr, uint8_t value); |
Just4pLeisure | 1:d5452e398b76 | 60 | uint8_t memwrite_word(const uint32_t* addr, uint16_t value); |
Just4pLeisure | 1:d5452e398b76 | 61 | uint8_t memwrite_long(const uint32_t* addr, const uint32_t* value); |
Just4pLeisure | 1:d5452e398b76 | 62 | uint8_t memfill_byte(uint8_t value); |
Just4pLeisure | 1:d5452e398b76 | 63 | uint8_t memfill_word(uint16_t value); |
Just4pLeisure | 1:d5452e398b76 | 64 | uint8_t memfill_long(const uint32_t* value); |
Just4pLeisure | 1:d5452e398b76 | 65 | |
Just4pLeisure | 1:d5452e398b76 | 66 | // memory split commands |
Just4pLeisure | 1:d5452e398b76 | 67 | // Setup a start of a sequence of BDM operations |
Just4pLeisure | 1:d5452e398b76 | 68 | // read commands |
Just4pLeisure | 1:d5452e398b76 | 69 | uint8_t memread_byte_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 70 | uint8_t memread_word_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 71 | uint8_t memread_long_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 72 | // write commands |
Just4pLeisure | 1:d5452e398b76 | 73 | uint8_t memwrite_byte_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 74 | uint8_t memwrite_word_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 75 | uint8_t memwrite_long_cmd(const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 76 | // follow on commands |
Just4pLeisure | 1:d5452e398b76 | 77 | // dump bytes/words/longs |
Just4pLeisure | 1:d5452e398b76 | 78 | uint8_t memget_word(uint16_t* result); |
Just4pLeisure | 1:d5452e398b76 | 79 | uint8_t memget_long(uint32_t* result); |
Just4pLeisure | 1:d5452e398b76 | 80 | // read and write bytes |
Just4pLeisure | 1:d5452e398b76 | 81 | uint8_t memwrite_write_byte(const uint32_t* addr, const uint8_t value); |
Just4pLeisure | 1:d5452e398b76 | 82 | uint8_t memwrite_read_byte(const uint32_t* addr, const uint8_t value); |
Just4pLeisure | 1:d5452e398b76 | 83 | uint8_t memwrite_nop_byte(const uint32_t* addr, const uint8_t value); |
Just4pLeisure | 1:d5452e398b76 | 84 | uint8_t memread_read_byte(uint8_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 85 | uint8_t memread_write_byte(uint8_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 86 | uint8_t memread_nop_byte(uint8_t* result, const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 87 | // |
Just4pLeisure | 1:d5452e398b76 | 88 | uint8_t memwrite_word_write_word(const uint32_t* addr, const uint16_t value1, const uint16_t value2); |
Just4pLeisure | 1:d5452e398b76 | 89 | uint8_t memwrite_word_read_word(uint16_t* result, const uint32_t* addr, const uint16_t value); |
Just4pLeisure | 1:d5452e398b76 | 90 | |
Just4pLeisure | 1:d5452e398b76 | 91 | |
Just4pLeisure | 1:d5452e398b76 | 92 | // registers |
Just4pLeisure | 1:d5452e398b76 | 93 | uint8_t sysreg_read(uint32_t* result, uint8_t reg); |
Just4pLeisure | 1:d5452e398b76 | 94 | uint8_t sysreg_write(uint8_t reg, const uint32_t* value); |
Just4pLeisure | 1:d5452e398b76 | 95 | uint8_t adreg_read(uint32_t* result, uint8_t reg); |
Just4pLeisure | 1:d5452e398b76 | 96 | uint8_t adreg_write(uint8_t reg, const uint32_t* value); |
Just4pLeisure | 1:d5452e398b76 | 97 | |
Just4pLeisure | 1:d5452e398b76 | 98 | // bdm part commands |
Just4pLeisure | 1:d5452e398b76 | 99 | bool bdm_command (uint16_t cmd); |
Just4pLeisure | 1:d5452e398b76 | 100 | bool bdm_address (const uint32_t* addr); |
Just4pLeisure | 1:d5452e398b76 | 101 | bool bdm_get (uint32_t* result, uint8_t size, uint16_t next_cmd); |
Just4pLeisure | 1:d5452e398b76 | 102 | bool bdm_put (const uint32_t* value, uint8_t size); |
Just4pLeisure | 1:d5452e398b76 | 103 | bool bdm_ready (uint16_t next_cmd); |
Just4pLeisure | 1:d5452e398b76 | 104 | |
Just4pLeisure | 1:d5452e398b76 | 105 | #endif // __BDMCPU32_H__ |
Just4pLeisure | 1:d5452e398b76 | 106 | //----------------------------------------------------------------------------- |
Just4pLeisure | 1:d5452e398b76 | 107 | // EOF |
Just4pLeisure | 1:d5452e398b76 | 108 | //----------------------------------------------------------------------------- |