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

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

?? p9054_diag.c

?? windrive開發的pci9054的驅動程序。
?? C
?? 第 1 頁 / 共 2 頁
字號:
////////////////////////////////////////////////////////////////
// File - P9054_DIAG.C
//
// o A simple diagnostics program that lets you access the
//   PLX 9054 registers and local memory. 
// o This program is meant to be used as an example for using the P9054_LIB.H API,
//   you may use it as a skeleton for your driver, or 'cut & paste' parts
//   of it into your device driver code.
// o For a more advanced monitor program, use the standard PLXMON.EXE
//   from PLX.
// 
// Copyright (c) 2003 Jungo Ltd.  http://www.jungo.com
// 
////////////////////////////////////////////////////////////////

#include "p9054_lib.h"
#include "pci_diag_lib.h"
#include <stdio.h>
#include "myfunction.h"

// input of command from user
static char line[256];

void PLX_EditReg(P9054_HANDLE hPlx)
{
    struct 
    {
        CHAR *name;
        DWORD dwOffset;
        DWORD dwVal;
    } fields[30];

    int cmd;
    int i;
    int field_count;

    i = 0;
    fields[i].name = "LAS0RR"; fields[i++].dwOffset = 0x00;
    fields[i].name = "LAS0BA"; fields[i++].dwOffset = 0x04;
    fields[i].name = "EROMRR"; fields[i++].dwOffset = 0x10;
    fields[i].name = "EROMBA"; fields[i++].dwOffset = 0x14;
    fields[i].name = "LBRD0"; fields[i++].dwOffset = 0x18;
    fields[i].name = "MBOX0"; fields[i++].dwOffset = 0x40;
    fields[i].name = "MBOX1"; fields[i++].dwOffset = 0x44;
    fields[i].name = "MBOX2"; fields[i++].dwOffset = 0x48;
    fields[i].name = "MBOX3"; fields[i++].dwOffset = 0x4c;
    fields[i].name = "MBOX4"; fields[i++].dwOffset = 0x50;
    fields[i].name = "MBOX5"; fields[i++].dwOffset = 0x54;
    fields[i].name = "MBOX6"; fields[i++].dwOffset = 0x58;
    fields[i].name = "MBOX7"; fields[i++].dwOffset = 0x5c;
    fields[i].name = "P2LDBELL"; fields[i++].dwOffset = 0x60;
    fields[i].name = "L2PDBELL"; fields[i++].dwOffset = 0x64;
    fields[i].name = "INTCSR"; fields[i++].dwOffset = 0x68;
    fields[i].name = "CNTRL"; fields[i++].dwOffset = 0x6c;
    fields[i].name = "SECID"; fields[i++].dwOffset = 0x70;
    fields[i].name = "REVISON"; fields[i++].dwOffset = 0x74;
    field_count = i;
    do
    {
        int row;
        int col;
        int row_count = field_count/2 + field_count%2;

        printf ("\n");
        printf ("Edit PLX 9054 registers\n");
        printf ("--------------------------------\n");
        for (row = 0; row<row_count; row++)
        {
            for (col = 0; col<=1; col++)
            {
                if (col==0) i = row;
                else i = row + row_count;

                if (i<field_count)
                {
                    char buf[10];
                    fields[i].dwVal = P9054_ReadReg(hPlx, fields[i].dwOffset);
                    sprintf(buf, "%08x",fields[i].dwVal);
                    printf ("%2d. %8s : %s     ",i+1, fields[i].name, buf);
                }
                if (col==1) printf ("\n");
            }
        }

        printf ("99. Back to main menu\n");
        printf ("Choose register to write to, or 99 to exit: ");
        cmd = 0;
        fgets(line, sizeof(line), stdin);
        sscanf (line, "%d",&cmd);
        if (cmd>=1 && cmd <=21)
        {
            i = cmd-1;
            printf ("Enter value to write to %s register (or 'X' to cancel): ",fields[i].name);
            fgets(line, sizeof(line), stdin);
            if (toupper (line[0])!='X')
            {
                DWORD dwVal;
                dwVal = 0;
                sscanf (line,"%x",&dwVal);
                P9054_WriteReg(hPlx, fields[i].dwOffset, dwVal);
            }
        }
    } while (cmd!=99);
}

char *PLX_GetAddrRangeName(P9054_ADDR addrSpace)
{
    return 
        addrSpace==P9054_ADDR_SPACE0 ? "Addr Space 0 - (BAR2)" :
        addrSpace==P9054_ADDR_SPACE1 ? "Addr Space 1 - (BAR3)" :
        addrSpace==P9054_ADDR_SPACE2 ? "Addr Space 2 - (BAR4)" :
        addrSpace==P9054_ADDR_SPACE3 ? "Addr Space 3 - (BAR5)" :
        addrSpace==P9054_ADDR_EPROM ? "EEPROM Addr Space" : "Invalid";
}

void PLX_BoardAccess(P9054_HANDLE hPlx, BOOL fLocalAddr)
{
    int cmd, cmd2;
    DWORD addr, data, i;
    P9054_ADDR ad_sp = P9054_ADDR_SPACE0;
    P9054_MODE ad_mode = P9054_MODE_DWORD;

    char *pcMemoryType = fLocalAddr ? "local address" : "offset";

    if (!fLocalAddr)
    {
        for (; ad_sp<=P9054_ADDR_EPROM && !P9054_IsAddrSpaceActive(hPlx, ad_sp); ad_sp++)
        if (ad_sp>P9054_ADDR_EPROM)
        {
            printf ("No active memory spaces on board!\n");
            return;
        }
    }

    do
    {
        printf ("Access the board's %s ranges\n",pcMemoryType);
        printf ("-------------------------------------------\n");
        printf ("(Access to invalid %s may hang the computer!)\n", pcMemoryType);
        if (!fLocalAddr)
            printf ("1. Change active memory space: %s\n",PLX_GetAddrRangeName(ad_sp));
        printf ("2. Toggle active mode: %s\n", 
            ad_mode==P9054_MODE_BYTE ? "BYTE (8 bit)" :
            ad_mode==P9054_MODE_WORD ? "WORD (16 bit)" : "DWORD (32 bit)");
        printf ("3. Read from board\n");
        printf ("4. Write to board\n");
        printf ("99. Back to main menu\n");
        printf ("\n");
        printf ("Enter option: ");
        cmd = 0;
        fgets(line, sizeof(line), stdin);
        sscanf (line, "%d",&cmd);
        switch (cmd)
        {
        case 1:
            if (!fLocalAddr)
            {
                printf ("Choose memory space:\n");
                printf ("--------------------\n");
                for (i=P9054_ADDR_SPACE0; i<=P9054_ADDR_EPROM; i++)
                {
                    printf ("%d. %s", i, PLX_GetAddrRangeName(i));
                    if (P9054_IsAddrSpaceActive(hPlx, i)) printf ("\n");
                    else printf (" - space not active\n");
                }
                printf ("Enter option: ");
                cmd2 = 99;
                fgets(line, sizeof(line), stdin);
                sscanf (line, "%d",&cmd2);
                if (cmd2>=P9054_ADDR_SPACE0 && cmd2<=P9054_ADDR_EPROM)
                {
                    int new_ad_sp = cmd2;
                    if (P9054_IsAddrSpaceActive(hPlx, new_ad_sp)) ad_sp = new_ad_sp;
                    else printf ("Chosen space not active!\n");
                }
            }
            break;
        case 2:
            ad_mode = (ad_mode + 1) % 3;
            break;
        case 3:
            printf ("Enter %s to read from: ", pcMemoryType);
            fgets(line, sizeof(line), stdin);
            sscanf (line, "%x", &addr);
            switch (ad_mode)
            {
            case P9054_MODE_BYTE:
                if (fLocalAddr) data = P9054_ReadByteLocal(hPlx, addr);
                else data = P9054_ReadByte(hPlx, ad_sp, addr);
                break;
            case P9054_MODE_WORD:
                if (fLocalAddr) data = P9054_ReadWordLocal(hPlx, addr);
                else data = P9054_ReadWord(hPlx, ad_sp, addr);
                break;
            case P9054_MODE_DWORD:
                if (fLocalAddr) data = P9054_ReadDWordLocal(hPlx, addr);
                else data = P9054_ReadDWord(hPlx, ad_sp, addr);
                break;
            }
            printf ("Value read: %x\n", data);
            break;
        case 4:
            printf ("Enter %s to write to: ", pcMemoryType);
            fgets(line, sizeof(line), stdin);
            sscanf (line, "%x", &addr);
            printf ("Enter data to write %s: ",
                ad_mode==P9054_MODE_BYTE ? "BYTE (8 bit)" :
                ad_mode==P9054_MODE_WORD ? "WORD (16 bit)" : "DWORD (32 bit)");
            fgets(line, sizeof(line), stdin);
            sscanf (line, "%x",&data);
            switch (ad_mode)
            {
            case P9054_MODE_BYTE:
                if (fLocalAddr) P9054_WriteByteLocal(hPlx, addr, (BYTE) data);
                else P9054_WriteByte(hPlx, ad_sp, addr, (BYTE) data);
                break;
            case P9054_MODE_WORD:
                if (fLocalAddr) P9054_WriteWordLocal(hPlx, addr, (WORD) data);
                else P9054_WriteWord(hPlx, ad_sp, addr, (WORD) data);
                break;
            case P9054_MODE_DWORD:
                if (fLocalAddr) P9054_WriteDWordLocal(hPlx, addr, data);
                else P9054_WriteDWord(hPlx, ad_sp, addr, data);
                break;
            }
            break;
        }
    } while (cmd!=99);
}

void WINAPI PLX_IntHandlerRoutine(P9054_HANDLE hPlx, P9054_INT_RESULT *intResult)
{
    printf ("Got interrupt number %d\n", intResult->dwCounter);
}

void PLX_EnableDisableInterrupts(P9054_HANDLE hPlx)
{
    int cmd;

    printf ("WARNING!!!\n");
    printf ("----------\n");
    printf ("Your hardware has level sensitive interrupts.\n");
    printf ("You must modify the source code of P9054_IntEnable(), in the file P9054_lib.c,\n");
    printf ("to acknowledge the interrupt before enabling interrupts.\n");
    printf ("Without this modification, your PC will HANG upon interrupt!\n");

    do
    {
        printf ("Enable / Disable interrupts\n");
        printf ("---------------------------\n");
        printf ("1. %s interrupts\n", P9054_IntIsEnabled(hPlx) ? "Disable" : "Enable");
        printf ("99. Back to main menu\n");
        printf ("\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天久久比比资源色| 日本欧美韩国一区三区| 99久久99久久久精品齐齐| 久久久亚洲精品石原莉奈| 成人h精品动漫一区二区三区| 国产欧美精品一区aⅴ影院| 99这里只有久久精品视频| 亚欧色一区w666天堂| 日韩一区二区三区av| 成人一区二区三区视频在线观看 | 亚洲美女精品一区| 6080国产精品一区二区| 国产高清无密码一区二区三区| 亚洲精品一二三| 日韩视频在线一区二区| 91视频精品在这里| 蜜臀久久久99精品久久久久久| 国产欧美日韩精品一区| 欧美性大战久久久久久久蜜臀| 国内精品伊人久久久久av一坑| 亚洲天堂中文字幕| 久久九九99视频| 欧美一二三区在线观看| 欧美日韩在线播放| 色吧成人激情小说| 97久久超碰国产精品电影| 美腿丝袜亚洲色图| 日本系列欧美系列| 午夜婷婷国产麻豆精品| 亚洲综合色区另类av| 亚洲欧美一区二区三区极速播放 | 日韩亚洲欧美在线观看| 欧美三片在线视频观看| 欧美三级电影一区| 亚洲视频在线一区观看| 色婷婷精品久久二区二区蜜臂av | 久久久久青草大香线综合精品| 亚洲欧美另类小说| 成人一级片网址| 精品久久久网站| 美国一区二区三区在线播放| 911国产精品| 亚洲成av人影院| 欧美高清视频一二三区 | 久久久精品国产免费观看同学| 免费观看30秒视频久久| 欧美不卡视频一区| 国产乱人伦精品一区二区在线观看| 欧美xxxx老人做受| 国产综合一区二区| 亚洲国产高清在线观看视频| 国产91精品一区二区麻豆亚洲| 中文字幕+乱码+中文字幕一区| 成人18视频日本| 一区二区三区欧美亚洲| 欧美日韩精品二区第二页| 污片在线观看一区二区| 精品精品国产高清一毛片一天堂| 国产自产2019最新不卡| 中文字幕日本不卡| 91久久香蕉国产日韩欧美9色| 亚洲午夜久久久久中文字幕久| 4438x亚洲最大成人网| 精久久久久久久久久久| 中文字幕免费在线观看视频一区| 91在线视频播放| 日韩av一级电影| 国产色综合一区| 538prom精品视频线放| 国产精品综合网| 亚洲视频资源在线| 欧美日韩高清在线播放| 国产精品自拍av| 亚洲精品一二三| 日韩一区二区在线看片| 成人自拍视频在线观看| 偷拍自拍另类欧美| 日本一区二区三区高清不卡| 一本久久a久久精品亚洲| 国产精品丝袜在线| 在线不卡免费欧美| 成人av网站在线| 日韩不卡免费视频| 亚洲婷婷综合色高清在线| 日韩欧美在线一区二区三区| 99re这里只有精品6| 老司机精品视频线观看86| 亚洲精品乱码久久久久久日本蜜臀| 欧美一级国产精品| 色94色欧美sute亚洲13| 国产精品自拍三区| 日日夜夜精品视频天天综合网| 欧美激情在线看| 精品国精品国产| 欧美日韩精品一区二区在线播放| 成人免费视频视频在线观看免费 | 日日摸夜夜添夜夜添国产精品| 中文字幕日本乱码精品影院| 2023国产精品视频| 欧美色图12p| 91视视频在线直接观看在线看网页在线看| 欧美日韩免费观看一区三区| 91伊人久久大香线蕉| 国产高清精品久久久久| 美女www一区二区| 性做久久久久久久久| 亚洲欧美激情在线| 中文字幕+乱码+中文字幕一区| 欧美一区二区视频网站| 欧美图区在线视频| 在线免费视频一区二区| 91丨九色丨蝌蚪丨老版| 成人蜜臀av电影| 成人黄色国产精品网站大全在线免费观看| 久久97超碰国产精品超碰| 日韩一区欧美二区| 日韩专区中文字幕一区二区| 亚洲高清免费在线| 亚洲伊人伊色伊影伊综合网| 亚洲一区二区在线视频| 一区二区高清在线| 亚洲制服丝袜av| 亚洲国产视频网站| 日日摸夜夜添夜夜添国产精品| 日韩在线观看一区二区| 午夜欧美视频在线观看| 日本视频在线一区| 美女在线一区二区| 韩国精品免费视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 久久色成人在线| 久久精品一区二区三区不卡| 国产欧美精品在线观看| 中文字幕一区二区三区视频 | 国产欧美综合在线| 中文字幕免费一区| 一区二区三区视频在线看| 亚洲一区二区三区三| 午夜精品久久久久久久| 日韩精品亚洲专区| 国产精品自拍在线| 色综合久久天天综合网| 欧美日韩一二区| 亚洲精品一区二区三区四区高清| 久久蜜桃av一区二区天堂| 亚洲欧美综合在线精品| 亚洲一区视频在线| 激情综合色综合久久| 97国产精品videossex| 337p亚洲精品色噜噜狠狠| 精品精品国产高清一毛片一天堂| 国产精品精品国产色婷婷| 亚洲成人动漫在线免费观看| 久久国产精品一区二区| 不卡的看片网站| 欧美日韩二区三区| 久久久久久久久久久黄色| 亚洲特级片在线| 久久精品国产一区二区三区免费看| 国产成人av电影免费在线观看| 色婷婷av久久久久久久| 日韩一区二区免费电影| 国产精品久久综合| 日本亚洲视频在线| 99re免费视频精品全部| 欧美一级在线观看| 国产精品少妇自拍| 日韩不卡免费视频| 91国偷自产一区二区开放时间 | 日韩不卡免费视频| 96av麻豆蜜桃一区二区| 精品国免费一区二区三区| 一卡二卡三卡日韩欧美| 国产精品自产自拍| 日韩视频不卡中文| 一区二区三区日韩在线观看| 国产馆精品极品| 91精品国产一区二区三区 | 午夜av区久久| av电影天堂一区二区在线观看| 欧美电视剧在线观看完整版| 国产曰批免费观看久久久| 在线亚洲欧美专区二区| 欧美激情中文不卡| 久久国产麻豆精品| 日韩一区二区在线观看视频| 夜夜精品浪潮av一区二区三区| 丁香亚洲综合激情啪啪综合| 精品剧情v国产在线观看在线| 亚洲国产精品综合小说图片区| 99r精品视频| 国产精品蜜臀av| 国产99久久久国产精品| 精品国产三级a在线观看| 日韩黄色免费网站| 欧美三级三级三级爽爽爽| 亚洲美女在线一区| 色婷婷亚洲一区二区三区| 国产精品视频一二三区| 成人黄色在线视频|