⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_test.c

📁 这是一个基于S3C2440 的VGA 驱动程序, 其中fc.c 是驱动程序,fc_test.c 是测试代码. 这是一个在LINUX frame buffer基础上利用 DMA 实现的高效驱动, 绝
💻 C
📖 第 1 页 / 共 5 页
字号:
}void PaintBi_ValueBitmap(unsigned char* pp,int x,int y,int width,int high,int color0,int color1){    int i,j,k,l;    unsigned char tmp;    for(j=0;j<high;j++)    {        for(i=0;i<width/8;i++)        {            k=*(pp+j*width/8+i);            tmp=0x80;            for(l=0;l<8;l++)            {                if(l>0)                    tmp=tmp>>1;                if(((tmp&k)&0xff)!=0)                {                    DrawPoint(i*8+l+x,j+y,color1);                }                else                {                    DrawPoint(i*8+l+x,j+y,color0);                }            }        }    }}void Paint_Screen(unsigned char *pp,int x,int y){    PaintBitmap(pp,x,y,SCRWIDE,SCRHIGH);}void Display_a_digit24(unsigned int x,unsigned int y,char digit,int color,int bcolor){    int buf,bpos,i,j,tmp=0x80;    int tx,ty;    bpos=digit*48;    tx=x;    ty=y;    for(i=0;i<24;i++)    {        buf=digitfont24x16[2*i+bpos];        for(j=0;j<8;j++)        {            if(tmp&buf)             {                DrawPoint(tx,ty,color);            }            else            {                DrawPoint(tx,ty,bcolor);            }            tx++;            tmp=tmp>>1;        }        tmp=0x80;        buf=digitfont24x16[2*i+bpos+1];        for(j=0;j<8;j++)        {            if(tmp&buf)             {                DrawPoint(tx,ty,color);            }            else            {                DrawPoint(tx,ty,bcolor);            }            tx++;            tmp=tmp>>1;        }        tx=x;         ty++;        tmp=0x80;    }}void Display_a_number24(unsigned int x,unsigned int y,char length,int number,int color,int bcolor){    int buf;    int l=length;    int px=x,py=y;    int num;    if(length==1)     {        buf=10;    }    else if(length==2)    {        buf=100;    }    else if(length==3)    {        buf=1000;    }    else if(length==4)    {        buf=10000;    }    else if(length==5)    {        buf=100000;    }    else     {        printf("Too large to show!\n");        return;    }    number%=buf;    buf/=10;    num=number;    while(((number/buf)==0)&&(l>0)&&(buf>1))    {        buf/=10;        l--;        px+=16;    }    while(l>0)    {        Display_a_digit24(px,py,num/buf,color,bcolor);        l--;        px+=16;        num%=buf;        buf/=10;    }}void Display_a_star24(unsigned int x,unsigned int y,int color,int bcolor){    int buf,i,j,tmp=0x80;    int tx,ty;    tx=x;    ty=y;    for(i=0;i<24;i++)    {        buf=star24[2*i];        for(j=0;j<8;j++)        {            if(tmp&buf)             {                DrawPoint(tx,ty,color);            }            else            {                DrawPoint(tx,ty,bcolor);            }            tx++;            tmp=tmp>>1;        }        tmp=0x80;        buf=star24[2*i+1];        for(j=0;j<8;j++)        {            if(tmp&buf)             {                DrawPoint(tx,ty,color);            }            else            {                DrawPoint(tx,ty,bcolor);            }            tx++;            tmp=tmp>>1;        }        tx=x;         ty++;        tmp=0x80;    }}//------------------------------------------------------//      Load Shuttle driver//------------------------------------------------------unsigned char Load_FM_Driver(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in FM load");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Load FM driver_fm_test\n");        execl("/sbin/insmod","insmod","/usr/kb/fm.ko",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Make Shuttle DEV file//------------------------------------------------------unsigned char Make_FM_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in FM_fm_test make");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("make FM file_fm_test\n");        execl("/bin/mknod","mknod","/dev/fm","c","251","0",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove FM DEV file//------------------------------------------------------unsigned char Remove_FM_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in FM remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove FM file_fm_test_fm_test\n");        execl("/sbin/rmmod","rmmod","fm",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove FM  file//------------------------------------------------------unsigned char Remove_FM_File(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in FM remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove FM file_fm_test\n");        execl("/bin/rm","rm","/dev/fm",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Load MLG driver//------------------------------------------------------unsigned char Load_MLG_Driver(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in MLG load");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Load MLG driver_MLG_test\n");        execl("/sbin/insmod","insmod","/usr/kb/mlg.ko",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Make MLG DEV file//------------------------------------------------------unsigned char Make_MLG_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in MLG_test make");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("make MLG file_MLG_test\n");        execl("/bin/mknod","mknod","/dev/mlg","c","250","0",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove MLG DEV file//------------------------------------------------------unsigned char Remove_MLG_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in MLG remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove MLG file_MLG_test_MLG_test\n");        execl("/sbin/rmmod","rmmod","mlg",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove MLG  file//------------------------------------------------------unsigned char Remove_MLG_File(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in MLG remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove MLG file_fm_test\n");        execl("/bin/rm","rm","/dev/mlg",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Load Keyboard driver//------------------------------------------------------unsigned char Load_Keyboard_Driver(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in LCD load");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Load Keyboard driver_fm_test\n");        execl("/sbin/insmod","insmod","/usr/kb/Keyboard.ko",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Make Keyboard DEV file//------------------------------------------------------unsigned char Make_Keyboard_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in Keyboard make");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("make Keyboard file_fm_test\n");        execl("/bin/mknod","mknod","/dev/Keyboard","c","252","0",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove Keyboard DEV file//------------------------------------------------------unsigned char Remove_Keyboard_DevFile(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in Keyboard remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove Keyboard file_fm_test\n");        execl("/sbin/rmmod","rmmod","Keyboard",NULL);        return 1;
        exit(1);
    }        return 1;}//------------------------------------------------------//      Remove Keyboard  file//------------------------------------------------------unsigned char Remove_Keyboard_File(){    pid_t pid;    if((pid=vfork())<0)
    {
        perror("Vfork error in Keyboard remove");        return 0;
        exit(1);
    }
    else if (pid==0)
    {
        printf("Remove Keyboard_fm_test file\n");        execl("/bin/rm","rm","/dev/Keyboard",NULL);        return 1;
        exit(1);
    }        return 1;}void Goto_Node(int index){    Current_Node=index;}void Para_Setup(){    int i,ret,pi,inx;    int fd;    int status;    unsigned char KBCbuf[10];    printf("parameters setup\n");    close(fk);    close(fmd);    close(fl);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -