zoukankan      html  css  js  c++  java
  • 应用程序直接访问硬件

    linux下,所有地址均为虚拟地址,需要由物理地址映射(ioremap或mmap)。

    //***************************************************************************************************
    #include <stdio.h>
    #include <sys/mman.h>
    #include <fcntl.h>

    //#define UTXH (*(volatile unsigned int *)0xE2900020)

    int main()
    {
        volatile unsigned int *vmem = NULL;
        int uart = 0xE2900000; // offset = 0x20
        int fd;

        ///dev/mem设备文件是CPU的4G物理地址空间
        fd = open("/dev/mem", O_RDWR);
        if(fd < 0)
        {
            perror("open error:");
            return -1;
        }

        vmem = mmap(NULL, 1, PROT_READ|PROT_WRITE, MAP_SHARED, fd, uart);
        if(vmem == NULL)
        {
            perror("mmap error:");
            return -1;
        }

        while(1)
        {
            *(vmem + 0x20/4) = 'a'; //偏移0x20个字节
        }

        munmap((void *)vmem, 1);
        close(fd);

        return 0;
    }

  • 相关阅读:
    python ratelimit使用
    团队怎样去做技术规划
    分词语义提取工具
    今日头条推荐系统
    要选择做有价值的事情
    总结与规划
    性能使用到极限
    流量运营
    Stanford CoreNLP使用需要注意的一点
    七年总结
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/6107890.html
Copyright © 2011-2022 走看看