00001 #ifndef _DEV_JTAG_TAP_H_ 00002 #define _DEV_JTAG_TAP_H_ 00003 00004 /* 00005 * Copyright 2009 by egnite GmbH 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * 1. Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * 2. Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in the 00015 * documentation and/or other materials provided with the distribution. 00016 * 3. Neither the name of the copyright holders nor the names of 00017 * contributors may be used to endorse or promote products derived 00018 * from this software without specific prior written permission. 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00021 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00022 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00023 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00024 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00025 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00026 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 00027 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 00028 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00029 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 00030 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00031 * SUCH DAMAGE. 00032 * 00033 * For additional information see http://www.ethernut.de/ 00034 */ 00035 00045 #include <dev/jtag_cable.h> 00046 00047 #define JTAG_TEST_LOGIC_RESET 0 00048 #define JTAG_RUN_TEST_IDLE 1 00049 #define JTAG_SELECT_DR_SCAN 2 00050 #define JTAG_CAPTURE_DR 3 00051 #define JTAG_SHIFT_DR 4 00052 #define JTAG_EXIT1_DR 5 00053 #define JTAG_PAUSE_DR 6 00054 #define JTAG_EXIT2_DR 7 00055 #define JTAG_UPDATE_DR 8 00056 #define JTAG_SELECT_IR_SCAN 9 00057 #define JTAG_CAPTURE_IR 10 00058 #define JTAG_SHIFT_IR 11 00059 #define JTAG_EXIT1_IR 12 00060 #define JTAG_PAUSE_IR 13 00061 #define JTAG_EXIT2_IR 14 00062 #define JTAG_UPDATE_IR 15 00063 #define JTAG_UNKNOWN_STATE 16 00064 00065 typedef struct { 00067 uint_fast8_t tap_state; 00069 uint_fast8_t tap_irsize; 00071 JTAG_CABLE *tap_cable; 00073 void *tap_cib; 00074 } JTAG_TAP; 00075 00076 extern JTAG_TAP *TapOpen(JTAG_CABLE *cable); 00077 extern void TapClose(JTAG_TAP *tap); 00078 extern void TapSetIrSize(JTAG_TAP *tap, uint_fast8_t len); 00079 00080 extern void TapStateWalk(JTAG_TAP *tap, int state); 00081 extern void TapData(JTAG_TAP *tap, uint8_t *rbuf, CONST uint8_t *wbuf, uint32_t len, uint_fast8_t last); 00082 extern void TapInstruction(JTAG_TAP *tap, uint32_t code, uint_fast8_t last); 00083 00084 #endif