日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用rtl8139网卡制作的bios编程器(不用并口)

發布時間:2023/12/16 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用rtl8139网卡制作的bios编程器(不用并口) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最重要一點,8139的4個寄存器只能一次性寫入,分開寫會出問題。

程序有待改進,判斷刷寫完成的程序用延時代替的。

編程對象是w39v040。

用plcc32轉接座把bios芯片插到網卡。

we腳接到a10

r/c腳接到a9

a10腳接到a11

ic腳接到電源

#include <windows.h>
#include <tchar.h>
#include "winio.h"
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <stdio.h>
#include "conio.h"

#pragma comment( lib, "WINMM.LIB" )
#pragma comment( lib, "winio.lib")
#include "resource.h"
# define TIMER_ACCURACY 1
DWORD? aaa;
UINT wTimerRes_1ms=1;
UINT wAccuracy;
int bbb=0,ccc=0;
HWND hwnd;
DWORD number;
HANDLE hFile;
HANDLE hfile,hfile2;
unsigned long ddd=0,ddd2=0,ddd3=0;
SYSTEMTIME _time1;
bool zhuangtai=0;
int fenzhong=0,miao=0;
int i=0,ii=0,t=0;
BYTE b=0;
int add_base=0xdc00;
int add_data=add_base+0xd7;
int add_add=add_base+0xd4;
int add_add2=add_base+0xd5;
int add_add3=add_base+0xd6;
BYTE addr;
unsigned long num;
DWORD DATA0=0,DATA1=1,buf32=0,tmp=0,tmp2;
char buf[33]="aaaaaaaaaaaaaaaaaaaaaaaa";

DWORD PCIConfBaseAddr=0x80000000;??
UCHAR ADDRL=0,ADDRH=0,ADDR8,ADDR9,ADDR10;
DWORD readflash(int addr);
void writeflash(int addr,UCHAR data);

char c_path_recive[260],c_path_send[260];
char c_filename[260]="down";
OPENFILENAME openfilename,openfilename2;
HINSTANCE hInst;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
?switch (message)
?{
?case WM_INITDIALOG:
??hwnd=hWnd;?
??SetDlgItemText(hwnd,IDC_EDIT3,"c:\\jieshou.txt");?
??SetDlgItemText(hwnd,IDC_EDIT4,"c:\\fasong");?
??SetPortVal(add_add? ,0xffffffff, 4);
??break;
?case WM_COMMAND:?
??switch (LOWORD(wParam))
??{
??case (READ):
???DWORD recivedata;
???GetDlgItemText(hwnd,IDC_EDIT3,c_filename,260);
???hfile=CreateFile(c_filename, GENERIC_WRITE|GENERIC_READ ,FILE_SHARE_READ|FILE_SHARE_WRITE ,0,CREATE_ALWAYS,0,0);
???for(i=0;i<2048;i++)
???{
????recivedata=readflash(i);
????WriteFile(hfile,&recivedata,1,&num,0);
???}?
???CloseHandle(hfile);
???SetDlgItemText(hwnd,IDC_EDIT1,"ok");?
???break;
??case (ID):
???DWORD recivedata2;
???writeflash(0x5555,0xaa);
???writeflash(0x2aaa,0x55);
???writeflash(0x5555,0x90);
???Sleep(100);
???recivedata2=readflash(0);
???writeflash(0x0,0xf0);//退出id模式
???char bufferx[50];
???recivedata2=recivedata2&0x000ff;
???_gcvt(recivedata2, 20, bufferx );
???SetDlgItemText(hwnd,IDC_EDIT2,bufferx);
???break;
??case (ERASE):
???writeflash(0x5555,0xaa);
???writeflash(0x2aaa,0x55);
???writeflash(0x5555,0x80);
???writeflash(0x5555,0xaa);
???writeflash(0x2aaa,0x55);
???writeflash(0x5555,0x10);
???t=60;
???SetTimer(hwnd,1,1000,0);
???char bufferxx[50];
???_gcvt(t, 20, bufferxx );
???SetDlgItemText(hwnd,IDC_EDIT2,bufferxx);
???break;
??case (WRITE):
???DWORD readdata;
???GetDlgItemText(hwnd,IDC_EDIT4,c_filename,260);
???hfile2=CreateFile(c_filename, GENERIC_WRITE|GENERIC_READ ,FILE_SHARE_READ|FILE_SHARE_WRITE ,0,OPEN_ALWAYS,0,0);
???for(i=0;i<2048;i++)
???{
????ReadFile(hfile2,&readdata,1,&num,0);
????writeflash(0x5555,0xaa);
????writeflash(0x2aaa,0x55);
????writeflash(0x5555,0xa0);
????writeflash(i,readdata);
????Sleep(1);
???}?
???CloseHandle(hfile2);
???SetDlgItemText(hwnd,IDC_EDIT1,"writeok");?
???break;
??case (R):
???openfilename.lStructSize=sizeof(openfilename);
???openfilename.hwndOwner=hwnd;
???openfilename.hInstance=hInst;
???openfilename.lpstrFilter="all file\0*.*\0\0";
???openfilename.lpstrFile=c_path_recive;
???openfilename.nMaxFile=260;
???openfilename.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY ;
???openfilename.lpstrTitle="recive";
???GetOpenFileName(&openfilename);
???SetDlgItemText(hwnd,IDC_EDIT3,c_path_recive);
???break;
??case (S):
???openfilename2.lStructSize=sizeof(openfilename2);
???openfilename2.hwndOwner=hwnd;
???openfilename2.hInstance=hInst;
???openfilename2.lpstrFilter="all file\0*.*\0\0";
???openfilename2.lpstrFile=c_path_send;
???openfilename2.nMaxFile=260;
???openfilename2.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY ;
???openfilename2.lpstrTitle="recive";
???GetOpenFileName(&openfilename2);
???SetDlgItemText(hwnd,IDC_EDIT4,c_path_send);
???break;
???
??}
??break;
??case WM_TIMER:
???switch (wParam)
???{
???case 1:
????t--;
????if(t<0)KillTimer(hwnd,1);
????char bufferxx[50];
????_gcvt(t, 20, bufferxx );
????SetDlgItemText(hwnd,IDC_EDIT2,bufferxx);
????break;
???}
???break;
???case WM_CLOSE:
????EndDialog( hwnd,NULL) ;
????break;
?}
?return 0;
}

?

int? APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR? lpCmdLine,int? nCmdShow)

{?hInst=hInstance;
?InstallWinIoDriver("winio.dll",0);
?if(InitializeWinIo()==0)MessageBox(0,"winio初始化失敗","0",0);
?DialogBoxParam(hInstance, MAKEINTRESOURCE (IDD_DIALOG1),0, (DLGPROC) WndProc,NULL);
?return 0;
}

?

?

DWORD readflash(int addr)
{
?//低位地址
?ADDRL=addr;
?ADDRH=addr>>8;
?tmp=((ADDRH&0x1)<<12)+((ADDRH&0x2)<<14)+((ADDRH&0x4)<<9);
?buf32=0x00080600+ADDRL+tmp;
?SetPortVal(add_add, buf32, 4);
?buf32=buf32-0x200;
?SetPortVal(add_add, buf32, 4);
?//高位地址
?ADDRL=addr>>11;
?ADDRH=addr>>19;
?tmp=((ADDRH&0x1)<<12)+((ADDRH&0x2)<<14)+((ADDRH&0x4)<<9);
?buf32=0x00080400+ADDRL+tmp;
?SetPortVal(add_add, buf32, 4);
?buf32=buf32+0x200;
?SetPortVal(add_add, buf32, 4);
?//讀取------------
?buf32=0x00000600;
?SetPortVal(add_add, buf32, 4);
?DWORD data;
?GetPortVal(add_data, &data, 1);
?
?buf32=0x00080600;
?SetPortVal(add_add, buf32, 4);
?return data;
}


void writeflash(int addr,UCHAR data)
{
?DWORD data_y=data<<24;
?//低位地址
?ADDRL=addr;
?ADDRH=addr>>8;
?tmp=((ADDRH&0x1)<<12)+((ADDRH&0x2)<<14)+((ADDRH&0x4)<<9);
?buf32=0x00080600+ADDRL+tmp+data_y;
?SetPortVal(add_add, buf32, 4);
?buf32=buf32-0x200;
?SetPortVal(add_add, buf32, 4);
?//高位地址
?ADDRL=addr>>11;
?ADDRH=addr>>19;
?tmp=((ADDRH&0x1)<<12)+((ADDRH&0x2)<<14)+((ADDRH&0x4)<<9);
?buf32=0x00080400+ADDRL+tmp+data_y;
?SetPortVal(add_add, buf32, 4);
?buf32=buf32+0x200;
?SetPortVal(add_add, buf32, 4);
?//寫入------------
?buf32=buf32-0x400;
?SetPortVal(add_add, buf32, 4);
?buf32=buf32+0x400;
?SetPortVal(add_add, buf32, 4);
?/*
?//if((ADDRL%64)==0x5)
?{
?for(ii=0;ii<32;ii++)
?{
?
?? if((buf32&(1<<ii))>>ii==1)buf[ii]='1';
?? else buf[ii]='0';
??
??}
??
??? buf[32]=0;
??? MessageBox(0,buf,0,0);
??? }
?*/
}

總結

以上是生活随笔為你收集整理的用rtl8139网卡制作的bios编程器(不用并口)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产高清精品一区二区三区 | 乳罩脱了喂男人吃奶视频 | 中文字幕在线观看二区 | 国产黄色特级片 | 国产 日韩 欧美 精品 | 波多野结衣电影免费观看 | 伊人亚洲天堂 | 激情av一区 | 国产农村妇女精品久久久 | 欧美色亚洲 | 黄色一级大片在线免费看国产 | 日本黄色一区 | 欧美精品第一页 | 国产成人精品久久久 | 国产欧美日韩成人 | 东京热加勒比无码少妇 | 美女在线不卡 | 亚洲一区精品在线 | 国产在线欧美在线 | 欧美色综合网站 | 又粗又大又硬又长又爽 | www成年人| 日韩欧美一区二区三区在线观看 | 韩国色网 | 男人喷出精子视频 | 电车痴汉在线观看 | 欧美区二区三区 | 国产一级二级三级视频 | 欧美性xxxxxx| 青娱乐极品视频在线 | 国产成人精品一区二区三区无码熬 | 成年人视频免费在线观看 | 免费在线看黄视频 | 米奇av | 污污网址在线观看 | 欧洲成人在线视频 | 四虎影视免费永久观看在线 | 国产精品com | 福利小视频在线 | 亚洲av无码成人精品区 | 精品视频一二三区 | 热99| 99久久99久久免费精品蜜臀 | 久久国产人妻一区二区免色戒电影 | 精品久久久久久久久久久aⅴ | 香蕉视频污在线观看 | 美女狠狠干| 五月婷婷丁香激情 | 亚州精品国产精品乱码不99按摩 | 午夜影院男女 | 免费无遮挡无码永久在线观看视频 | 亚洲精品www久久久 一级aaa毛片 | 豆花视频在线播放 | 中出在线| 美女调教视频 | 亚洲男人天堂2018 | 欧美另类精品xxxx孕妇 | 国自产拍偷拍精品啪啪一区二区 | 国产综合亚洲精品一区二 | 87福利视频 | 国产精品国产一区 | 精品国产乱码久久久人妻 | 福利毛片 | 99热这里只有精品99 | 性——交——性——乱免费的 | 色av导航| 精久久久久久 | 国产精品电影一区 | 免费毛片小视频 | 国产一区二区三区欧美 | 边啃奶头边躁狠狠躁 | 老女人黄色片 | 国产aaa毛片 | 欧美性猛交乱大交3 | 日本欧美一区二区 | 国产日韩视频在线 | 黄色福利片| 在线免费你懂的 | 佐佐木明希电影 | 国产亚洲一区二区三区四区 | 日韩欧美视频一区二区三区 | 午夜日韩在线观看 | 伊人久久久久久久久久久久久 | 国产一二三视频 | 成熟女人毛片www免费版在线 | 免费黄色小说视频 | 韩日中文字幕 | 色网在线视频 | 黄色片日韩 | 欧美日韩在线观看一区 | 国产xxxx视频 | 欧美日韩国产三区 | 99婷婷 | 免费在线不卡视频 | 99er在线 | 欧美乱人伦 | 亚洲精品偷拍 | 色婷婷热久久 | 国产午夜视频在线播放 |