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

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

?? gdb.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 "jp2.h"/* connection to jp2 routines */int gdb_chain = -1;int gdb_read_reg(unsigned long adr, unsigned long *data) {  switch (gdb_chain) {    SC_RISC_DEBUG: return dbg_cpu_read32(adr, data) ? ERR_CRC : ERR_NONE;    SC_REGISTER:   return dbg_cpu_read_reg(adr, data) ? ERR_CRC : ERR_NONE;    SC_WISHBONE:   return dbg_wb_read32(adr, data) ? ERR_CRC : ERR_NONE;    default:       return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_write_reg(unsigned long adr, unsigned long data) {  switch (gdb_chain) {    SC_RISC_DEBUG: return dbg_cpu_write32(adr, data) ? ERR_CRC : ERR_NONE;    SC_REGISTER:   return dbg_cpu_write_reg(adr, data) ? ERR_CRC : ERR_NONE;    SC_WISHBONE:   return dbg_wb_write32(adr, data) ? ERR_CRC : ERR_NONE;    default:       return JTAG_PROXY_INVALID_CHAIN;  }}int gdb_read_block(unsigned long adr, unsigned long *data, int len) {  switch (gdb_chain) {    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) {  switch (gdb_chain) {    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) {  switch (gdb_chain) {    SC_RISC_DEBUG:    SC_REGISTER:    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);    return;  }  gdb_fd = fd;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级一区二区| 国产精品久久三| 日本亚洲一区二区| 久久久亚洲精品一区二区三区| 国产福利一区二区三区视频在线| 国产亚洲综合在线| 欧美日本在线观看| 丁香激情综合国产| 美国三级日本三级久久99| 国产日本一区二区| 欧美精品黑人性xxxx| 成人午夜视频免费看| 性做久久久久久| 国产精品理伦片| 欧美老年两性高潮| 99国产精品久久久久久久久久久 | 日韩一区二区免费视频| 午夜激情一区二区| 中文字幕一区在线| 欧美高清视频在线高清观看mv色露露十八| 偷拍一区二区三区四区| 亚洲一区二区在线播放相泽| 国产无人区一区二区三区| 91免费版pro下载短视频| 乱一区二区av| 丝袜美腿亚洲综合| 亚洲伦理在线免费看| 亚洲免费在线播放| 亚洲女厕所小便bbb| 一区二区三区在线免费| 亚洲一二三四在线观看| 秋霞成人午夜伦在线观看| 视频在线观看91| 日本女人一区二区三区| 裸体一区二区三区| 福利一区在线观看| 91偷拍与自偷拍精品| 在线观看一区二区视频| 337p亚洲精品色噜噜| 国产欧美va欧美不卡在线| 18成人在线视频| 性久久久久久久| 国产黄色成人av| 欧美日韩中文国产| 欧美精品一区二区高清在线观看| 国产精品少妇自拍| 亚洲图片欧美色图| 国产一级精品在线| 欧美日韩国产小视频在线观看| 精品嫩草影院久久| 亚洲精品国产成人久久av盗摄| 婷婷中文字幕综合| 色综合久久久久综合体桃花网| 欧美日韩一本到| 亚洲欧美综合色| 国产一区二区三区四| 欧美一卡二卡三卡| 亚洲va中文字幕| jlzzjlzz亚洲女人18| 精品国产人成亚洲区| 日本免费在线视频不卡一不卡二 | 精品一区二区三区不卡| 欧美精品在线一区二区| 亚洲一线二线三线视频| hitomi一区二区三区精品| 亚洲精品一区二区三区香蕉| 日韩国产欧美在线视频| 欧美日韩二区三区| 午夜精品视频在线观看| 欧美日韩国产另类一区| 亚洲一区二区精品久久av| 91黄色免费观看| 亚洲小说欧美激情另类| 欧美在线视频你懂得| 亚洲伊人伊色伊影伊综合网| 欧美主播一区二区三区| 亚洲美女精品一区| 欧美精品日韩一区| 毛片av一区二区| 国产精品视频麻豆| 欧美色区777第一页| 日韩高清欧美激情| 国产日本欧美一区二区| 欧美亚洲一区三区| 国产高清精品在线| 亚洲同性gay激情无套| 欧美肥妇bbw| 99国产一区二区三精品乱码| 五月天网站亚洲| 国产精品视频看| 制服丝袜av成人在线看| 国产jizzjizz一区二区| 亚洲香肠在线观看| 亚洲国产岛国毛片在线| 欧美精品在线观看播放| 成人午夜免费视频| 国产在线精品一区二区夜色 | 三级精品在线观看| 亚洲免费观看高清完整| 精品国产免费视频| 欧美日韩一级二级| 91猫先生在线| 9i看片成人免费高清| 粉嫩在线一区二区三区视频| 美女在线视频一区| 美女诱惑一区二区| 视频在线在亚洲| 亚洲人成电影网站色mp4| 久久综合九色综合久久久精品综合| 欧美网站大全在线观看| 成人ar影院免费观看视频| 蜜桃一区二区三区在线观看| 亚洲国产精品久久人人爱蜜臀| 亚洲视频中文字幕| 亚洲成人一区在线| 国内久久婷婷综合| 国产精品一级片在线观看| 风间由美一区二区三区在线观看| 国内精品伊人久久久久av影院| 成人午夜在线免费| 欧美日本一区二区三区四区| 日韩欧美国产一区二区在线播放 | 激情都市一区二区| a美女胸又www黄视频久久| 色综合中文字幕国产 | 午夜激情一区二区三区| 久草在线在线精品观看| 国产高清不卡一区| 在线精品国精品国产尤物884a| 精品国产三级电影在线观看| 久久久久久久久免费| 欧美一区二区网站| 国产99久久久久| 成人激情动漫在线观看| 2022国产精品视频| 国产乱码精品一区二区三区忘忧草 | 日韩女优av电影| 亚洲美女屁股眼交3| 毛片不卡一区二区| 色视频成人在线观看免| 日韩精品一区二区在线| 亚洲一区在线免费观看| 波多野结衣亚洲| 国产欧美一区二区精品久导航 | 久久91精品国产91久久小草| 欧美日韩一区二区欧美激情| 18成人在线视频| 99精品在线观看视频| 国产精品久久久久久久久免费桃花| 日韩电影在线观看网站| 欧美一级淫片007| 日本vs亚洲vs韩国一区三区二区| 色婷婷国产精品| 亚洲欧美一区二区三区孕妇| 欧美在线影院一区二区| 亚洲午夜激情av| 亚洲精品一区二区三区香蕉| 国产成人精品亚洲777人妖| 一区二区三区小说| 日韩视频一区在线观看| 91在线一区二区三区| 日韩成人一级片| 自拍偷拍亚洲综合| 日韩欧美不卡一区| 在线观看日韩电影| 国产成人精品综合在线观看 | 亚洲成人精品在线观看| 精品国产伦一区二区三区免费| 成人少妇影院yyyy| 琪琪久久久久日韩精品| 国产精品国产三级国产aⅴ无密码| 5858s免费视频成人| 97精品久久久久中文字幕 | 99re在线精品| 成人在线一区二区三区| 免费观看在线色综合| 亚洲成人综合视频| 亚洲黄色小说网站| 亚洲一级二级在线| 日韩福利电影在线观看| 亚洲一区二区欧美日韩| 亚洲图片激情小说| 成人网页在线观看| 日本亚洲一区二区| 国内精品久久久久影院薰衣草 | 色成人在线视频| 国产精品欧美一区二区三区| 成人毛片老司机大片| 日日摸夜夜添夜夜添国产精品 | 美女久久久精品| 久久99国产精品久久| 成人国产精品免费| 在线精品视频一区二区三四| 欧美一区二区三区免费观看视频| 欧美影视一区二区三区| 欧美一区二区三区不卡| 国产亚洲欧美一级| 性久久久久久久久久久久| 五月天中文字幕一区二区| 7878成人国产在线观看|