00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef _JTAG_PP_COMMANDER_
00036 #define _JTAG_PP_COMMANDER_
00037
00038 #include "jtag.h"
00039 #include "jtag_driver.h"
00040 #include "jtag_commander.h"
00041
00042
00043 #define JS_UNKNOWN -1
00044 #define JS_RESET 0
00045 #define JS_IDLE 1
00046 #define JS_SELECT_DR_SCAN 2
00047 #define JS_CAPTURE_DR 3
00048 #define JS_SHIFT_DR 4
00049 #define JS_EXIT1_DR 5
00050 #define JS_PAUSE_DR 6
00051 #define JS_EXIT2_DR 7
00052 #define JS_UPDATE_DR 8
00053 #define JS_SELECT_IR_SCAN 9
00054 #define JS_CAPTURE_IR 10
00055 #define JS_SHIFT_IR 11
00056 #define JS_EXIT1_IR 12
00057 #define JS_PAUSE_IR 13
00058 #define JS_EXIT2_IR 14
00059 #define JS_UPDATE_IR 15
00060
00061
00062 class JTAG_ParallelPort_Commander : public JTAG_Commander, public JTAGControl
00063 {
00064 public:
00065
00066 JTAG_ParallelPort_Commander( JTAG_Driver * driver );
00067 ~JTAG_ParallelPort_Commander( );
00068
00069 bool init( int argc ,
00070 char **argv );
00071
00072 void ireg( unsigned char *data );
00073 void dreg( unsigned char *data , unsigned char length , bool writeOnly );
00074 void jtagReset( void );
00075 void cpuReset( bool state );
00076 void trst( bool state );
00077 void idle( unsigned int nbTCK );
00078 void flushQueue( void );
00079 const char *getName( void ) const;
00080
00081 void jtag_ireg( unsigned long value );
00082 bool jtag_shiftdr( void );
00083 bool jtag_updatedr( void );
00084
00085 unsigned long jtag_dreg( int bit_count ,
00086 unsigned long data );
00087
00088 bool jtag_reset( bool cold );
00089 void jtag_idle( void );
00090 bool cpu_reset( bool state );
00091 void flush();
00092
00093 private:
00094
00095 void advance( bool mode_select );
00096
00098 int state;
00099
00101 int ir_reg_length;
00102
00104 JTAG_Driver *driver;
00105 };
00106
00107 #endif // _JTAG_PP_COMMANDER_