亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usbjtag.c

?? usb_cpld_code.zip usbjtag - Variations on the implementation of a USB JTAG adapter.
?? C
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------// Code that turns a Cypress FX2 USB Controller into an USB JTAG adapter//-----------------------------------------------------------------------------// Copyright (C) 2005,2006 Kolja Waschk, ixo.de//-----------------------------------------------------------------------------// For hardware configuration, please take a look at the I/O definitions just// below and in the TD_Init() code before you actually connect your FX2 to// something. There are some board-specific initializations. Then compile with// the Keil compiler & load the resulting binary into Cypress FX2 using the// EZUSB Control Panel! Please read the README text file that should have// come together with this source code.//-----------------------------------------------------------------------------// This code is part of usbjtag. usbjtag is free software; you can redistribute// it and/or modify it under the terms of the GNU General Public License as// published by the Free Software Foundation; either version 2 of the License,// or (at your option) any later version. usbjtag is distributed in the hope// that it will be useful, but WITHOUT ANY WARRANTY; without even the implied// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.  You should have received a// copy of the GNU General Public License along with this program in the file// COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin// St, Fifth Floor, Boston, MA  02110-1301  USA//-----------------------------------------------------------------------------// This file has been derived from bulksrc.c and vend_Ax.c, both taken// from the /USB/Examples/Fx2/bulksrc/bulksrc.c delivered with CY3681// development kit from Cypress Semiconductor. They both are// Copyright (c) 2000 Cypress Semiconductor. All rights reserved.//-----------------------------------------------------------------------------#pragma NOIV               // Do not generate interrupt vectors#include "fx2.h"#include "fx2regs.h"#include "fx2sdly.h"            // SYNCDELAY macro// These are in shift.a51extern void ShiftOut(BYTE c);extern BYTE ShiftInOut(BYTE c);//-----------------------------------------------------------------------------// If you're using other pins for JTAG, please also change shift.a51!// And make sure the I/O initialization in TD_Init is correct for your setup.sbit TDI = 0xA0+0;sbit TDO = 0xA0+1;sbit TCK = 0xA0+2;sbit TMS = 0xA0+3;#define bmTDIOE bmBIT0#define bmTDOOE bmBIT1#define bmTCKOE bmBIT2#define bmTMSOE bmBIT3//-----------------------------------------------------------------------------// Define USE_MOD256_OUTBUFFER:// Saves about 256 bytes in code size, improves speed a little.// A further optimization could be not to use an extra output buffer at // all, but to write directly into EP1INBUF. Not implemented yet. When // downloading large amounts of data _to_ the target, there is no output// and thus the output buffer isn't used at all and doesn't slow down things.#define USE_MOD256_OUTBUFFER 1//-----------------------------------------------------------------------------// Global datastatic BOOL Running;static BOOL WriteOnly;static BYTE ClockBytes;static WORD Pending;#ifdef USE_MOD256_OUTBUFFER  static BYTE FirstDataInOutBuffer;  static BYTE FirstFreeInOutBuffer;#else  static WORD FirstDataInOutBuffer;  static WORD FirstFreeInOutBuffer;#endif#ifdef USE_MOD256_OUTBUFFER  /* Size of output buffer must be exactly 256 */  #define OUTBUFFER_LEN 0x100  /* Output buffer must begin at some address with lower 8 bits all zero */#else  #define OUTBUFFER_LEN 0x200#endifstatic BYTE xdata OutBuffer[OUTBUFFER_LEN] _at_ 0xE000;extern BOOL GotSUD;             // Received setup data flagextern BOOL Sleep;extern BOOL Rwuen;extern BOOL Selfpwr;BYTE Configuration;             // Current configurationBYTE AlternateSetting;          // Alternate settings//-----------------------------------------------------------------------------// "EEPROM" Content// If you want to simulate the EEPROM attached to the FT245BM in the// other hardware variant of usbjtag, put something meaningful in here//-----------------------------------------------------------------------------#include "eeprom.c"//-----------------------------------------------------------------------------// Task Dispatcher hooks//   The following hooks are called by the task dispatcher.//-----------------------------------------------------------------------------void TD_Init(void)              // Called once at startup{   WORD tmp;   Running = FALSE;   ClockBytes = 0;   Pending = 0;   WriteOnly = TRUE;   FirstDataInOutBuffer = 0;   FirstFreeInOutBuffer = 0;   /* The following code depends on your actual circuit design.      Make required changes _before_ you try the code! */   // set the CPU clock to 48MHz, enable clock output to FPGA   CPUCS = bmCLKOE | bmCLKSPD1;   // Use internal 48 MHz, enable output, use "Port" mode for all pins   IFCONFIG = bmIFCLKSRC | bm3048MHZ | bmIFCLKOE;   // If you're using other pins for JTAG, please also change shift.a51!   // activate JTAG outputs on Port C   OEC = bmTDIOE | bmTCKOE | bmTMSOE;   // power on the FPGA and all other VCCs, de-assert RESETN   IOE = 0x1F;   OEE = 0x1F;   EZUSB_Delay(500); // wait for supply to come up    // The remainder of the code however should be left unchanged...   // Make Timer2 reload at 100 Hz to trigger Keepalive packets   tmp = 65536 - ( 48000000 / 12 / 100 );   RCAP2H = tmp >> 8;   RCAP2L = tmp & 0xFF;   CKCON = 0; // Default Clock   T2CON = 0x04; // Auto-reload mode using internal clock, no baud clock.   // Enable Autopointer   EXTACC = 1;  // Enable   APTR1FZ = 1; // Don't freeze   APTR2FZ = 1; // Don't freeze   // we are just using the default values, yes this is not necessary...   EP1OUTCFG = 0xA0;   EP1INCFG = 0xA0;   SYNCDELAY;                    // see TRM section 15.14   EP2CFG = 0xA2;   SYNCDELAY;                    //    EP4CFG = 0xA0;   SYNCDELAY;                    //    EP6CFG = 0xE2;   SYNCDELAY;                    //    EP8CFG = 0xE0;   // out endpoints do not come up armed      // since the defaults are double buffered we must write dummy byte counts twice   SYNCDELAY;                    //    EP2BCL = 0x80;                // arm EP2OUT by writing byte count w/skip.   SYNCDELAY;                    //    EP4BCL = 0x80;       SYNCDELAY;                    //    EP2BCL = 0x80;                // arm EP4OUT by writing byte count w/skip.   SYNCDELAY;                    //    EP4BCL = 0x80;    }void OutputByte(BYTE d){#ifdef USE_MOD256_OUTBUFFER   OutBuffer[FirstFreeInOutBuffer] = d;   FirstFreeInOutBuffer = ( FirstFreeInOutBuffer + 1 ) & 0xFF;#else   OutBuffer[FirstFreeInOutBuffer++] = d;   if(FirstFreeInOutBuffer >= OUTBUFFER_LEN) FirstFreeInOutBuffer = 0;#endif   Pending++;}//-----------------------------------------------------------------------------// TD_Poll does most of the work. It now happens to behave just like the // combination of FT245BM and EPM7064 CPLD as mentioned in the README.// That CPLD knows two major modes: Bit banging mode and Byte shift mode// It starts in Bit banging mode.  While bytes are received from the host on// EP2OUT, each byte B of them is processed as follows://// Bit banging mode:// //   1. Remember bit 6 (0x40) in B as the "Read bit".//   2. If bit 7 (0x40) is set, switch to Byte shift mode for the coming//      X bytes ( X := B & 0x3F ), and don't do anything else now.//    3. Otherwise, set the JTAG signals as follows://        TCK high if bit 0 was set (0x01), otherwise low//        TMS high if bit 1 was set (0x02), otherwise low//        TDI high if bit 4 was set (0x10), otherwise low//    4. If "Read bit" (0x40) was set, record the state of//        TDO pin and put it as a byte (2|TDO) in the output //        FIFO _to_ the host.//// Byte shift mode:////   1. Load shift register with byte from host//   2. Do 8 times (i.e. for each bit of the byte; implemented in shift.a51)//      2a) Carry bit := TDO//      2b) Rotate shift register through carry bit//      2c) TDI := Carry bit//      2d) Raise TCK, then lower TCK.//   3. If "Read bit" was set when switching into byte shift mode,//      record the shift register content and put it into the FIFO//      _to_ the host.//// Some more (minor) things to consider to emulate the FT245BM:////   a) The FT245BM seems to transmit just packets of no more than 64 bytes//      (which perfectly matches the USB spec). Each packet starts with//      two non-data bytes (I use 0x31,0x60 here). A USB sniffer on Windows//      might show a number of packets to you as if it was a large transfer//      because of the way that Windows understands it: it _is_ a large//      transfer until terminated with an USB packet smaller than 64 byte.////   b) The Windows driver expects to get some data packets (with at least//      the two leading bytes 0x31,0x60) immediately after "resetting" the//      FT chip and then in regular intervals. Otherwise a blue screen may//      appear... In the code below, I make sure that every 10ms there is//      some packet.////   c) Vendor specific commands to configure the FT245 are mostly ignored//      in my code. Only those for reading the EEPROM are processed. See//      DR_GetStatus and DR_VendorCmd below for my implementation.////   All other TD_ and DR_ functions remain as provided with CY3681.////-----------------------------------------------------------------------------void TD_Poll(void)              // Called repeatedly while the device is idle{   if(!Running) return;      if(!(EP1INCS & bmEPBUSY))   {      if(Pending > 0)      {         BYTE o, n;         AUTOPTRH2 = MSB( EP1INBUF );         AUTOPTRL2 = LSB( EP1INBUF );                XAUTODAT2 = 0x31;         XAUTODAT2 = 0x60;                if(Pending > 0x3E) { n = 0x3E; Pending -= n; }                      else { n = Pending; Pending = 0; };                o = n;#ifdef USE_MOD256_OUTBUFFER         AUTOPTR1H = MSB( OutBuffer );         AUTOPTR1L = FirstDataInOutBuffer;         while(n--)         {            XAUTODAT2 = XAUTODAT1;            AUTOPTR1H = MSB( OutBuffer ); // Stay within 256-Byte-Buffer         };         FirstDataInOutBuffer = AUTOPTR1L;#else         AUTOPTR1H = MSB( &(OutBuffer[FirstDataInOutBuffer]) );         AUTOPTR1L = LSB( &(OutBuffer[FirstDataInOutBuffer]) );         while(n--)         {            XAUTODAT2 = XAUTODAT1;            if(++FirstDataInOutBuffer >= OUTBUFFER_LEN)            {               FirstDataInOutBuffer = 0;               AUTOPTR1H = MSB( OutBuffer );               AUTOPTR1L = LSB( OutBuffer );            };         };#endif         SYNCDELAY;         EP1INBC = 2 + o;         TF2 = 1; // Make sure there will be a short transfer soon      }      else if(TF2)      {         EP1INBUF[0] = 0x31;         EP1INBUF[1] = 0x60;         SYNCDELAY;         EP1INBC = 2;         TF2 = 0;      };   };   if(!(EP2468STAT & bmEP2EMPTY) && (Pending < OUTBUFFER_LEN-0x3F))   {      BYTE i, n = EP2BCL;      AUTOPTR1H = MSB( EP2FIFOBUF );      AUTOPTR1L = LSB( EP2FIFOBUF );      for(i=0;i<n;)      {         if(ClockBytes > 0)         {            BYTE m;            m = n-i;            if(ClockBytes < m) m = ClockBytes;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人一区二区精品非洲| 日本成人在线电影网| 国产调教视频一区| 欧美日韩国产成人在线免费| 色老汉一区二区三区| 92国产精品观看| 91天堂素人约啪| 91成人看片片| 欧美三电影在线| 欧美日韩精品免费| 7878成人国产在线观看| 日韩一区二区电影网| 日韩视频一区在线观看| 久久免费电影网| 国产精品天干天干在线综合| 国产精品狼人久久影院观看方式| 成人欧美一区二区三区小说| 一区二区三区中文免费| 午夜视频久久久久久| 久久精品国产亚洲5555| 国产99久久久精品| 91最新地址在线播放| 欧美美女喷水视频| 久久嫩草精品久久久久| 亚洲乱码精品一二三四区日韩在线 | 亚洲高清一区二区三区| 奇米精品一区二区三区在线观看一| 国产一区二区三区免费| 色综合天天视频在线观看| 欧美精品乱码久久久久久按摩| 久久午夜老司机| 亚洲欧美偷拍另类a∨色屁股| 亚洲成a人v欧美综合天堂下载| 美女在线观看视频一区二区| 成人高清视频在线观看| 欧美日韩国产免费| 国产精品美女久久久久久| 五月天精品一区二区三区| 成人一级视频在线观看| 91精品国产一区二区三区蜜臀| 久久综合久久综合久久综合| 亚洲一二三专区| 国产91在线观看| 日韩一级片网址| 亚洲影视资源网| 国产aⅴ精品一区二区三区色成熟| 欧美性视频一区二区三区| 久久久精品影视| 日韩精品乱码av一区二区| 91亚洲精品久久久蜜桃网站| 精品国产一区二区亚洲人成毛片| 一区二区久久久久| av一区二区三区黑人| www精品美女久久久tv| 亚洲a一区二区| 91久久香蕉国产日韩欧美9色| 国产亚洲自拍一区| 久久www免费人成看片高清| 欧美色精品天天在线观看视频| 欧美激情中文字幕| 国产在线播放一区| 日韩免费福利电影在线观看| 五月天亚洲婷婷| 91福利国产精品| 亚洲人成网站精品片在线观看| 粉嫩蜜臀av国产精品网站| 久久青草国产手机看片福利盒子 | 在线观看一区二区精品视频| 欧美国产97人人爽人人喊| 国内精品自线一区二区三区视频| 日韩一区二区三| 蜜臀va亚洲va欧美va天堂 | 国产三级精品在线| 国产一区二区美女| 久久久午夜精品理论片中文字幕| 另类小说欧美激情| 日韩欧美综合在线| 蜜臀av性久久久久av蜜臀妖精| 在线不卡免费欧美| 日韩一区精品字幕| 欧美一卡二卡在线| 精品一区二区三区免费观看| 欧美电影免费观看完整版| 国内精品视频666| 中文字幕欧美国产| av电影一区二区| 一区二区欧美视频| 欧美一二三四区在线| 精品综合久久久久久8888| 久久免费看少妇高潮| 波多野结衣中文字幕一区| 亚洲免费资源在线播放| 精品婷婷伊人一区三区三| 日韩成人伦理电影在线观看| 欧美不卡一二三| 成人精品视频一区二区三区| 亚洲欧美激情在线| 日韩一区二区在线免费观看| 国产精品资源在线看| 亚洲人被黑人高潮完整版| 91精品国产综合久久久蜜臀粉嫩| 国产综合久久久久久鬼色| 国产精品嫩草影院av蜜臀| 欧美视频一区二区三区在线观看 | 免费高清不卡av| 欧美极品xxx| 欧美视频一区二| 狠狠网亚洲精品| 一区二区三区在线视频免费| 日韩欧美中文一区二区| av中文字幕不卡| 日韩国产欧美视频| 日本一二三四高清不卡| 欧美理论在线播放| 成人涩涩免费视频| 蜜桃久久久久久| 中文字幕国产一区| 日韩一区二区精品葵司在线| 91色.com| 大美女一区二区三区| 丝瓜av网站精品一区二区| 国产精品欧美一区二区三区| 欧美日本在线播放| 99久久国产综合精品女不卡| 免费成人你懂的| 亚洲综合区在线| 国产精品午夜免费| 久久蜜臀精品av| 91精品久久久久久久99蜜桃| 日本久久精品电影| 成人av电影观看| 国产精品一区久久久久| 日韩精品乱码av一区二区| 亚洲自拍偷拍网站| 亚洲天堂av一区| 国产精品国产精品国产专区不蜜 | 91麻豆精品秘密| 国产不卡免费视频| 久久精品国产精品亚洲精品 | 中文字幕一区二区三区蜜月| 精品国产不卡一区二区三区| 51午夜精品国产| 欧美视频自拍偷拍| 欧美伊人精品成人久久综合97| 91在线观看成人| 97久久超碰国产精品电影| 成人综合激情网| 国产成人综合自拍| 国产成人免费xxxxxxxx| 国内精品第一页| 国产露脸91国语对白| 国内精品不卡在线| 久久超碰97中文字幕| 免费不卡在线视频| 国产一区999| 国产成人一级电影| 白白色亚洲国产精品| 91视频在线看| 欧美日韩精品久久久| 欧美久久久久久久久中文字幕| 欧美日韩国产综合视频在线观看| 欧美日韩五月天| 日韩欧美一级精品久久| 精品国产91乱码一区二区三区| 精品噜噜噜噜久久久久久久久试看| 精品国精品国产| 久久久国际精品| 国产精品看片你懂得| 亚洲综合一区二区精品导航| 视频在线观看一区二区三区| 麻豆国产一区二区| 国产乱码精品1区2区3区| 成人aa视频在线观看| 欧美最新大片在线看| 欧美一级日韩免费不卡| 日韩欧美在线不卡| 国产欧美日韩不卡免费| 伊人开心综合网| 久草精品在线观看| 99久久婷婷国产精品综合| 欧美精品第一页| 久久久99久久精品欧美| 亚洲女子a中天字幕| 喷白浆一区二区| 99久久久精品免费观看国产蜜| 欧美日韩小视频| 国产婷婷色一区二区三区| 亚洲成人免费在线| 国产夫妻精品视频| 欧美日韩精品三区| 中文字幕巨乱亚洲| 日本不卡在线视频| a级高清视频欧美日韩| 欧美一级日韩免费不卡| 综合色天天鬼久久鬼色| 蜜臀久久99精品久久久久宅男| 不卡视频一二三| 欧美精品一区二区三区高清aⅴ| 亚洲图片激情小说| 国产精品影音先锋|