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

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

?? jp-io-vpi.c

?? 嵌入式開發板連接程序源碼
?? C
字號:
/* jp-io-vpi.c -- JTAG communications vpi plugin   Copyright (C) 2004 Gy鰎gy Jeney, nog@sdf.lonestar.orgThis file is part of OpenRISC 1000 Architectural Simulator.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* This plugs into an rtl simulator via vpi */#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <stdint.h>#include <fcntl.h>#include <sys/un.h>#include <errno.h>#include <vpi_user.h>/* The vpi<->jp connection is `mastered' by jp1.  Therefore we just sit doing * `nothing', waiting for jp1 to request or send us some data */static uint8_t vpi_out; /* data that the sim gives to us */static int jp_comm_m; /* The listening socket */static int jp_comm; /* The socket for communitateing with jp1 */static int jp_got_con; /* Have we got a connection ? */static int count_comp; /* Has the predetermined cycle-count been reached ? */static int jp_waiting; /* Is jp-waiting for count_comp ? */int jp_check_con();/*---------------------------------------------[ VPI interface to the sim ]---*//* Sends a byte from the sim */int vpi_jp_out(char *xx){  vpiHandle sys = vpi_handle(vpiSysTfCall, 0);  vpiHandle argv = vpi_iterate(vpiArgument, sys);  s_vpi_value value;  if(!argv) {    vpi_printf("$jp_out: missing destination argument\n");    vpi_free_object(argv);    return 0;  }  vpiHandle dat_to = vpi_scan(argv);  if(vpi_get(vpiType, dat_to) != vpiNet) {    vpi_printf("$jp_out: Must have a net as argument!!\n");    vpi_free_object(argv);    return 0;  }  value.format = vpiVectorVal;  vpi_get_value(dat_to, &value);  if((value.value.vector->bval & 1)) {    vpi_free_object(argv);    return 0;  }  vpi_out = value.value.vector->aval & 1;  vpi_free_object(argv);  return 0;}/* Sends a byte to the sim */int vpi_jp_in(char *xx){  int ret;  uint8_t dat;  s_vpi_vecval vec;  s_vpi_value value;  vpiHandle sys = vpi_handle(vpiSysTfCall, 0);  vpiHandle argv;  vpiHandle dat_to;  vpiHandle dat_to_index;  if(!jp_got_con) {    if(!jp_check_con())      return 0;  }  ret = read(jp_comm, &dat, 1);  if(!ret)    return 0;  if((ret == -1) && (errno == EAGAIN))    return 0;  if(dat & 0x80) {    switch(dat & 0x7f) {    case 0:      /* jp1 wants the TDO */      write(jp_comm, &vpi_out, 1);      return 0;    case 1:      /* jp wants a time-out */      if(count_comp)        write(jp_comm, &dat, 1); /* The value is irrelevent */      else        jp_waiting = 1;      return 0;    }  }  argv = vpi_iterate(vpiArgument, sys);  /* We got the data, acknowledge it and send it on to the sim */  if(!argv) {    vpi_printf("$jp_in: missing destination argument\n");    vpi_free_object(argv);    return 0;  }  dat_to = vpi_scan(argv);  if(vpi_get(vpiType, dat_to) != vpiMemory) {    vpi_printf("$jp_in: Must have a memory as argument!!\n");    vpi_free_object(argv);    return 0;  }  value.format = vpiVectorVal;  vec.aval = (dat & 0xf) | 0x10;  vec.bval = 0;  value.value.vector = &vec;  dat_to_index = vpi_handle_by_index(dat_to, 0);  vpi_put_value(dat_to_index, &value, 0, vpiNoDelay);  vpi_free_object(argv);  dat |= 0x10;  write(jp_comm, &dat, 1);  count_comp = 0;  return 0;}/* tells us that we reached a predetermined cycle count */int jp_wait_time(char *xx){  uint8_t dat = 0;  if(jp_waiting) {    write(jp_comm, &dat, 1);    jp_waiting = 0;  }  count_comp = 1;  return 0;}/*---------------------------------------------------[ VPI<->jp functions ]---*/int init_sock(char *xx){  struct sockaddr_un addr;  int ret;  vpiHandle sys = vpi_handle(vpiSysTfCall, 0);  vpiHandle argv = vpi_iterate(vpiArgument, sys);  s_vpi_value value;  if(!argv) {    vpi_printf("$jp_init: missing destination argument\n");    return 0;  }  vpiHandle sock = vpi_scan(argv);/*  if(vpi_get(vpiConstType, sock) != vpiStringConst) {    vpi_printf("$jp_init: Must have a string as argument!!\n");    vpi_free_object(argv);    return 0;  }*/  value.format = vpiStringVal;  vpi_get_value(sock, &value);  addr.sun_family = AF_UNIX;  strcpy(addr.sun_path, value.value.str);  if((jp_comm_m = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {    fprintf(stderr, "Unable to create comm socket\n");    return 0;  }  if(bind(jp_comm_m, (struct sockaddr *)&addr, sizeof(addr)) == -1) {    fprintf(stderr, "Unable to bind to the unix socket %s\n", addr.sun_path);    return 0;  }  if(listen(jp_comm_m, 1) == -1) {    fprintf(stderr, "Unable to listen on %s (%s)\n", addr.sun_path,            strerror(errno));    return 0;  }  ret = fcntl(jp_comm_m, F_GETFL);  ret |= O_NONBLOCK;  fcntl(jp_comm_m, F_SETFL, ret);  jp_got_con = 0;  jp_waiting = 0;  printf("Just registered socket!!!\n");  return 0;}/* Checks to see if we got a connection */int jp_check_con(){  int ret;  if((jp_comm = accept(jp_comm_m, NULL, NULL)) == -1) {    if(errno == EAGAIN)      return 0;    fprintf(stderr, "Unable to accept connection (%s)\n", strerror(errno));    return 0;  }  /* Set the comm socket to non-blocking */  ret = fcntl(jp_comm, F_GETFL);  ret |= O_NONBLOCK;  fcntl(jp_comm, F_SETFL, ret);  jp_got_con = 1;  return 1;}/*------------------------------------------------------------[ VPI stuff ]---*/static void jtag_register(){  s_vpi_systf_data tf_data;  tf_data.type      = vpiSysTask;  tf_data.tfname    = "$jp_in";  tf_data.calltf    = vpi_jp_in;  tf_data.compiletf = 0;  tf_data.sizetf    = 0;  vpi_register_systf(&tf_data);  tf_data.type      = vpiSysTask;  tf_data.tfname    = "$jp_out";  tf_data.calltf    = vpi_jp_out;  tf_data.compiletf = 0;  tf_data.sizetf    = 0;  vpi_register_systf(&tf_data);  tf_data.type      = vpiSysTask;  tf_data.tfname    = "$jp_init";  tf_data.calltf    = init_sock;  tf_data.compiletf = 0;  tf_data.sizetf    = 0;  vpi_register_systf(&tf_data);  tf_data.type      = vpiSysTask;  tf_data.tfname    = "$jp_wait_time";  tf_data.calltf    = jp_wait_time;  tf_data.compiletf = 0;  tf_data.sizetf    = 0;  vpi_register_systf(&tf_data);}void (*vlog_startup_routines[])() = {      jtag_register,      0};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线观看一区| 美女视频黄免费的久久| 久久超碰97中文字幕| 成人黄色av网站在线| 欧美日韩大陆一区二区| 国产精品福利电影一区二区三区四区 | 91成人在线观看喷潮| 久久久久久亚洲综合影院红桃 | 中文字幕一区二区三区在线观看| 午夜精品aaa| 一道本成人在线| 国产精品毛片久久久久久久| 国产尤物一区二区在线| 日韩欧美一区在线观看| 亚洲动漫第一页| 色婷婷综合在线| 亚洲欧洲日韩一区二区三区| 高清在线不卡av| www国产亚洲精品久久麻豆| 午夜天堂影视香蕉久久| 色综合天天做天天爱| 国产精品天天摸av网| 国产一区二区三区在线观看免费| 日韩欧美一区二区在线视频| 婷婷综合在线观看| 91精品综合久久久久久| 日韩国产高清在线| 欧美一级电影网站| 男女男精品视频网| 日韩精品中文字幕一区| 精品一区二区三区在线观看| 精品剧情v国产在线观看在线| 石原莉奈在线亚洲三区| 欧美老肥妇做.爰bbww| 日韩av不卡一区二区| 3751色影院一区二区三区| 视频在线观看一区二区三区| 亚洲人吸女人奶水| av在线这里只有精品| 亚洲三级久久久| 成人性视频免费网站| 中文字幕日韩欧美一区二区三区| 成人黄色小视频| 亚洲乱码中文字幕| 欧美在线影院一区二区| 日本亚洲三级在线| 久久这里都是精品| 不卡电影免费在线播放一区| 亚洲精品免费在线| 欧美高清www午色夜在线视频| 久久国产精品第一页| 久久久高清一区二区三区| 成人av资源站| 亚洲国产欧美日韩另类综合| 欧美电影在线免费观看| 久久99日本精品| 中文天堂在线一区| 色婷婷综合视频在线观看| 爽好久久久欧美精品| 欧美成人国产一区二区| 9i看片成人免费高清| 视频一区国产视频| 欧美国产精品v| 欧美三级资源在线| 久久黄色级2电影| 亚洲欧美日韩一区| 日韩一级片在线播放| 处破女av一区二区| 奇米精品一区二区三区四区| 国产精品美女久久久久aⅴ国产馆| 欧美亚洲丝袜传媒另类| 国产福利一区二区三区视频在线| 夜夜嗨av一区二区三区中文字幕 | av亚洲产国偷v产偷v自拍| 亚洲成人在线观看视频| 久久综合狠狠综合久久综合88 | 一区二区成人在线视频| 欧美成人猛片aaaaaaa| 色婷婷综合久久久久中文一区二区| 日本成人超碰在线观看| 亚洲精品成人在线| 久久久国产精品麻豆| 在线观看91精品国产麻豆| 成人av电影在线播放| 久久精品国产免费看久久精品| 91精品国模一区二区三区| 91视频免费播放| 国产成人aaaa| 国产一区二区电影| 美女在线观看视频一区二区| 亚洲一区二区精品视频| 国产精品久久久久久久久动漫| 精品国内片67194| 欧美乱熟臀69xxxxxx| 色美美综合视频| 丁香婷婷综合色啪| 精品一区二区三区蜜桃| 三级久久三级久久久| 一区二区三区免费在线观看| 中文字幕一区二区在线播放| 欧美激情自拍偷拍| 精品国产乱码久久久久久蜜臀| 制服丝袜中文字幕亚洲| 在线免费观看日本一区| 99久久er热在这里只有精品15 | 精品亚洲欧美一区| 久久精品999| 老司机午夜精品| 蜜臀久久久99精品久久久久久| 午夜视频在线观看一区| 日韩专区一卡二卡| 日韩高清不卡一区二区三区| 婷婷开心久久网| 婷婷丁香激情综合| 日韩av一级电影| 另类小说图片综合网| 久久成人免费电影| 国产综合久久久久久久久久久久| 精品一二三四区| 国产盗摄女厕一区二区三区| 成人国产精品免费网站| 91在线观看下载| 色成人在线视频| 欧美日韩亚洲国产综合| 在线电影院国产精品| 日韩亚洲电影在线| 久久综合网色—综合色88| 久久久99精品久久| 国产精品美日韩| 一个色妞综合视频在线观看| 丝袜美腿一区二区三区| 免费一级片91| 成人小视频免费在线观看| 国产91高潮流白浆在线麻豆| av午夜一区麻豆| 欧美精品日韩精品| 26uuu另类欧美| 综合色天天鬼久久鬼色| 香蕉久久夜色精品国产使用方法 | 亚洲chinese男男1069| 久久精品免费观看| 成人午夜短视频| 欧美情侣在线播放| 国产日韩欧美综合一区| 亚洲日本电影在线| 麻豆视频一区二区| 成人国产精品免费观看动漫| 欧美乱妇23p| 国产精品每日更新在线播放网址| 亚洲午夜激情网站| 国内外成人在线| 色狠狠综合天天综合综合| 欧美一卡二卡三卡四卡| 国产精品久久久久影院色老大| 亚洲国产精品久久不卡毛片 | 国产精品无人区| 午夜电影网一区| 成人性生交大片免费看中文 | 欧美视频在线观看一区| 久久天天做天天爱综合色| 亚洲男人天堂av| 国产精品综合一区二区三区| 欧美高清www午色夜在线视频| 中文字幕乱码亚洲精品一区| 免费成人小视频| 欧美亚洲自拍偷拍| 中文av一区二区| 久久福利资源站| 欧美久久一二三四区| 中文字幕一区二区不卡| 国产在线视视频有精品| 欧美另类videos死尸| 亚洲精品国产精品乱码不99| 国产一区二区三区蝌蚪| 正在播放亚洲一区| 一区二区三区加勒比av| 成人小视频在线观看| 欧美精品一区二区不卡 | 日韩一级大片在线观看| 一级女性全黄久久生活片免费| 成人综合婷婷国产精品久久蜜臀| 欧美电视剧在线看免费| 亚洲妇女屁股眼交7| 91国模大尺度私拍在线视频| 国产精品美女久久久久久2018| 国内国产精品久久| 欧美一级高清大全免费观看| 肉色丝袜一区二区| 欧美在线free| 夜夜精品视频一区二区| 在线视频国产一区| 亚洲综合一区二区三区| 97成人超碰视| 亚洲欧美日韩成人高清在线一区| 国产精品一区二区免费不卡 | 亚洲三级电影网站| 色婷婷久久综合| 亚洲精品欧美激情| 色一情一乱一乱一91av| 夜夜揉揉日日人人青青一国产精品|