zoukankan      html  css  js  c++  java
  • 使用Mmap系统调用进行硬件地址访问

    Mmap系统调用:

    Mmap函数是内存映射函数,负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改,来实现堆文件的读取和修改,而不需要再调用readwrite等操作。

    原型如下:

     

    其参数含义如下:

     

    有映射函数就有解除映射函数,munmap就是解除映射的函数:

     

     注意:直接映射过来的区间虽然用字符型形式表示,但是不一定包含‘’,所以使用字符型拷贝函数的时候要慎重。最好用内存拷贝函数。

    Mmap设备操作:

     

     

       而mmap设备操作时如何建立页表的呢?主要有以下几种方法:

     

     

       Remap_pfn_range函数的原型及参数如下:

     

     

     

     

    所以mmappoll设备方法一样,实现比较单一,大部分的活都被linux做了,一次标准的调用如下:

     

     

    申请io内存:

    存在着内存空间和io空间的概念:

     

            他们的关系如下图所示:

     

          由此可以引出io端口和io内存的概念:

     

     

     由于io空间是x86的概念,arm实际上只有内存空间,所以这里不记载io端口的使用方法。

         使用io内存4

    1. 申请:

     

     使用方式如下:

     

     

    2. 映射:

     

    使用方法如下:

     

    3. 访问:

     

    4. 释放:

     

     

    混杂设备驱动:

          在linux里,存在一类字符设备,他们共享一个主设备号-10,但次设备号不同,我们称这类设备为混杂设备。这类设备一般都是简单的字符设备,比如LED可以设置为混杂驱动(也可以不设置为混杂驱动)。





  • 相关阅读:
    bzoj 3930: [CQOI2015]选数
    bzoj 2301: [HAOI2011]Problem b
    HDU 1695 GCD
    2017ACM/ICPC广西邀请赛-重现赛 1007.Duizi and Shunzi
    2017ACM/ICPC广西邀请赛-重现赛 1010.Query on A Tree
    2017ACM/ICPC广西邀请赛-重现赛 1004.Covering
    P3501 [POI2010]ANT-Antisymmetry
    P1171 售货员的难题
    P3385 【模板】负环
    P1659 [国家集训队]拉拉队排练
  • 原文地址:https://www.cnblogs.com/dchipnau/p/5010056.html
Copyright © 2011-2022 走看看