请问如何读取笔记本电脑中的eeprom内容

机智的大熊 2014-10-28 11:30:41
大神指点下大致的方法就好,代码我自己写。网上搜索了下很多都是关于直接读取单片机的eeprom,我现在想在DOS或者window环境下编译程式去读取eeprom(bank0~bank7)里面的值。
...全文
381 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_34016878 2016-02-19
  • 打赏
  • 举报
回复
把这段代码在win-tc里编译链接后提示的waitOBF ,waitIBE, loading ,clear_buffer, cursor, drawing_frame,loading_write 在这些模块里都是未定的符号......哪位大哥能指点一下呀??谢谢
机智的大熊 2014-11-19
  • 打赏
  • 举报
回复

/********************************************************************************************/
loopkey:        
        key=bioskey(0);
        if(key==KEY_ALT_X)
        {
                         window(1,1,80,25);
                        textbackground(0);
                                textcolor(15);
                                        clrscr();
                gotoxy(1,1);
                        cprintf("Bye Bye!!");
                exit(0);
        }
        if(key==KEY_TAB &&( key0==0 || key00==1))
        {
                key00=0;
                key0=1;
                bank++;
                bank=bank%8;
                goto loop;
        }
        if(key==KEY_SHIFT_TAB)
        {
                        bank--;
                        bank=(bank+8)%8;
                        goto loop;
        }
        if(key==KEY_B)
        {               gettext(1,1,80,25,windowbuff);
                        gettext(68,5,79,15,bankbuff);
                        window(69,5,78,15);
        loopbankbuff:   textbackground(4);
                        clrscr();
                        Drawing_Frame(1,1,10,11);

                        gotoxy(3,2);
                            cprintf("Bank 0");
                        gotoxy(3,3);
                            cprintf("Bank 1");
                        gotoxy(3,4);
                            cprintf("Bank 2");
                        gotoxy(3,5);
                            cprintf("Bank 3");
                        gotoxy(3,6);
                            cprintf("Bank 4");
                        gotoxy(3,7);
                            cprintf("Bank 5");
                        gotoxy(3,8);
                            cprintf("Bank 6");
                        gotoxy(3,9);
                            cprintf("Bank 7");

                            gotoxy(3,2+bank);
                                textbackground(2);
                                    cprintf("Bank %d",bank);
                                        textbackground(4);


                        key=bioskey(0);
                            if(key==KEY_DOWN)
                            {
                                bank++;
                                bank=bank%8;
                                goto loopbankbuff;
                            }
                            if(key==KEY_UP)
                            {
                                bank--;
                                bank=(bank+8)%8;
                                goto loopbankbuff;
                            }
                            if(key==KEY_ESC)
                            {
                                puttext(68,5,79,15,bankbuff);
                                window(1,1,80,25);
                                puttext(1,1,80,25,windowbuff);
                            }
                            if(key==KEY_ENTER)
                            {
                                puttext(68,5,79,15,bankbuff);
                                window(1,1,80,25);
                                puttext(1,1,80,25,windowbuff);
                                goto loop;
                            }
        }
        if(key==KEY_R)
        {
            goto loop;
        }
        if(key==KEY_S)
        {
            cursor(1);
            gettext(1,1,80,25,windowbuff1);
            gotoxy(40,2);
            textbackground(2);
            cprintf("File name:              ");
            gotoxy(50,2);
            i=0;
            key=bioskey(0);
               scanf("%s",str);
            strcat(str,".txt");
            textbackground(1);
            fp=fopen(str,"wt+");
            m=0;
            for(j=0;j<=7;j++)
            {
                for(i=0; i<256; i++)
                    {
                        loading_write(57,22,22,256*8,m++);
                        WaitIBE();
                                outportb(port2,0x42);
                        WaitIBE();
                                outportb(port1,j);
                        WaitIBE();
                                outportb(port2,0x4E);
                        WaitIBE();
                                outportb(port1,i);
                        WaitOBF();
                                eeprom[i][j]=inportb(port1);
                    }
            }
            for(j=0;j<=7;j++)
            {
                fprintf(fp,"Bank %d\n***********************************************\n",j);
                for(i=0;i<256;i++)
                {
                   fprintf(fp,"%02X ",eeprom[i][j]);
                   if((i+1)%16==0)
                        fprintf(fp,"\n");
                }
                fprintf(fp,"\n\n\n");
            }


            for(j=0;j<=7;j++)
            {
                fprintf(fp,"Bank %d\n***********************\n",j);
                for(i=0;i<256;i++)
                {
                   fprintf(fp,"%c",eeprom[i][j]);
                   if((i+1)%16==0)
                        fprintf(fp,"\n");
                }
                fprintf(fp,"\n\n\n");
            }
            fclose(fp);
            puttext(1,1,80,25,windowbuff1);
            cursor(0);
        }
机智的大熊 2014-11-19
  • 打赏
  • 举报
回复

/********************************************************************************************/     
  loop:

        gotoxy(3,2);
            textbackground(1);
                cprintf("Current Bank:[%d]                                                           ",bank);
       /*清空eeprom輸出區域*/
       textbackground(1);
       textcolor(15);
        x=2;
        y=5;
        for(i=0;i<256;i++)
        {
                gotoxy(x+=3,y);
                        cprintf("  ");
                if((i+1)%16==0)
                {
                        y++;
                        x=2;
                }
        }
        
       x=54;
       y=5;
       for(i=0;i<256;i++)
        {
                gotoxy(++x,y);
                        cprintf(".");
                if((i+1)%16==0)
                {
                                    y++;
                        x=54;
                }
        }
                cursor(0);

    clear_buffer();

                    for(i=0; i<256; i++)
                    {
                        
                        key0=bioskey(1);

                        loading(57,22,22,256,i+1);
                        WaitIBE();
                                outportb(port2,0x42);
                        WaitIBE();
                                outportb(port1,bank);
                        WaitIBE();
                                outportb(port2,0x4E);
                        WaitIBE();
                                outportb(port1,i);
                        WaitOBF();
                                eeprom[i][bank]=inportb(port1);
                  /*   eeprom[i][bank]=i;   */
                     
                        gotoxy(17,2);                           
                            cprintf("%d",bank);
                    }
                    key00=1;



      /*輸出eeprom數據*/
        x=2;
        y=5;
        for(i=0;i<256;i++)
        {
                gotoxy(x+=3,y);
                        cprintf("%02X",eeprom[i][bank]);
                if((i+1)%16==0)
                {
                        y++;
                        x=2;
                }
        }
        
       x=54;
       y=5;
       for(i=0;i<256;i++)
        {
                gotoxy(++x,y);
                        if(eeprom[i][bank]==0x20 || eeprom[i][bank]==0x00 )
                            cprintf(".");
                        else
                            cprintf("%c",eeprom[i][bank]);
                if((i+1)%16==0)
                {                                               
                                    y++;
                        x=54;
                }
        }
                cursor(0);
机智的大熊 2014-11-19
  • 打赏
  • 举报
回复
已经完成在DOS下读取Eeprom了,不过还是要谢谢老师。该程序是在Win-tc下编译,只能在部分机器中正确读取Eeprom,Eeprom挂在EC bank0~bank7下面的都可以,其中很多内容是DOS界面的修饰,以及一切用户功能的实现。



#define port1 0x62
#define port2 0x66
#define KEY_TAB 0x0f09
#define KEY_SHIFT_TAB  0xf00
#define KEY_UP 0x4800    
#define KEY_DOWN 0x5000
#define KEY_LEFT 0x4b00
#define KEY_RIGHT 0x4d00
#define KEY_E 0x1265
#define KEY_ALT_X 0x2d00
#define KEY_ESC 0x11b
#define KEY_PGUP 0X4900
#define KEY_PGDOWN 0X5100
#define KEY_F3 0X3D00
#define KEY_SPACE 0X3920
#define KEY_B 0X3062
#define KEY_ENTER 0X1c0d
#define KEY_R 0X1372
#define KEY_S 0X1f73

#include<stdio.h>
#include<conio.h>
#include<dos.h>
void main()

{
        void WaitIBE(void);
        void WaitOBF(void);
        void clear_buffer(void);
        void reading_print(int bank);
        void Drawing_Frame0(int start_x,int start_y,int end_x,int end_y);
        void Drawing_Frame(int start_x,int start_y,int end_x,int end_y);
        void Drawing_Frame1(int start_x,int start_y,int end_x,int end_y,int y1,int y2);
        void loading(int x,int y,int len,int max,int z);
        void move_cursor(int window_start_x,int window_start_y,int window_end_x,int window_end_y,int Continuous_length,int DisContinuous_length,int key);
        void cursor(int i);
        void auto_move_cursor(int window_start_x,int window_start_y,int window_end_x,int window_end_y,int Continuous_length,int DisContinuous_length);
        char ASCI_16(char a);
        void loading_write(int x,int y,int len,int max,int z);

        int i,j,x,y,x1,y1,bank=0,key,keyascii,keyF3_Num=0,key0,key00=0;
        int key_pass,data;
        long m;
        char *eeprom[256][8],*eepromModify[256][8];
        char bankbuff[20*10*2],file_name[15];
        char *str='\0',*str1=".txt";
        char windowbuff[80*25*2],windowbuff1[80*25*2];
        FILE *fp;
        window(1,1,80,25);
        textbackground(1);
            textcolor(15);
                clrscr();
                                Drawing_Frame1(1,1,80,24,3,21);
        gotoxy(3,2);
            cprintf("Current Bank:[%d]                                          ",bank);
        gotoxy(3,22);
            textcolor(14);
                cprintf("[Alt+X]:Exit [ESC]:Cancel  Shift+[Tab]:switch");
                    textcolor(15);
        gotoxy(3,23);
            textcolor(14);
                cprintf("[E]:Edit  [R]:Refresh [B]:Bank Menu [S]:Save [L]:Load");
                    textcolor(15);
        gotoxy(1,25);
            textbackground(4);
                for(i=1;i<80;i++)
                    cprintf(" ");
                     textbackground(1);
        gotoxy(3,25);
            textbackground(4);
                cprintf("Eeprom R/W tool  v1.0  %c  2014/11/04  %c  Created by CIC BIOS Team",179,179,179,179);
                    textbackground(1);

        x=2;
        y=4;
           for(i=0;i<=0x0f;i++)
        {
            gotoxy(x+=3,y);
            textcolor(11);
            cprintf("%02X ",i);
            textcolor(15);
        }


        x=2;
        y=5;
        for(i=0;i<=0xff;i++)
        {
            if(i%16==0)
            {
                    gotoxy(x,y++);
                    textcolor(11);
                    cprintf("%02X ",i);
                    textcolor(15);
            }
        }

        x=53;
        y=4;
        for(i=0;i<=16;i++)
        {
            gotoxy(x,y++);
            textcolor(9);
            putchar(0xb3);
            textcolor(15);
        }
赵4老师 2014-10-29
  • 打赏
  • 举报
回复
在Windows下的读写eeprom的工具软件肯定是通过特定的底层驱动(安装开发包时安装相应底层驱动(可能性较大)或Windows自带(可能性较小))读写的。
机智的大熊 2014-10-29
  • 打赏
  • 举报
回复
现在不是用不用winIo的问题,问题是如何去读取。好比cmos是通过port70/71加offset去读取,那么eeprom呢?
mujiok2003 2014-10-28
  • 打赏
  • 举报
回复
被操作系统保护起来了,不能直接操作吧
机智的大熊 2014-10-28
  • 打赏
  • 举报
回复
现在的困境在于无从下手,不知道怎么去读取电脑的eeprom
赵4老师 2014-10-28
  • 打赏
  • 举报
回复
使用WinIO.sys ?
机智的大熊 2014-10-28
  • 打赏
  • 举报
回复
编译的执行档在DOS执行的话是不受系统保护的,可以读取。就是开机按功能键进bios,再进dos优盘,然后执行exe可以避开window读取数据的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧