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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usbjtag.c

?? altera的usb下載線的制作資料
?? 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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品中文欧美| 亚洲另类在线制服丝袜| 老司机精品视频在线| 欧美一二区视频| 另类小说视频一区二区| 久久久九九九九| 粉嫩绯色av一区二区在线观看| 国产精品久久久久影院| 91香蕉视频mp4| 亚洲高清视频的网址| 日韩一区二区免费在线电影| 激情综合五月婷婷| 中文字幕精品一区二区精品绿巨人 | 在线观看视频一区| 首页综合国产亚洲丝袜| 精品卡一卡二卡三卡四在线| 国产成人免费在线观看| 亚洲欧美电影院| 欧美一级日韩不卡播放免费| 国产风韵犹存在线视精品| 日韩理论在线观看| 91麻豆精品国产91久久久| 国产最新精品免费| 亚洲欧美日韩国产综合在线| 777亚洲妇女| 高清在线不卡av| 爽爽淫人综合网网站| 国产欧美在线观看一区| 在线观看日韩一区| 国内久久精品视频| 一级精品视频在线观看宜春院 | 成人app网站| 亚洲国产综合人成综合网站| 久久久高清一区二区三区| 欧洲一区二区av| 国产精品456露脸| 亚洲国产精品久久人人爱| 精品av综合导航| 在线观看区一区二| 国产精品12区| 视频一区二区中文字幕| 国产精品久久久久7777按摩 | 精品国产三级电影在线观看| jiyouzz国产精品久久| 日本免费在线视频不卡一不卡二| 中文字幕色av一区二区三区| 日韩三级.com| 欧美色男人天堂| 欧洲色大大久久| 成人高清在线视频| 国内外成人在线| 五月激情丁香一区二区三区| 亚洲欧洲国产日韩| 国产日韩欧美精品综合| 日韩午夜av一区| 欧美亚洲一区二区在线观看| 成人丝袜视频网| 国产资源精品在线观看| 日韩av网站在线观看| 亚洲一区二区四区蜜桃| ...xxx性欧美| 国产精品色在线| 久久精品视频免费| 精品久久人人做人人爰| 欧美日韩一区二区三区四区五区| 91在线你懂得| 成人动漫在线一区| 高清国产午夜精品久久久久久| 久久成人久久爱| 蜜桃精品在线观看| 奇米888四色在线精品| 午夜激情一区二区三区| 亚洲大型综合色站| 亚洲国产精品久久久久秋霞影院 | 一区二区三区四区在线免费观看| 欧美国产国产综合| 中文天堂在线一区| 欧美激情一区二区三区四区| 国产视频在线观看一区二区三区| 精品少妇一区二区三区在线视频| 日韩欧美一区在线| 精品免费视频.| 久久久久久免费网| 日本一区二区在线不卡| 国产精品网站在线播放| 国产精品久久久久毛片软件| 日韩理论片网站| 亚洲免费视频中文字幕| 亚洲国产视频直播| 一本一本大道香蕉久在线精品| a亚洲天堂av| 99re热这里只有精品视频| 99久久国产免费看| 色94色欧美sute亚洲线路一久| 色婷婷激情久久| 欧美日韩一区三区四区| 欧美一区二区三区精品| 精品国产乱码久久久久久久久| 久久久久久97三级| 国产精品三级视频| 亚洲精品久久7777| 日韩—二三区免费观看av| 蜜臀精品一区二区三区在线观看| 国精品**一区二区三区在线蜜桃| 成熟亚洲日本毛茸茸凸凹| 色一区在线观看| 欧美精品久久99久久在免费线| 欧美精品一区二区在线播放| 国产精品蜜臀av| 亚洲成人av电影| 国产麻豆精品一区二区| 91小视频在线免费看| 69p69国产精品| 亚洲国产成人私人影院tom| 一区二区三区在线免费| 麻豆精品久久精品色综合| 高清不卡一区二区| 欧美日韩午夜精品| 久久久久久久久久久久久久久99| 亚洲欧美激情视频在线观看一区二区三区 | 91久久精品网| 日韩欧美一二区| 亚洲欧美日韩国产中文在线| 麻豆成人久久精品二区三区小说| 99久久99久久精品国产片果冻 | 久久国产精品色婷婷| 91原创在线视频| 亚洲精品在线电影| 亚洲最新视频在线观看| 国产精品77777竹菊影视小说| 91久久精品国产91性色tv| 精品国产1区二区| 亚洲一区二区影院| 成人免费高清在线观看| 欧美一级日韩一级| 一区二区三区在线不卡| 国产精品69久久久久水密桃| 欧美日韩视频在线一区二区| 国产日韩精品一区二区浪潮av| 婷婷亚洲久悠悠色悠在线播放| 成人午夜视频在线观看| 欧美一区二区视频观看视频| 亚洲色图都市小说| 国产成人精品三级| 精品国产区一区| 天堂在线一区二区| 欧洲一区二区三区免费视频| 国产精品全国免费观看高清| 国产综合色视频| 欧美日韩国产中文| 一区二区三区精品在线观看| 成人高清免费观看| 久久久久久久综合色一本| 日日嗨av一区二区三区四区| 欧美在线短视频| 亚洲三级理论片| 成人av在线播放网址| 国产亚洲婷婷免费| 激情都市一区二区| 日韩亚洲欧美在线| 免费在线欧美视频| 欧美一区永久视频免费观看| 丝袜美腿亚洲色图| 欧美日韩国产乱码电影| 午夜伦欧美伦电影理论片| 在线一区二区三区四区| 亚洲激情综合网| 色哟哟精品一区| 一区二区三区日韩在线观看| 色综合视频在线观看| ㊣最新国产の精品bt伙计久久| 播五月开心婷婷综合| 国产精品你懂的在线欣赏| 成人福利视频网站| 最新不卡av在线| 91福利资源站| 亚洲国产精品久久久久秋霞影院| 欧洲在线/亚洲| 午夜精品爽啪视频| 日韩三级电影网址| 国产精品影视在线| 中文字幕一区二区三区蜜月 | 一区二区三区四区中文字幕| 欧美中文字幕一二三区视频| 午夜精品久久久久久久99樱桃| 在线观看91av| 国产在线看一区| 国产精品伦一区二区三级视频| 91色九色蝌蚪| 日韩激情中文字幕| 2023国产一二三区日本精品2022| 大美女一区二区三区| 一区二区三区视频在线观看| 欧美一区日韩一区| 国产黄色精品视频| 亚洲女同ⅹxx女同tv| 欧美一区二区三区性视频| 国产精品白丝av| 亚洲一区二区三区四区的| 日韩一级大片在线|