免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 980 | 回复: 0
打印 上一主题 下一主题

userdev.c (用户空间驱动程序) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-13 16:00 |只看该作者 |倒序浏览

#include stdio.h>
#include stdlib.h>
#include fcntl.h>
#include unistd.h>
#include string.h>
#include sys/time.h>/*settimeofday,gettimeofday,tm time_t结构体*/
#include linux/kd.h>
#include memory.h>
#include sys/ioctl.h>
#include sys/mman.h>
void Sleep(int iSec,int    iUSec)  
{  
    struct timeval    tv;
    tv.tv_sec =    iSec;
    tv.tv_usec = iUSec;
    select(0,NULL,NULL,NULL,&tv);
}
int main()
{
    int fd_mem, i;
    unsigned int map_base;
    if ((fd_mem = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
        perror("/dev/mem");
        return 1;
    }
    map_base = (unsigned  int)
        mmap(0, 256 * 12, PROT_READ | PROT_WRITE, MAP_SHARED, fd_mem, 0xfffff000);
    *(volatile unsigned int *)(map_base + 512*2) = 0x18;
    *(volatile unsigned int *)(map_base + 512*2 + 0x10) = 0x18;
    *(volatile unsigned int *)(map_base + 512*2 + 0x30) = 0x18;
    *(volatile unsigned int *)(map_base + 512*3) = 0x129;
    *(volatile unsigned int *)(map_base + 512*3 + 0x10) = 0x129;
    *(volatile unsigned int *)(map_base + 512*3 + 0x30) = 0x129;
    for(i=0;i5;i++) {
        *(volatile unsigned int *)(map_base + 512*2 + 0x30) = 0x18;
        *(volatile unsigned int *)(map_base + 512*3 + 0x30) = 0x129;
        printf("PB8 eable=%x out status=%x %x\n",
                *(volatile unsigned int *)(map_base + 512*3 + 0x08),
                *(volatile unsigned int *)(map_base + 512*3 + 0x18),
                *(volatile unsigned int *)(map_base + 512*3 + 0x38));
        Sleep(0,500000);
        *(volatile unsigned int *)(map_base + 512*2 + 0x34) = 0x18;
        *(volatile unsigned int *)(map_base + 512*3 + 0x34) = 0x129;
        printf("PB8 eable=%x out status=%x %x\n",
                *(volatile unsigned int *)(map_base + 512*3 + 0x08),
                *(volatile unsigned int *)(map_base + 512*3 + 0x18),
                *(volatile unsigned int *)(map_base + 512*3 + 0x38));
        Sleep(0,500000);
    }
    close(fd_mem);
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43090/showart_2069482.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP