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

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

?? gdb2.c

?? 嵌入式開發板連接程序源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <stdarg.h>/* Libraries for JTAG proxy server.  */#include <sys/stat.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/select.h>#include <sys/poll.h>#include <fcntl.h>#include <netdb.h>#include <netinet/tcp.h>#include <inttypes.h>#include <errno.h>#include "gdb.h" /* partially copied from gdb/config/or1k */#include "jp.h"  /* just for debug() */#include "jp2.h"/* connection to jp2 routines */int gdb_chain = -1;int gdb_read_reg(unsigned long adr, unsigned long *data) {  debug("rr %d\n", gdb_chain);  switch (gdb_chain) {    case SC_RISC_DEBUG: return dbg_cpu0_read(adr, data) ? ERR_CRC : ERR_NONE;    case SC_REGISTER:   return dbg_cpu0_read_ctrl(adr, (unsigned char*)data) ? ERR_CRC : ERR_NONE;    case SC_WISHBONE:   return dbg_wb_read32(adr, data) ? ERR_CRC : ERR_NONE;    case SC_TRACE:      *data = 0; return 0;    default:            return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_write_reg(unsigned long adr, unsigned long data) {  debug("wr %d\n", gdb_chain);  switch (gdb_chain) { /* remap registers, to be compatible with jp1 */    case SC_RISC_DEBUG: if (adr == JTAG_RISCOP) adr = 0x00;                        return dbg_cpu0_write(adr, data) ? ERR_CRC : ERR_NONE;    case SC_REGISTER:   return dbg_cpu0_write_ctrl(adr, data) ? ERR_CRC : ERR_NONE;    case SC_WISHBONE:   return dbg_wb_write32(adr, data) ? ERR_CRC : ERR_NONE;    case SC_TRACE:      return 0;    default:            return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_read_block(unsigned long adr, unsigned long *data, int len) {  debug("rb %d\n", gdb_chain);  switch (gdb_chain) {    case SC_WISHBONE:   return dbg_wb_read_block32(adr, data, len) ? ERR_CRC : ERR_NONE;    default:            return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_write_block(unsigned long adr, unsigned long *data, int len) {  debug("wb %d\n", gdb_chain);  switch (gdb_chain) {    case SC_WISHBONE:   return dbg_wb_write_block32(adr, data, len) ? ERR_CRC : ERR_NONE;    default:            return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_set_chain(int chain) {  debug("set_chain %d\n", chain);  switch (chain) {    case SC_RISC_DEBUG:    case SC_REGISTER:    case SC_TRACE:          case SC_WISHBONE:   gdb_chain = chain;                        return ERR_NONE;    default:            return JTAG_PROXY_INVALID_CHAIN;  }}/************************   JTAG Server Routines ************************/unsigned int serverIP = 0;unsigned int serverPort = 0;unsigned int server_fd = 0;unsigned int gdb_fd = 0;static int gdb_read(void*, int);static int gdb_write(void*, int);static void ProtocolClean(int, int32_t);static int tcp_level = 0;/* Added by CZ 24/05/01 */int GetServerSocket(const char* name, const char* proto, int port) {  struct servent *service;  struct protoent *protocol;  struct sockaddr_in sa;  struct hostent *hp;    int sockfd;  char myname[256];  int flags;  char sTemp[256];  /* First, get the protocol number of TCP */  if (!(protocol = getprotobyname(proto))) {    sprintf(sTemp, "Unable to load protocol \"%s\"", proto);    perror(sTemp);    return 0;  }  tcp_level = protocol->p_proto; /* Save for later */  /* If we weren't passed a non standard port, get the port     from the services directory. */  if (!port && (service = getservbyname(name, protocol->p_name)))    port = ntohs(service->s_port);   /* Create the socket using the TCP protocol */  if ((sockfd = socket(PF_INET, SOCK_STREAM, protocol->p_proto)) < 0) {    perror("Unable to create socket");    return 0;  }   flags = 1;  if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&flags, sizeof(int)) < 0) {    sprintf(sTemp, "Can not set SO_REUSEADDR option on socket %d", sockfd);    perror(sTemp);    close(sockfd);    return 0;  }  /* The server should also be non blocking. Get the current flags. */  if((flags = fcntl(sockfd, F_GETFL, 0)) < 0) {    sprintf(sTemp, "Unable to get flags for socket %d", sockfd);    perror(sTemp);    close(sockfd);    return 0;  }  /* Set the nonblocking flag */  if(fcntl(sockfd, F_SETFL, flags | O_NONBLOCK) < 0) {    sprintf(sTemp, "Unable to set flags for socket %d to value 0x%08x",                     sockfd, flags | O_NONBLOCK);    perror(sTemp);    close(sockfd);    return 0;  }  /* Find out what our address is */  memset(&sa, 0, sizeof(struct sockaddr_in));  gethostname(myname, sizeof(myname));  if(!(hp = gethostbyname(myname))) {    perror("Unable to read hostname");    close(sockfd);    return 0;  }   /* Bind our socket to the appropriate address */  sa.sin_family = hp->h_addrtype;  sa.sin_port = htons(port);  if(bind(sockfd, (struct sockaddr*)&sa, sizeof(struct sockaddr_in)) < 0) {    sprintf(sTemp, "Unable to bind socket %d to port %d", sockfd, port);    perror(sTemp);    close(sockfd);    return 0;  }  serverIP = sa.sin_addr.s_addr;  flags = sizeof(struct sockaddr_in);  if(getsockname(sockfd, (struct sockaddr*)&sa, &flags) < 0) {    sprintf(sTemp, "Unable to get socket information for socket %d", sockfd);    perror(sTemp);    close(sockfd);    return 0;  }  serverPort = ntohs(sa.sin_port);  /* Set the backlog to 1 connections */  if(listen(sockfd, 1) < 0) {    sprintf(sTemp, "Unable to set backlog on socket %d to %d", sockfd, 1);    perror(sTemp);    close(sockfd);    return 0;  }  return sockfd;}void HandleServerSocket(Boolean block) {  struct pollfd fds[2];  int n;  rebuild:  n = 0;  if(!server_fd && !gdb_fd) return;  if(server_fd) {    fds[n].fd = server_fd;    fds[n].events = POLLIN;    fds[n++].revents = 0;  }  if(gdb_fd) {    fds[n].fd = gdb_fd;    fds[n].events = POLLIN;    fds[n++].revents = 0;  }  while(1) {  switch(poll(fds, n, -1)) {    case 0:    case -1:      if(errno == EINTR) continue;      perror("poll");      server_fd = 0;      return;    default:      /* Make sure to handle the gdb port first! */      if (gdb_fd && (fds[0].revents && !server_fd || fds[1].revents && server_fd)) {        int revents = server_fd ? fds[1].revents : fds[0].revents;        if (revents & POLLIN) GDBRequest();        else {/* Error Occurred */          fprintf(stderr, "Received flags 0x%08x on gdb socket. Shutting down.\n", revents);          close(gdb_fd);          gdb_fd = 0;        }      }      if(fds[0].revents && server_fd) {        if(fds[0].revents & POLLIN) {          JTAGRequest();          goto rebuild;        } else { /* Error Occurred */            fprintf(stderr, "Received flags 0x%08x on server. Shutting down.\n", fds[0].revents);            close(server_fd);            server_fd = 0;            serverPort = 0;            serverIP = 0;            return;          }        }      break;    } /* End of switch statement */  } /* End of while statement */}void JTAGRequest() {  struct sockaddr_in sa;  struct sockaddr* addr = (struct sockaddr*)&sa;  int n = sizeof(struct sockaddr_in);  int fd = accept(server_fd, addr, &n);  int on_off = 0; /* Turn off Nagel's algorithm on the socket */  int flags;  char sTemp[256];  if(fd < 0) {    /* This is valid, because a connection could have started,        and then terminated due to a protocol error or user       initiation before the accept could take place. */    if(errno != EWOULDBLOCK && errno != EAGAIN) {      perror("accept");      close(server_fd);      server_fd = 0;      serverPort = 0;      serverIP = 0;    }    return;  }  if(gdb_fd) {    close(fd);    return;  }  if((flags = fcntl(fd, F_GETFL, 0)) < 0) {    sprintf(sTemp, "Unable to get flags for gdb socket %d", fd);    perror(sTemp);    close(fd);    return;  }    if(fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) {    sprintf(sTemp, "Unable to set flags for gdb socket %d to value 0x%08x",       fd, flags | O_NONBLOCK);    perror(sTemp);    close(fd);    return;  }  if(setsockopt(fd, tcp_level, TCP_NODELAY, &on_off, sizeof(int)) < 0) {    sprintf(sTemp, "Unable to disable Nagel's algorithm for socket %d.\nsetsockopt", fd);    perror(sTemp);    close(fd);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一区二区三区四区| 中文字幕中文字幕一区| 成人中文字幕合集| 丝瓜av网站精品一区二区| 欧美国产1区2区| 日韩欧美不卡在线观看视频| 欧美这里有精品| 国产呦精品一区二区三区网站| 亚洲一区二区在线视频| 中文字幕av资源一区| 精品国产乱码久久久久久夜甘婷婷 | 大美女一区二区三区| 日产欧产美韩系列久久99| 亚洲激情欧美激情| 国产精品传媒入口麻豆| 精品久久久久久最新网址| 欧美私人免费视频| 成人h动漫精品一区二区| 久久激五月天综合精品| 亚洲va欧美va国产va天堂影院| 亚洲日本在线看| 欧美高清在线视频| 国产视频在线观看一区二区三区 | 亚洲欧美电影院| 国产欧美精品一区| 久久天堂av综合合色蜜桃网| 欧美一级欧美三级| 欧美精品三级在线观看| 欧美日韩国产高清一区二区 | 欧美理论在线播放| 在线观看网站黄不卡| 91麻豆精品视频| 91在线小视频| 成人av在线电影| bt7086福利一区国产| av亚洲精华国产精华| 94-欧美-setu| 欧美在线高清视频| 欧美精品18+| 日韩一区国产二区欧美三区| 日韩视频免费直播| 精品第一国产综合精品aⅴ| 欧美mv日韩mv| 国产色婷婷亚洲99精品小说| 国产精品嫩草99a| 国产精品动漫网站| 亚洲人成亚洲人成在线观看图片| 亚洲三级久久久| 亚洲一区二区高清| 午夜电影一区二区三区| 美女爽到高潮91| 韩国三级在线一区| 国产在线视频一区二区三区| 国产91高潮流白浆在线麻豆| 99视频在线精品| 欧美亚洲一区三区| 日韩欧美三级在线| 国产亚洲一二三区| 亚洲美女屁股眼交| 偷拍与自拍一区| 国产一区二区免费视频| 不卡一区二区在线| 日本高清不卡一区| 91精品在线一区二区| 久久久777精品电影网影网 | 久久久精品影视| 亚洲视频资源在线| 五月婷婷激情综合网| 国产精品99久久久久久久女警| 91麻豆自制传媒国产之光| 欧美日本精品一区二区三区| 亚洲精品一区二区在线观看| 亚洲人123区| 美女爽到高潮91| 99久精品国产| 日韩欧美中文一区二区| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲精品视频免费看| 日韩高清不卡在线| 福利91精品一区二区三区| 欧美主播一区二区三区| 久久久一区二区三区| 亚洲激情av在线| 国产麻豆精品视频| 欧美三级视频在线观看| 久久综合久久综合亚洲| 伊人婷婷欧美激情| 激情都市一区二区| 欧美三级中文字| 中文字幕高清不卡| 婷婷开心久久网| av成人老司机| 久久色在线视频| 亚洲第一福利一区| 成人精品国产免费网站| 欧美成人国产一区二区| 一区二区三区丝袜| 国产成人综合自拍| 欧美一卡2卡三卡4卡5免费| 国产精品久久久久久久久果冻传媒 | 一区二区三区小说| 极品少妇一区二区| 欧美日韩精品二区第二页| 国产精品免费视频网站| 裸体健美xxxx欧美裸体表演| 欧美色大人视频| 综合在线观看色| 国产成人精品一区二| 日韩一区二区精品葵司在线| 亚洲成人1区2区| 色综合天天天天做夜夜夜夜做| 国产女主播在线一区二区| 奇米影视一区二区三区小说| 在线免费观看成人短视频| 国产精品久久久久9999吃药| 国产精品中文字幕日韩精品 | 中文字幕中文字幕在线一区| 国产成人亚洲综合a∨婷婷| 精品日本一线二线三线不卡| 日韩精彩视频在线观看| 日本高清不卡一区| 亚洲欧美色综合| 97久久超碰国产精品| 国产精品久久毛片| 粉嫩aⅴ一区二区三区四区五区| 久久久久久亚洲综合| 精品一区二区三区久久| 日韩一区二区电影网| 免费视频一区二区| 日韩欧美专区在线| 久久激五月天综合精品| 精品久久久久久亚洲综合网| 蜜臀av一区二区三区| 91精品国产综合久久婷婷香蕉| 午夜日韩在线电影| 欧美日本国产视频| 午夜精品在线看| 欧美日韩国产经典色站一区二区三区| 午夜精品视频一区| 欧美日韩国产不卡| 欧美a级一区二区| 日韩精品一区二区三区视频在线观看| 亚洲成人免费av| 日韩视频123| 国产一区二区三区免费| 久久精品一区蜜桃臀影院| 国产盗摄一区二区| 专区另类欧美日韩| 在线区一区二视频| 日韩va亚洲va欧美va久久| 欧美成人一区二区三区在线观看| 激情伊人五月天久久综合| 久久精品夜色噜噜亚洲a∨| 成人在线视频首页| 中文字幕日韩欧美一区二区三区| 色8久久人人97超碰香蕉987| 午夜精品久久久久久久| 欧美成人女星排名| 国产精品乡下勾搭老头1| 国产精品美女久久久久aⅴ| 91网址在线看| 日韩在线一区二区| 国产午夜亚洲精品不卡| 成人av在线一区二区三区| 一区二区久久久久| 日韩欧美成人午夜| 成人ar影院免费观看视频| 亚洲一区二区三区美女| 欧美成人猛片aaaaaaa| 波多野结衣中文一区| 亚洲国产三级在线| 久久伊人蜜桃av一区二区| 91视频观看视频| 日本不卡一区二区| 国产欧美日韩三级| 欧美视频中文一区二区三区在线观看| 精品一区二区免费视频| 亚洲欧洲日产国码二区| 欧美日本韩国一区二区三区视频| 国产成人精品影院| 亚洲成人久久影院| 国产亚洲精品精华液| 欧美日韩精品电影| 成人黄色一级视频| 日本亚洲一区二区| 中文字幕一区在线| 日韩精品一区二区三区四区 | 国产很黄免费观看久久| 夜夜爽夜夜爽精品视频| 欧美精品一区二区三| 在线国产电影不卡| 懂色av中文字幕一区二区三区 | 午夜成人免费电影| 国产精品色哟哟| 日韩欧美色综合| 欧美日韩国产一级片| 99久久精品一区二区| 另类成人小视频在线| 亚洲影院在线观看| 亚洲国产精品v|